From b7d68700770ff726bd20954adbad311f2a4caf73 Mon Sep 17 00:00:00 2001 From: Lars Hvam Date: Sun, 21 Feb 2021 16:21:34 +0100 Subject: [PATCH] parsing git branch list, throw errors (#4547) * parsing git branch list, throw errors closes #4523 * downport * fix whitespace * bugfix --- src/git/zcl_abapgit_git_branch_list.clas.abap | 17 +++++++++---- ...pgit_git_branch_list.clas.testclasses.abap | 24 ++++++++++++++++++- 2 files changed, 35 insertions(+), 6 deletions(-) diff --git a/src/git/zcl_abapgit_git_branch_list.clas.abap b/src/git/zcl_abapgit_git_branch_list.clas.abap index 9f3d53d3f..f3d98272e 100644 --- a/src/git/zcl_abapgit_git_branch_list.clas.abap +++ b/src/git/zcl_abapgit_git_branch_list.clas.abap @@ -65,7 +65,9 @@ CLASS zcl_abapgit_git_branch_list DEFINITION IMPORTING !iv_data TYPE string RETURNING - VALUE(rv_data) TYPE string . + VALUE(rv_data) TYPE string + RAISING + zcx_abapgit_exception . METHODS find_tag_by_name IMPORTING !iv_branch_name TYPE string @@ -90,7 +92,7 @@ ENDCLASS. -CLASS zcl_abapgit_git_branch_list IMPLEMENTATION. +CLASS ZCL_ABAPGIT_GIT_BRANCH_LIST IMPLEMENTATION. METHOD complete_heads_branch_name. @@ -261,7 +263,10 @@ CLASS zcl_abapgit_git_branch_list IMPLEMENTATION. LOOP AT lt_result INTO lv_data. lv_current_row_index = sy-tabix. - IF sy-tabix = 1 AND strlen( lv_data ) > 49. + IF sy-tabix = 1 AND strlen( lv_data ) > 12 AND lv_data(4) = '0000' AND lv_data+8(3) = 'ERR'. + lv_name = lv_data+8. + zcx_abapgit_exception=>raise( lv_name ). + ELSEIF sy-tabix = 1 AND strlen( lv_data ) > 49. lv_hash = lv_data+8. lv_name = lv_data+49. lv_char = zcl_abapgit_git_utils=>get_null( ). @@ -310,8 +315,10 @@ CLASS zcl_abapgit_git_branch_list IMPLEMENTATION. METHOD skip_first_pkt. - DATA: lv_hex TYPE x LENGTH 1, - lv_length TYPE i. + DATA: lv_hex TYPE x LENGTH 1, + lt_strings TYPE STANDARD TABLE OF string WITH DEFAULT KEY, + lv_str TYPE string, + lv_length TYPE i. * channel diff --git a/src/git/zcl_abapgit_git_branch_list.clas.testclasses.abap b/src/git/zcl_abapgit_git_branch_list.clas.testclasses.abap index 86090400f..413583384 100644 --- a/src/git/zcl_abapgit_git_branch_list.clas.testclasses.abap +++ b/src/git/zcl_abapgit_git_branch_list.clas.testclasses.abap @@ -13,7 +13,8 @@ CLASS ltcl_parse DEFINITION FOR TESTING METHODS: test01 FOR TESTING RAISING zcx_abapgit_exception, - test02 FOR TESTING RAISING zcx_abapgit_exception. + test02 FOR TESTING RAISING zcx_abapgit_exception, + test03 FOR TESTING RAISING zcx_abapgit_exception. DATA: mt_data TYPE STANDARD TABLE OF string WITH DEFAULT KEY. @@ -74,4 +75,25 @@ CLASS ltcl_parse IMPLEMENTATION. ENDMETHOD. + METHOD test03. + +* https://github.com/abapGit/abapGit/issues/4523 + + DATA lx_error TYPE REF TO zcx_abapgit_exception. + DATA lv_data TYPE string. + + lv_data = |001e\n service=git-upload-pack\n00000230ERR CAPTCHA required\nYour Bitbucket account etc..|. + APPEND lv_data TO mt_data. + + TRY. + parse( ). + cl_abap_unit_assert=>fail( ). + CATCH zcx_abapgit_exception INTO lx_error. + cl_abap_unit_assert=>assert_char_cp( + act = lx_error->get_text( ) + exp = '*CAPTCHA*' ). + ENDTRY. + + ENDMETHOD. + ENDCLASS.