mirror of
https://github.com/abapGit/abapGit.git
synced 2025-05-01 12:20:51 +08:00
512 lines
13 KiB
ABAP
512 lines
13 KiB
ABAP
DEFINE _append_result.
|
|
APPEND INITIAL LINE TO mt_results ASSIGNING <ls_result>.
|
|
<ls_result>-obj_type = &1.
|
|
<ls_result>-obj_name = &2.
|
|
<ls_result>-match = &3.
|
|
<ls_result>-lstate = &4.
|
|
<ls_result>-rstate = &5.
|
|
<ls_result>-package = &6.
|
|
<ls_result>-path = &7.
|
|
<ls_result>-filename = &8.
|
|
END-OF-DEFINITION.
|
|
|
|
CLASS ltcl_run_checks DEFINITION DEFERRED.
|
|
CLASS zcl_abapgit_file_status DEFINITION LOCAL FRIENDS ltcl_run_checks.
|
|
|
|
CLASS ltcl_run_checks DEFINITION FOR TESTING RISK LEVEL HARMLESS
|
|
DURATION SHORT FINAL.
|
|
|
|
PRIVATE SECTION.
|
|
DATA: mt_results TYPE zif_abapgit_definitions=>ty_results_tt,
|
|
mo_dot TYPE REF TO zcl_abapgit_dot_abapgit,
|
|
mi_log TYPE REF TO zif_abapgit_log.
|
|
|
|
METHODS:
|
|
setup,
|
|
positive FOR TESTING RAISING zcx_abapgit_exception,
|
|
neg_diff_path_for_same_obj FOR TESTING RAISING zcx_abapgit_exception,
|
|
neg_incorrect_path_vs_pack FOR TESTING RAISING zcx_abapgit_exception,
|
|
neg_similar_filenames FOR TESTING RAISING zcx_abapgit_exception,
|
|
neg_empty_filenames FOR TESTING RAISING zcx_abapgit_exception.
|
|
|
|
ENDCLASS.
|
|
|
|
CLASS ltcl_run_checks IMPLEMENTATION.
|
|
|
|
METHOD setup.
|
|
|
|
CREATE OBJECT mi_log TYPE zcl_abapgit_log.
|
|
|
|
mo_dot = zcl_abapgit_dot_abapgit=>build_default( ).
|
|
mo_dot->set_starting_folder( '/' ).
|
|
|
|
ENDMETHOD.
|
|
|
|
METHOD positive.
|
|
|
|
*** 0 Positive
|
|
|
|
FIELD-SYMBOLS: <ls_result> LIKE LINE OF mt_results.
|
|
|
|
"EXP RESULT TYPE NAME MATCH LST RST PKG PATH FILE
|
|
_append_result 'CLAS' 'ZCLASS1' ' ' ' ' 'A' '$Z$' '/' 'zclass1.clas.abap'.
|
|
_append_result 'CLAS' 'ZCLASS1' 'X' ' ' ' ' '$Z$' '/' 'zclass1.clas.xml'.
|
|
_append_result 'DOMA' 'ZDOMA1' 'X' ' ' ' ' '$Z$' '/' 'zdoma1.doma.xml'.
|
|
_append_result 'DOMA' 'ZDOMA2' ' ' 'M' ' ' '$Z$' '/' 'zdoma2.doma.xml'.
|
|
|
|
zcl_abapgit_file_status=>run_checks(
|
|
ii_log = mi_log
|
|
it_results = mt_results
|
|
io_dot = mo_dot
|
|
iv_top = '$Z$' ).
|
|
|
|
cl_abap_unit_assert=>assert_equals(
|
|
act = mi_log->count( )
|
|
exp = 0 ).
|
|
|
|
ENDMETHOD.
|
|
|
|
METHOD neg_diff_path_for_same_obj.
|
|
|
|
*** 1 Negative, different path for same object
|
|
|
|
FIELD-SYMBOLS: <ls_result> LIKE LINE OF mt_results.
|
|
|
|
"EXP RESULT TYPE NAME MATCH LST RST PKG PATH FILE
|
|
_append_result 'CLAS' 'ZCLASS1' ' ' ' ' 'A' '$Z$' '/' 'zclass1.clas.abap'.
|
|
_append_result 'CLAS' 'ZCLASS1' 'X' ' ' ' ' '$Z$' '/sub' 'zclass1.clas.xml'.
|
|
_append_result 'DOMA' 'ZDOMA1' 'X' ' ' ' ' '$Z$' '/' 'zdoma1.doma.xml'.
|
|
_append_result 'DOMA' 'ZDOMA2' ' ' 'M' ' ' '$Z$' '/' 'zdoma2.doma.xml'.
|
|
|
|
zcl_abapgit_file_status=>run_checks(
|
|
ii_log = mi_log
|
|
it_results = mt_results
|
|
io_dot = mo_dot
|
|
iv_top = '$Z$' ).
|
|
|
|
" This one is not pure - incorrect path also triggers path vs package check
|
|
cl_abap_unit_assert=>assert_equals(
|
|
act = mi_log->count( )
|
|
exp = 2 ).
|
|
|
|
cl_abap_unit_assert=>assert_equals(
|
|
act = mi_log->has_rc( '1' )
|
|
exp = abap_true ).
|
|
|
|
ENDMETHOD.
|
|
|
|
METHOD neg_incorrect_path_vs_pack.
|
|
|
|
*** 2 Negative, incorrect path vs package
|
|
|
|
FIELD-SYMBOLS: <ls_result> LIKE LINE OF mt_results.
|
|
|
|
"EXP RESULT TYPE NAME MATCH LST RST PKG PATH FILE
|
|
_append_result 'CLAS' '$$ZCLASS1' ' ' ' ' 'A' '$Z$' '/' '$$zclass1.clas.abap'.
|
|
_append_result 'CLAS' '$$ZCLASS1' 'X' ' ' ' ' '$Z$' '/' '$$zclass1.clas.xml'.
|
|
_append_result 'DOMA' '$$ZDOMA1' 'X' ' ' ' ' '$Z$' '/sub' '$$zdoma1.doma.xml'.
|
|
_append_result 'DOMA' '$$ZDOMA2' ' ' 'M' ' ' '$Z$' '/' '$$zdoma2.doma.xml'.
|
|
|
|
zcl_abapgit_file_status=>run_checks(
|
|
ii_log = mi_log
|
|
it_results = mt_results
|
|
io_dot = mo_dot
|
|
iv_top = '$Z$' ).
|
|
|
|
cl_abap_unit_assert=>assert_equals(
|
|
act = mi_log->count( )
|
|
exp = 1 ).
|
|
|
|
cl_abap_unit_assert=>assert_equals(
|
|
act = mi_log->has_rc( '2' )
|
|
exp = abap_true ).
|
|
|
|
ENDMETHOD.
|
|
|
|
METHOD neg_similar_filenames.
|
|
|
|
*** 3 Negative, similar filenames
|
|
|
|
FIELD-SYMBOLS: <ls_result> LIKE LINE OF mt_results.
|
|
|
|
"EXP RESULT TYPE NAME MATCH LST RST PKG PATH FILE
|
|
_append_result 'CLAS' '$$ZCLASS1' ' ' ' ' 'A' '$Z$' '/' '$$zclass1.clas.abap'.
|
|
_append_result 'CLAS' '$$ZCLASS1' 'X' ' ' ' ' '$Z$' '/' '$$zclass1.clas.xml'.
|
|
_append_result 'DOMA' '$$ZDOMA1' 'X' ' ' ' ' '$Z$' '/' '$$zdoma1.doma.xml'.
|
|
_append_result 'DOMA' '$$ZDOMA2' ' ' 'M' ' ' '$Z$' '/' '$$zdoma1.doma.xml'.
|
|
|
|
zcl_abapgit_file_status=>run_checks(
|
|
ii_log = mi_log
|
|
it_results = mt_results
|
|
io_dot = mo_dot
|
|
iv_top = '$Z$' ).
|
|
|
|
cl_abap_unit_assert=>assert_equals(
|
|
act = mi_log->count( )
|
|
exp = 1 ).
|
|
|
|
cl_abap_unit_assert=>assert_equals(
|
|
act = mi_log->has_rc( '3' )
|
|
exp = abap_true ).
|
|
|
|
ENDMETHOD.
|
|
|
|
METHOD neg_empty_filenames.
|
|
|
|
*** 4 Negative, empty filenames
|
|
|
|
FIELD-SYMBOLS: <ls_result> LIKE LINE OF mt_results.
|
|
|
|
"EXP RESULT TYPE NAME MATCH LST RST PKG PATH FILE
|
|
_append_result 'CLAS' '$$ZCLASS1' ' ' ' ' 'A' '$Z$' '/' '$$zclass1.clas.abap'.
|
|
_append_result 'CLAS' '$$ZCLASS1' 'X' ' ' ' ' '$Z$' '/' '$$zclass1.clas.xml'.
|
|
_append_result 'DOMA' '$$ZDOMA1' 'X' ' ' ' ' '$Z$' '/' ''.
|
|
|
|
zcl_abapgit_file_status=>run_checks(
|
|
ii_log = mi_log
|
|
it_results = mt_results
|
|
io_dot = mo_dot
|
|
iv_top = '$Z$' ).
|
|
|
|
cl_abap_unit_assert=>assert_equals(
|
|
act = mi_log->count( )
|
|
exp = 1 ).
|
|
|
|
cl_abap_unit_assert=>assert_equals(
|
|
act = mi_log->has_rc( '4' )
|
|
exp = abap_true ).
|
|
|
|
ENDMETHOD.
|
|
|
|
ENDCLASS.
|
|
|
|
CLASS lcl_status_result DEFINITION.
|
|
|
|
PUBLIC SECTION.
|
|
METHODS:
|
|
constructor
|
|
IMPORTING
|
|
it_results TYPE zif_abapgit_definitions=>ty_results_tt,
|
|
get_line
|
|
IMPORTING
|
|
iv_line TYPE i
|
|
RETURNING
|
|
VALUE(rs_data) TYPE zif_abapgit_definitions=>ty_result,
|
|
assert_lines
|
|
IMPORTING
|
|
iv_lines TYPE i.
|
|
|
|
PRIVATE SECTION.
|
|
DATA: mt_results TYPE zif_abapgit_definitions=>ty_results_tt.
|
|
|
|
ENDCLASS.
|
|
|
|
CLASS lcl_status_result IMPLEMENTATION.
|
|
|
|
METHOD constructor.
|
|
|
|
mt_results = it_results.
|
|
|
|
ENDMETHOD.
|
|
|
|
METHOD get_line.
|
|
|
|
READ TABLE mt_results INDEX iv_line INTO rs_data.
|
|
cl_abap_unit_assert=>assert_subrc( ).
|
|
|
|
ENDMETHOD.
|
|
|
|
METHOD assert_lines.
|
|
|
|
cl_abap_unit_assert=>assert_equals(
|
|
act = lines( mt_results )
|
|
exp = iv_lines ).
|
|
|
|
ENDMETHOD.
|
|
|
|
ENDCLASS.
|
|
|
|
CLASS ltcl_status_helper DEFINITION DEFERRED.
|
|
CLASS zcl_abapgit_file_status DEFINITION LOCAL FRIENDS ltcl_status_helper.
|
|
|
|
CLASS ltcl_status_helper DEFINITION FOR TESTING.
|
|
|
|
PUBLIC SECTION.
|
|
INTERFACES:
|
|
zif_abapgit_tadir.
|
|
|
|
METHODS:
|
|
constructor,
|
|
add_tadir
|
|
IMPORTING
|
|
iv_obj_type TYPE tadir-object
|
|
iv_obj_name TYPE tadir-obj_name
|
|
iv_devclass TYPE tadir-devclass,
|
|
add_remote
|
|
IMPORTING
|
|
iv_path TYPE string DEFAULT '/'
|
|
iv_filename TYPE string
|
|
iv_sha1 TYPE zif_abapgit_definitions=>ty_sha1,
|
|
add_local
|
|
IMPORTING
|
|
iv_path TYPE string DEFAULT '/'
|
|
iv_filename TYPE string
|
|
iv_sha1 TYPE zif_abapgit_definitions=>ty_sha1
|
|
iv_obj_type TYPE tadir-object
|
|
iv_obj_name TYPE tadir-obj_name
|
|
iv_devclass TYPE devclass DEFAULT '$Z$',
|
|
add_state,
|
|
run
|
|
IMPORTING
|
|
iv_devclass TYPE devclass DEFAULT '$Z$'
|
|
RETURNING
|
|
VALUE(ro_result) TYPE REF TO lcl_status_result
|
|
RAISING
|
|
zcx_abapgit_exception.
|
|
|
|
PRIVATE SECTION.
|
|
|
|
TYPES: BEGIN OF ty_tadir,
|
|
obj_type TYPE tadir-object,
|
|
obj_name TYPE tadir-obj_name,
|
|
devclass TYPE tadir-devclass,
|
|
END OF ty_tadir.
|
|
|
|
DATA:
|
|
mt_tadir TYPE STANDARD TABLE OF ty_tadir WITH DEFAULT KEY,
|
|
mt_local TYPE zif_abapgit_definitions=>ty_files_item_tt,
|
|
mt_remote TYPE zif_abapgit_definitions=>ty_files_tt,
|
|
mt_state TYPE zif_abapgit_definitions=>ty_file_signatures_tt.
|
|
|
|
ENDCLASS.
|
|
|
|
CLASS ltcl_status_helper IMPLEMENTATION.
|
|
|
|
METHOD constructor.
|
|
|
|
zcl_abapgit_injector=>set_tadir( me ).
|
|
|
|
ENDMETHOD.
|
|
|
|
METHOD add_tadir.
|
|
|
|
FIELD-SYMBOLS: <ls_tadir> LIKE LINE OF mt_tadir.
|
|
|
|
APPEND INITIAL LINE TO mt_tadir ASSIGNING <ls_tadir>.
|
|
<ls_tadir>-obj_type = iv_obj_type.
|
|
<ls_tadir>-obj_name = iv_obj_name.
|
|
<ls_tadir>-devclass = iv_devclass.
|
|
|
|
ENDMETHOD.
|
|
|
|
METHOD zif_abapgit_tadir~get_object_package.
|
|
|
|
DATA: ls_tadir LIKE LINE OF mt_tadir.
|
|
|
|
IF lines( mt_tadir ) > 0.
|
|
READ TABLE mt_tadir INTO ls_tadir WITH KEY
|
|
obj_type = iv_object
|
|
obj_name = iv_obj_name.
|
|
cl_abap_unit_assert=>assert_subrc( ).
|
|
|
|
rv_devclass = ls_tadir-devclass.
|
|
ENDIF.
|
|
|
|
ENDMETHOD.
|
|
|
|
METHOD zif_abapgit_tadir~read.
|
|
cl_abap_unit_assert=>fail( ).
|
|
ENDMETHOD.
|
|
|
|
METHOD zif_abapgit_tadir~read_single.
|
|
cl_abap_unit_assert=>fail( ).
|
|
ENDMETHOD.
|
|
|
|
METHOD add_remote.
|
|
|
|
FIELD-SYMBOLS: <ls_remote> LIKE LINE OF mt_remote.
|
|
|
|
APPEND INITIAL LINE TO mt_remote ASSIGNING <ls_remote>.
|
|
<ls_remote>-path = iv_path.
|
|
<ls_remote>-filename = iv_filename.
|
|
<ls_remote>-sha1 = iv_sha1.
|
|
|
|
ENDMETHOD.
|
|
|
|
METHOD add_local.
|
|
|
|
FIELD-SYMBOLS: <ls_local> LIKE LINE OF mt_local.
|
|
|
|
APPEND INITIAL LINE TO mt_local ASSIGNING <ls_local>.
|
|
<ls_local>-item-obj_type = iv_obj_type.
|
|
<ls_local>-item-obj_name = iv_obj_name.
|
|
<ls_local>-item-devclass = iv_devclass.
|
|
<ls_local>-file-path = iv_path.
|
|
<ls_local>-file-filename = iv_filename.
|
|
<ls_local>-file-sha1 = iv_sha1.
|
|
|
|
ENDMETHOD.
|
|
|
|
METHOD add_state.
|
|
|
|
* todo
|
|
ENDMETHOD.
|
|
|
|
METHOD run.
|
|
|
|
DATA: lt_results TYPE zif_abapgit_definitions=>ty_results_tt,
|
|
lo_dot TYPE REF TO zcl_abapgit_dot_abapgit.
|
|
|
|
|
|
lo_dot = zcl_abapgit_dot_abapgit=>build_default( ).
|
|
|
|
lt_results = zcl_abapgit_file_status=>calculate_status(
|
|
iv_devclass = iv_devclass
|
|
io_dot = lo_dot
|
|
it_local = mt_local
|
|
it_remote = mt_remote
|
|
it_cur_state = mt_state ).
|
|
|
|
CREATE OBJECT ro_result
|
|
EXPORTING
|
|
it_results = lt_results.
|
|
|
|
ENDMETHOD.
|
|
|
|
ENDCLASS.
|
|
|
|
CLASS ltcl_calculate_status DEFINITION DEFERRED.
|
|
CLASS zcl_abapgit_file_status DEFINITION LOCAL FRIENDS ltcl_calculate_status.
|
|
|
|
CLASS ltcl_calculate_status DEFINITION FOR TESTING RISK LEVEL HARMLESS
|
|
DURATION SHORT FINAL.
|
|
|
|
PRIVATE SECTION.
|
|
DATA:
|
|
mo_helper TYPE REF TO ltcl_status_helper,
|
|
mo_result TYPE REF TO lcl_status_result.
|
|
|
|
METHODS:
|
|
setup,
|
|
only_remote FOR TESTING RAISING zcx_abapgit_exception,
|
|
only_local FOR TESTING RAISING zcx_abapgit_exception,
|
|
match FOR TESTING RAISING zcx_abapgit_exception,
|
|
diff FOR TESTING RAISING zcx_abapgit_exception,
|
|
local_outside_main FOR TESTING RAISING zcx_abapgit_exception.
|
|
|
|
ENDCLASS.
|
|
|
|
CLASS ltcl_calculate_status IMPLEMENTATION.
|
|
|
|
METHOD setup.
|
|
|
|
CREATE OBJECT mo_helper.
|
|
|
|
ENDMETHOD.
|
|
|
|
METHOD only_remote.
|
|
|
|
mo_helper->add_remote(
|
|
iv_filename = '$$zdoma1.doma.xml'
|
|
iv_sha1 = 'D1' ).
|
|
|
|
mo_result = mo_helper->run( ).
|
|
|
|
mo_result->assert_lines( 1 ).
|
|
|
|
cl_abap_unit_assert=>assert_equals(
|
|
act = mo_result->get_line( 1 )-rstate
|
|
exp = zif_abapgit_definitions=>c_state-added ).
|
|
|
|
ENDMETHOD.
|
|
|
|
METHOD only_local.
|
|
|
|
mo_helper->add_local(
|
|
iv_obj_type = 'DOMA'
|
|
iv_obj_name = '$$ZDOMA1'
|
|
iv_filename = '$$zdoma1.doma.xml'
|
|
iv_sha1 = 'D1' ).
|
|
|
|
mo_result = mo_helper->run( ).
|
|
|
|
mo_result->assert_lines( 1 ).
|
|
|
|
cl_abap_unit_assert=>assert_equals(
|
|
act = mo_result->get_line( 1 )-lstate
|
|
exp = zif_abapgit_definitions=>c_state-added ).
|
|
|
|
ENDMETHOD.
|
|
|
|
METHOD match.
|
|
|
|
mo_helper->add_local(
|
|
iv_obj_type = 'DOMA'
|
|
iv_obj_name = '$$ZDOMA1'
|
|
iv_filename = '$$zdoma1.doma.xml'
|
|
iv_sha1 = 'D1' ).
|
|
|
|
mo_helper->add_remote(
|
|
iv_filename = '$$zdoma1.doma.xml'
|
|
iv_sha1 = 'D1' ).
|
|
|
|
mo_result = mo_helper->run( ).
|
|
|
|
mo_result->assert_lines( 1 ).
|
|
|
|
cl_abap_unit_assert=>assert_equals(
|
|
act = mo_result->get_line( 1 )-match
|
|
exp = abap_true ).
|
|
|
|
ENDMETHOD.
|
|
|
|
METHOD diff.
|
|
|
|
mo_helper->add_local(
|
|
iv_obj_type = 'DOMA'
|
|
iv_obj_name = '$$ZDOMA1'
|
|
iv_filename = '$$zdoma1.doma.xml'
|
|
iv_sha1 = '12345' ).
|
|
|
|
mo_helper->add_remote(
|
|
iv_filename = '$$zdoma1.doma.xml'
|
|
iv_sha1 = '54321' ).
|
|
|
|
mo_result = mo_helper->run( ).
|
|
|
|
mo_result->assert_lines( 1 ).
|
|
|
|
cl_abap_unit_assert=>assert_equals(
|
|
act = mo_result->get_line( 1 )-lstate
|
|
exp = zif_abapgit_definitions=>c_state-modified ).
|
|
|
|
cl_abap_unit_assert=>assert_equals(
|
|
act = mo_result->get_line( 1 )-rstate
|
|
exp = zif_abapgit_definitions=>c_state-modified ).
|
|
|
|
ENDMETHOD.
|
|
|
|
METHOD local_outside_main.
|
|
|
|
mo_helper->add_tadir(
|
|
iv_obj_type = 'DOMA'
|
|
iv_obj_name = '$$ZDOMA1'
|
|
iv_devclass = '$OUTSIDE$' ).
|
|
|
|
mo_helper->add_remote(
|
|
iv_filename = '$$zdoma1.doma.xml'
|
|
iv_sha1 = '54321' ).
|
|
|
|
mo_result = mo_helper->run( ).
|
|
|
|
mo_result->assert_lines( 1 ).
|
|
|
|
* it should appear as not existing locally
|
|
cl_abap_unit_assert=>assert_equals(
|
|
act = mo_result->get_line( 1 )-rstate
|
|
exp = zif_abapgit_definitions=>c_state-added ).
|
|
|
|
ENDMETHOD.
|
|
|
|
ENDCLASS.
|