mirror of
https://github.com/abapGit/abapGit.git
synced 2025-05-02 21:08:01 +08:00
181 lines
5.6 KiB
ABAP
181 lines
5.6 KiB
ABAP
CLASS ltcl_git_transport DEFINITION DEFERRED.
|
|
CLASS zcl_abapgit_git_transport DEFINITION LOCAL FRIENDS ltcl_git_transport.
|
|
|
|
CLASS ltcl_git_transport DEFINITION FOR TESTING RISK LEVEL HARMLESS DURATION SHORT FINAL.
|
|
|
|
PRIVATE SECTION.
|
|
METHODS:
|
|
all_ok FOR TESTING RAISING cx_static_check,
|
|
unpack_error FOR TESTING RAISING cx_static_check,
|
|
command_error FOR TESTING RAISING cx_static_check,
|
|
flush_error FOR TESTING RAISING cx_static_check,
|
|
parse FOR TESTING RAISING cx_static_check,
|
|
gitlab_flush_all_ok FOR TESTING RAISING cx_static_check.
|
|
|
|
ENDCLASS.
|
|
|
|
CLASS ltcl_git_transport IMPLEMENTATION.
|
|
|
|
METHOD parse.
|
|
|
|
DATA lv_data TYPE xstring.
|
|
DATA lv_pack TYPE xstring.
|
|
|
|
lv_data = '303033347368616C6C6F77206639656332336436'
|
|
&& '6439333561613764633236656531343163376234'
|
|
&& '3666656564396434363835653030303030303038'
|
|
&& '4E414B0A30323564015041434B00000002000000'
|
|
&& '059E0C789C958BC109C3300C00FF9EC2FF428965'
|
|
&& '59B2A194AE22273209244D70D4FD1BE804BDCFC1'
|
|
&& 'C15957F543454488A47168A9317023168446B932'
|
|
&& 'C53171014E44EA0EE9FA361F529BA4D594558443'
|
|
&& '4C5827E0C20C5090545498931664271F9BF7EE57'
|
|
&& 'E9E77CF8C7CFAF79B74D96F53EEEDBD307CC9902'
|
|
&& '9610FC6DB87057DD1633FD7373A6A77D0161323D'
|
|
&& '31A307789C33343030333151D04B4C4A2C48CF2C'
|
|
&& 'D1ABC8CD61A85FBB4172EFBBF6E6BC39974DD41E'
|
|
&& 'BFEE08889FB0DA10A22EC8D5D1C5D7552F378561'
|
|
&& 'F3E315727BDDAF7059C5DEE7EFF415E369E4D2EF'
|
|
&& '842A4ACBCF4F4A2CD22BA928617877E244D7E46F'
|
|
&& 'EF44457F377B7C3AA874FE9633D35900D7032E45'
|
|
&& 'B31E789C6D91D16A83301486EF7D8AE0FD92ED6E'
|
|
&& '484C093515C1EA5007BB93D45A974D8D9854DDB3'
|
|
&& 'ED628FB45798D5C26CF1EEFCFFF7710827BFDF3F'
|
|
&& '78335425E8F2560959DBE6137C34415E67F228EA'
|
|
&& 'C236CFFAF4F06C6E8881B91A2C7EE00D18F55A59'
|
|
&& '63B4CD77AD1B0BA1BEEFA1E20DCC64852ECA6898'
|
|
&& 'B71B8901A6051D2FCFB91A13C00E4DE86500784F'
|
|
&& 'E38445A94F03F795BA8C308CEEABC98B131A255E'
|
|
&& 'E0A6BBD07758441046F7D5E4CD73EA87AEB7252F'
|
|
&& '11DB796F18DD9493E6B94118CDAB01163AAF0882'
|
|
&& '85D0A2A8659B6334354BE87B5B16C46C85448C3A'
|
|
&& '7B06ABE30A6B78F6C98B1C7E2859AF60A85BDE09'
|
|
&& '05BFAA72859EA43CF016EA412F2046FF2FC7E87A'
|
|
&& '468C96E79DD3E52B88F10759BF90313D789C5356'
|
|
&& '70CD2D28A9E42A492D2EE102001BCB042734789C'
|
|
&& 'CBCDCFE7020003ED0156C43280EA381436A38EE5'
|
|
&& 'E78491FF99CEAAC43A30303036017530303030'.
|
|
|
|
zcl_abapgit_git_transport=>parse(
|
|
IMPORTING
|
|
ev_pack = lv_pack
|
|
CHANGING
|
|
cv_data = lv_data ).
|
|
|
|
cl_abap_unit_assert=>assert_equals(
|
|
act = xstrlen( lv_data )
|
|
exp = 0 ).
|
|
|
|
cl_abap_unit_assert=>assert_equals(
|
|
act = xstrlen( lv_pack )
|
|
exp = 601 ).
|
|
|
|
ENDMETHOD.
|
|
|
|
METHOD all_ok.
|
|
|
|
DATA lv_status TYPE string.
|
|
|
|
lv_status = `000eunpack ok` &&
|
|
cl_abap_char_utilities=>newline &&
|
|
`0017ok refs/heads/main` &&
|
|
cl_abap_char_utilities=>newline &&
|
|
`00000000`.
|
|
TRY.
|
|
zcl_abapgit_git_transport=>check_report_status( lv_status ).
|
|
CATCH zcx_abapgit_exception.
|
|
cl_abap_unit_assert=>fail( ).
|
|
ENDTRY.
|
|
|
|
ENDMETHOD.
|
|
|
|
METHOD unpack_error.
|
|
|
|
DATA lv_status TYPE string.
|
|
DATA lx_error TYPE REF TO zcx_abapgit_exception.
|
|
|
|
lv_status = `0012unpack failed` &&
|
|
cl_abap_char_utilities=>newline &&
|
|
`00000000`.
|
|
|
|
TRY.
|
|
zcl_abapgit_git_transport=>check_report_status( lv_status ).
|
|
|
|
cl_abap_unit_assert=>fail( ).
|
|
CATCH zcx_abapgit_exception INTO lx_error.
|
|
cl_abap_unit_assert=>assert_equals(
|
|
act = lx_error->get_text( )
|
|
exp = 'Git protocol error: Unpack not ok (failed)' ).
|
|
ENDTRY.
|
|
|
|
ENDMETHOD.
|
|
|
|
METHOD command_error.
|
|
|
|
DATA lv_status TYPE string.
|
|
DATA lx_error TYPE REF TO zcx_abapgit_exception.
|
|
|
|
lv_status = `000eunpack ok` &&
|
|
cl_abap_char_utilities=>newline &&
|
|
`009fng refs/heads/main cannot lock ref 'refs/heads/main':` &&
|
|
` is at 625990aec9a9ebacbb99021804ce07bb6c350d05 but expected 77d2cfba9595de4c247d26b12cd40ce6cb75d61e` &&
|
|
cl_abap_char_utilities=>newline &&
|
|
`00000000`.
|
|
|
|
TRY.
|
|
zcl_abapgit_git_transport=>check_report_status( lv_status ).
|
|
|
|
cl_abap_unit_assert=>fail( ).
|
|
CATCH zcx_abapgit_exception INTO lx_error.
|
|
cl_abap_unit_assert=>assert_equals(
|
|
act = lx_error->get_text( )
|
|
exp = 'Git protocol error: Branch cannot be locked' ).
|
|
ENDTRY.
|
|
|
|
ENDMETHOD.
|
|
|
|
METHOD flush_error.
|
|
|
|
DATA lv_status TYPE string.
|
|
DATA lx_error TYPE REF TO zcx_abapgit_exception.
|
|
|
|
lv_status = `000eunpack ok` &&
|
|
cl_abap_char_utilities=>newline &&
|
|
`0017ok refs/heads/main` &&
|
|
cl_abap_char_utilities=>newline &&
|
|
'0020ok refs/heads/main'. " example for more data instead of flush
|
|
|
|
TRY.
|
|
zcl_abapgit_git_transport=>check_report_status( lv_status ).
|
|
|
|
cl_abap_unit_assert=>fail( ).
|
|
CATCH zcx_abapgit_exception INTO lx_error.
|
|
cl_abap_unit_assert=>assert_equals(
|
|
act = lx_error->get_text( )
|
|
exp = 'Git protocol error: Unexpected end of status (flush-pkt)' ).
|
|
ENDTRY.
|
|
|
|
ENDMETHOD.
|
|
|
|
METHOD gitlab_flush_all_ok.
|
|
|
|
" GitLab and Bitbucket use 0000 opposed to GitHub which uses 00000000
|
|
|
|
DATA lv_status TYPE string.
|
|
|
|
lv_status = `000eunpack ok` &&
|
|
cl_abap_char_utilities=>newline &&
|
|
`0019ok refs/heads/master` &&
|
|
cl_abap_char_utilities=>newline &&
|
|
`0000`.
|
|
|
|
TRY.
|
|
zcl_abapgit_git_transport=>check_report_status( lv_status ).
|
|
CATCH zcx_abapgit_exception.
|
|
cl_abap_unit_assert=>fail( ).
|
|
ENDTRY.
|
|
|
|
ENDMETHOD.
|
|
|
|
ENDCLASS.
|