parsing git branch list, throw errors (#4547)

* parsing git branch list, throw errors

closes #4523

* downport

* fix whitespace

* bugfix
This commit is contained in:
Lars Hvam 2021-02-21 16:21:34 +01:00 committed by GitHub
parent add83f5b94
commit b7d6870077
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
2 changed files with 35 additions and 6 deletions

View File

@ -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

View File

@ -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.