From edbefc6e395a10a79f2084a769e4ee706af5d300 Mon Sep 17 00:00:00 2001 From: Lars Hvam Date: Mon, 8 Jan 2018 17:12:00 +0100 Subject: [PATCH] lcl_dot_abapgit to global (#1103) * lcl_dot_abapgit to global * fix indentation --- src/zabapgit_dot_abapgit.prog.abap | 266 +-------------- src/zabapgit_file_status.prog.abap | 10 +- src/zabapgit_folder_logic.prog.abap | 34 +- src/zabapgit_migrations.prog.abap | 6 +- src/zabapgit_page_repo_settings.prog.abap | 4 +- src/zabapgit_persistence.prog.abap | 6 +- src/zabapgit_repo.prog.abap | 6 +- src/zabapgit_repo_impl.prog.abap | 10 +- src/zabapgit_requirements.prog.abap | 9 +- src/zabapgit_tadir.prog.abap | 4 +- src/zabapgit_transport.prog.abap | 2 +- src/zabapgit_unit_test.prog.abap | 79 +---- src/zabapgit_zip.prog.abap | 2 +- src/zcl_abapgit_dot_abapgit.clas.abap | 302 ++++++++++++++++++ ..._abapgit_dot_abapgit.clas.testclasses.abap | 68 ++++ src/zcl_abapgit_dot_abapgit.clas.xml | 19 ++ 16 files changed, 445 insertions(+), 382 deletions(-) create mode 100644 src/zcl_abapgit_dot_abapgit.clas.abap create mode 100644 src/zcl_abapgit_dot_abapgit.clas.testclasses.abap create mode 100644 src/zcl_abapgit_dot_abapgit.clas.xml diff --git a/src/zabapgit_dot_abapgit.prog.abap b/src/zabapgit_dot_abapgit.prog.abap index 3e6f65bd0..b8a52252b 100644 --- a/src/zabapgit_dot_abapgit.prog.abap +++ b/src/zabapgit_dot_abapgit.prog.abap @@ -2,268 +2,4 @@ *& Include ZABAPGIT_DOT_ABAPGIT *&---------------------------------------------------------------------* -CLASS ltcl_dot_abapgit DEFINITION DEFERRED. - -CLASS lcl_dot_abapgit DEFINITION FINAL FRIENDS ltcl_dot_abapgit. - - PUBLIC SECTION. - CONSTANTS: BEGIN OF c_folder_logic, - prefix TYPE string VALUE 'PREFIX', - full TYPE string VALUE 'FULL', - END OF c_folder_logic. - - TYPES: BEGIN OF ty_requirement, - component TYPE dlvunit, - min_release TYPE saprelease, - min_patch TYPE sappatchlv, - END OF ty_requirement, - ty_requirement_tt TYPE STANDARD TABLE OF ty_requirement WITH DEFAULT KEY, - BEGIN OF ty_dot_abapgit, - master_language TYPE spras, - starting_folder TYPE string, - folder_logic TYPE string, - ignore TYPE STANDARD TABLE OF string WITH DEFAULT KEY, - requirements TYPE ty_requirement_tt, - END OF ty_dot_abapgit. - - CLASS-METHODS: - build_default - RETURNING VALUE(ro_dot_abapgit) TYPE REF TO lcl_dot_abapgit, - deserialize - IMPORTING iv_xstr TYPE xstring - RETURNING VALUE(ro_dot_abapgit) TYPE REF TO lcl_dot_abapgit - RAISING zcx_abapgit_exception. - - METHODS: - constructor - IMPORTING is_data TYPE ty_dot_abapgit, - serialize - RETURNING VALUE(rv_xstr) TYPE xstring - RAISING zcx_abapgit_exception, - get_data - RETURNING VALUE(rs_data) TYPE ty_dot_abapgit, - add_ignore - IMPORTING iv_path TYPE string - iv_filename TYPE string, - is_ignored - IMPORTING iv_path TYPE string - iv_filename TYPE string - RETURNING VALUE(rv_ignored) TYPE abap_bool, - remove_ignore - IMPORTING iv_path TYPE string - iv_filename TYPE string, - get_starting_folder - RETURNING VALUE(rv_path) TYPE string, - get_folder_logic - RETURNING VALUE(rv_logic) TYPE string, - set_folder_logic - IMPORTING iv_logic TYPE string, - set_starting_folder - IMPORTING iv_path TYPE string, - get_master_language - RETURNING VALUE(rv_language) TYPE spras, -* set_master_language -* IMPORTING iv_language TYPE spras, - get_signature - RETURNING VALUE(rs_signature) TYPE zif_abapgit_definitions=>ty_file_signature - RAISING zcx_abapgit_exception. - - PRIVATE SECTION. - DATA: ms_data TYPE ty_dot_abapgit. - - CLASS-METHODS: - to_xml - IMPORTING is_data TYPE ty_dot_abapgit - RETURNING VALUE(rv_xml) TYPE string - RAISING zcx_abapgit_exception, - from_xml - IMPORTING iv_xml TYPE string - RETURNING VALUE(rs_data) TYPE ty_dot_abapgit. - -ENDCLASS. - -CLASS lcl_dot_abapgit IMPLEMENTATION. - - METHOD constructor. - ms_data = is_data. - ENDMETHOD. - - METHOD deserialize. - - DATA: lv_xml TYPE string, - ls_data TYPE ty_dot_abapgit. - - - lv_xml = zcl_abapgit_convert=>xstring_to_string_utf8( iv_xstr ). - - ls_data = from_xml( lv_xml ). - - CREATE OBJECT ro_dot_abapgit - EXPORTING - is_data = ls_data. - - ENDMETHOD. - - METHOD serialize. - - DATA: lv_xml TYPE string. - - lv_xml = to_xml( ms_data ). - - rv_xstr = zcl_abapgit_convert=>string_to_xstring_utf8( lv_xml ). - - ENDMETHOD. - - METHOD build_default. - - DATA: ls_data TYPE ty_dot_abapgit. - - - ls_data-master_language = sy-langu. - ls_data-starting_folder = '/'. - ls_data-folder_logic = c_folder_logic-prefix. - - APPEND '/.gitignore' TO ls_data-ignore. - APPEND '/LICENSE' TO ls_data-ignore. - APPEND '/README.md' TO ls_data-ignore. - APPEND '/package.json' TO ls_data-ignore. - APPEND '/.travis.yml' TO ls_data-ignore. - - CREATE OBJECT ro_dot_abapgit - EXPORTING - is_data = ls_data. - - ENDMETHOD. - - METHOD get_data. - rs_data = ms_data. - ENDMETHOD. - - METHOD to_xml. - - CALL TRANSFORMATION id - OPTIONS initial_components = 'suppress' - SOURCE data = is_data - RESULT XML rv_xml. - - rv_xml = zcl_abapgit_xml_pretty=>print( rv_xml ). - - REPLACE FIRST OCCURRENCE - OF REGEX '<\?xml version="1\.0" encoding="[\w-]+"\?>' - IN rv_xml - WITH ''. - ASSERT sy-subrc = 0. - - ENDMETHOD. - - METHOD from_xml. - - DATA: lv_xml TYPE string. - - lv_xml = iv_xml. - -* fix downward compatibility - REPLACE ALL OCCURRENCES OF '<_--28C_DATA_--29>' IN lv_xml WITH ''. - REPLACE ALL OCCURRENCES OF '' IN lv_xml WITH ''. - - CALL TRANSFORMATION id - OPTIONS value_handling = 'accept_data_loss' - SOURCE XML lv_xml - RESULT data = rs_data ##NO_TEXT. - -* downward compatibility - IF rs_data-folder_logic IS INITIAL. - rs_data-folder_logic = c_folder_logic-prefix. - ENDIF. - - ENDMETHOD. - - METHOD add_ignore. - - DATA: lv_name TYPE string. - - FIELD-SYMBOLS: LIKE LINE OF ms_data-ignore. - - - lv_name = iv_path && iv_filename. - - READ TABLE ms_data-ignore FROM lv_name TRANSPORTING NO FIELDS. - IF sy-subrc = 0. - RETURN. - ENDIF. - - APPEND INITIAL LINE TO ms_data-ignore ASSIGNING . - = lv_name. - - ENDMETHOD. - - METHOD is_ignored. - - DATA: lv_name TYPE string, - lv_starting TYPE string, - lv_dot TYPE string, - lv_count TYPE i, - lv_ignore TYPE string. - - - lv_name = iv_path && iv_filename. - - CONCATENATE ms_data-starting_folder '*' INTO lv_starting. - CONCATENATE '/' zif_abapgit_definitions=>gc_dot_abapgit INTO lv_dot. - - LOOP AT ms_data-ignore INTO lv_ignore. - FIND ALL OCCURRENCES OF '/' IN lv_name MATCH COUNT lv_count. - - IF lv_name CP lv_ignore - OR ( ms_data-starting_folder <> '/' - AND lv_count > 1 - AND NOT lv_name CP lv_starting - AND NOT lv_name = lv_dot ). - rv_ignored = abap_true. - RETURN. - ENDIF. - ENDLOOP. - - ENDMETHOD. - - METHOD remove_ignore. - - DATA: lv_name TYPE string. - - - lv_name = iv_path && iv_filename. - - DELETE TABLE ms_data-ignore FROM lv_name. - - ENDMETHOD. - - METHOD get_starting_folder. - rv_path = ms_data-starting_folder. - ENDMETHOD. - - METHOD get_folder_logic. - rv_logic = ms_data-folder_logic. - ENDMETHOD. - - METHOD set_folder_logic. - ms_data-folder_logic = iv_logic. - ENDMETHOD. - - METHOD set_starting_folder. - ms_data-starting_folder = iv_path. - ENDMETHOD. - - METHOD get_master_language. - rv_language = ms_data-master_language. - ENDMETHOD. - - METHOD get_signature. - - rs_signature-path = zif_abapgit_definitions=>gc_root_dir. - rs_signature-filename = zif_abapgit_definitions=>gc_dot_abapgit. - rs_signature-sha1 = zcl_abapgit_hash=>sha1( iv_type = zif_abapgit_definitions=>gc_type-blob - iv_data = serialize( ) ). - - ENDMETHOD. "get_signature - -ENDCLASS. +* todo, include to be deleted diff --git a/src/zabapgit_file_status.prog.abap b/src/zabapgit_file_status.prog.abap index 7b5880a60..20fd1a074 100644 --- a/src/zabapgit_file_status.prog.abap +++ b/src/zabapgit_file_status.prog.abap @@ -24,7 +24,7 @@ CLASS lcl_file_status DEFINITION FINAL CLASS-METHODS: calculate_status IMPORTING iv_devclass TYPE devclass - io_dot TYPE REF TO lcl_dot_abapgit + io_dot TYPE REF TO zcl_abapgit_dot_abapgit it_local TYPE zif_abapgit_definitions=>ty_files_item_tt it_remote TYPE zif_abapgit_definitions=>ty_files_tt it_cur_state TYPE zif_abapgit_definitions=>ty_file_signatures_tt @@ -33,7 +33,7 @@ CLASS lcl_file_status DEFINITION FINAL run_checks IMPORTING io_log TYPE REF TO lcl_log it_results TYPE zif_abapgit_definitions=>ty_results_tt - io_dot TYPE REF TO lcl_dot_abapgit + io_dot TYPE REF TO zcl_abapgit_dot_abapgit iv_top TYPE devclass RAISING zcx_abapgit_exception, build_existing @@ -46,7 +46,7 @@ CLASS lcl_file_status DEFINITION FINAL RETURNING VALUE(rs_result) TYPE zif_abapgit_definitions=>ty_result, build_new_remote IMPORTING iv_devclass TYPE devclass - io_dot TYPE REF TO lcl_dot_abapgit + io_dot TYPE REF TO zcl_abapgit_dot_abapgit is_remote TYPE zif_abapgit_definitions=>ty_file it_items TYPE zif_abapgit_definitions=>ty_items_ts it_state TYPE zif_abapgit_definitions=>ty_file_signatures_ts @@ -56,7 +56,7 @@ CLASS lcl_file_status DEFINITION FINAL IMPORTING iv_filename TYPE string iv_path TYPE string iv_devclass TYPE devclass - io_dot TYPE REF TO lcl_dot_abapgit + io_dot TYPE REF TO zcl_abapgit_dot_abapgit EXPORTING es_item TYPE zif_abapgit_definitions=>ty_item ev_is_xml TYPE abap_bool RAISING zcx_abapgit_exception. @@ -152,7 +152,7 @@ CLASS lcl_file_status IMPLEMENTATION. METHOD status. DATA: lv_index LIKE sy-tabix, - lo_dot_abapgit TYPE REF TO lcl_dot_abapgit. + lo_dot_abapgit TYPE REF TO zcl_abapgit_dot_abapgit. FIELD-SYMBOLS LIKE LINE OF rt_results. diff --git a/src/zabapgit_folder_logic.prog.abap b/src/zabapgit_folder_logic.prog.abap index 2da75200c..7b20d834e 100644 --- a/src/zabapgit_folder_logic.prog.abap +++ b/src/zabapgit_folder_logic.prog.abap @@ -9,14 +9,14 @@ CLASS lcl_folder_logic DEFINITION. package_to_path IMPORTING iv_top TYPE devclass - io_dot TYPE REF TO lcl_dot_abapgit + io_dot TYPE REF TO zcl_abapgit_dot_abapgit iv_package TYPE devclass RETURNING VALUE(rv_path) TYPE string RAISING zcx_abapgit_exception, path_to_package IMPORTING iv_top TYPE devclass - io_dot TYPE REF TO lcl_dot_abapgit + io_dot TYPE REF TO zcl_abapgit_dot_abapgit iv_path TYPE string iv_create_if_not_exists TYPE abap_bool DEFAULT abap_true iv_local_path TYPE abap_bool DEFAULT abap_true @@ -51,13 +51,13 @@ CLASS lcl_folder_logic IMPLEMENTATION. SPLIT lv_path AT '/' INTO lv_new lv_path. CASE io_dot->get_folder_logic( ). - WHEN lcl_dot_abapgit=>c_folder_logic-full. + WHEN zcl_abapgit_dot_abapgit=>c_folder_logic-full. rv_package = lv_new. TRANSLATE rv_package USING '#/'. IF iv_top(1) = '$'. CONCATENATE '$' rv_package INTO rv_package. ENDIF. - WHEN lcl_dot_abapgit=>c_folder_logic-prefix. + WHEN zcl_abapgit_dot_abapgit=>c_folder_logic-prefix. CONCATENATE rv_package '_' lv_new INTO rv_package. WHEN OTHERS. ASSERT 0 = 1. @@ -92,12 +92,12 @@ CLASS lcl_folder_logic IMPLEMENTATION. zcx_abapgit_exception=>raise( |error, expected parent package, { iv_package }| ). ELSE. CASE io_dot->get_folder_logic( ). - WHEN lcl_dot_abapgit=>c_folder_logic-full. + WHEN zcl_abapgit_dot_abapgit=>c_folder_logic-full. lv_len = 0. IF iv_package(1) = '$'. lv_len = 1. ENDIF. - WHEN lcl_dot_abapgit=>c_folder_logic-prefix. + WHEN zcl_abapgit_dot_abapgit=>c_folder_logic-prefix. lv_len = strlen( lv_parentcl ). IF iv_package(lv_len) <> lv_parentcl. @@ -161,10 +161,10 @@ CLASS ltcl_folder_logic_helper IMPLEMENTATION. DATA: lv_path TYPE string, lv_package TYPE devclass, - lo_dot TYPE REF TO lcl_dot_abapgit. + lo_dot TYPE REF TO zcl_abapgit_dot_abapgit. - lo_dot = lcl_dot_abapgit=>build_default( ). + lo_dot = zcl_abapgit_dot_abapgit=>build_default( ). lo_dot->set_starting_folder( iv_starting ). lo_dot->set_folder_logic( iv_logic ). @@ -258,7 +258,7 @@ CLASS ltcl_folder_logic IMPLEMENTATION. ltcl_folder_logic_helper=>test( iv_starting = lc_src iv_top = lc_top - iv_logic = lcl_dot_abapgit=>c_folder_logic-prefix + iv_logic = zcl_abapgit_dot_abapgit=>c_folder_logic-prefix iv_package = lc_top iv_path = lc_src ). ENDMETHOD. @@ -267,7 +267,7 @@ CLASS ltcl_folder_logic IMPLEMENTATION. ltcl_folder_logic_helper=>test( iv_starting = lc_src iv_top = lc_top - iv_logic = lcl_dot_abapgit=>c_folder_logic-prefix + iv_logic = zcl_abapgit_dot_abapgit=>c_folder_logic-prefix iv_package = '$TOP_FOO' iv_path = '/src/foo/' ). ENDMETHOD. @@ -278,7 +278,7 @@ CLASS ltcl_folder_logic IMPLEMENTATION. ltcl_folder_logic_helper=>test( iv_starting = lc_src iv_top = lc_top - iv_logic = lcl_dot_abapgit=>c_folder_logic-prefix + iv_logic = zcl_abapgit_dot_abapgit=>c_folder_logic-prefix iv_package = '$FOOBAR' iv_path = '/src/' ). cl_abap_unit_assert=>fail( 'Error expected' ). @@ -290,7 +290,7 @@ CLASS ltcl_folder_logic IMPLEMENTATION. ltcl_folder_logic_helper=>test( iv_starting = lc_src iv_top = lc_top - iv_logic = lcl_dot_abapgit=>c_folder_logic-full + iv_logic = zcl_abapgit_dot_abapgit=>c_folder_logic-full iv_package = lc_top iv_path = lc_src ). ENDMETHOD. @@ -299,7 +299,7 @@ CLASS ltcl_folder_logic IMPLEMENTATION. ltcl_folder_logic_helper=>test( iv_starting = lc_src iv_top = lc_top - iv_logic = lcl_dot_abapgit=>c_folder_logic-full + iv_logic = zcl_abapgit_dot_abapgit=>c_folder_logic-full iv_package = '$TOP_FOO' iv_path = '/src/top_foo/' ). ENDMETHOD. @@ -373,7 +373,7 @@ CLASS ltcl_folder_logic_namespaces IMPLEMENTATION. ltcl_folder_logic_helper=>test( iv_starting = lc_src iv_top = lc_top - iv_logic = lcl_dot_abapgit=>c_folder_logic-prefix + iv_logic = zcl_abapgit_dot_abapgit=>c_folder_logic-prefix iv_package = lc_top iv_path = lc_src ). ENDMETHOD. @@ -382,7 +382,7 @@ CLASS ltcl_folder_logic_namespaces IMPLEMENTATION. ltcl_folder_logic_helper=>test( iv_starting = lc_src iv_top = lc_top - iv_logic = lcl_dot_abapgit=>c_folder_logic-prefix + iv_logic = zcl_abapgit_dot_abapgit=>c_folder_logic-prefix iv_package = '/TEST/TOOLS_T1' iv_path = '/src/t1/' ). ENDMETHOD. @@ -391,7 +391,7 @@ CLASS ltcl_folder_logic_namespaces IMPLEMENTATION. ltcl_folder_logic_helper=>test( iv_starting = lc_src iv_top = lc_top - iv_logic = lcl_dot_abapgit=>c_folder_logic-full + iv_logic = zcl_abapgit_dot_abapgit=>c_folder_logic-full iv_package = lc_top iv_path = lc_src ). ENDMETHOD. @@ -400,7 +400,7 @@ CLASS ltcl_folder_logic_namespaces IMPLEMENTATION. ltcl_folder_logic_helper=>test( iv_starting = lc_src iv_top = lc_top - iv_logic = lcl_dot_abapgit=>c_folder_logic-full + iv_logic = zcl_abapgit_dot_abapgit=>c_folder_logic-full iv_package = '/TEST/T1' iv_path = '/src/#test#t1/' ). ENDMETHOD. diff --git a/src/zabapgit_migrations.prog.abap b/src/zabapgit_migrations.prog.abap index 7eb0a6228..6d4820c47 100644 --- a/src/zabapgit_migrations.prog.abap +++ b/src/zabapgit_migrations.prog.abap @@ -36,7 +36,7 @@ CLASS lcl_migrations IMPLEMENTATION. DATA: lt_repos TYPE lcl_repo_srv=>ty_repo_tt, lv_msg TYPE string, lv_shown TYPE abap_bool, - lo_dot_abapgit TYPE REF TO lcl_dot_abapgit, + lo_dot_abapgit TYPE REF TO zcl_abapgit_dot_abapgit, lx_exception TYPE REF TO zcx_abapgit_exception. FIELD-SYMBOLS: LIKE LINE OF lt_repos. @@ -48,7 +48,7 @@ CLASS lcl_migrations IMPLEMENTATION. lo_dot_abapgit = ->get_dot_abapgit( ). IF lo_dot_abapgit->get_data( ) IS INITIAL. IF ->is_offline( ) = abap_true. - lo_dot_abapgit = lcl_dot_abapgit=>build_default( ). + lo_dot_abapgit = zcl_abapgit_dot_abapgit=>build_default( ). ELSE. IF lv_shown = abap_false. CALL FUNCTION 'POPUP_TO_INFORM' @@ -78,7 +78,7 @@ CLASS lcl_migrations IMPLEMENTATION. lo_dot_abapgit = ->find_remote_dot_abapgit( ). IF lo_dot_abapgit IS INITIAL. " .abapgit.xml is not in the remote repo yet - lo_dot_abapgit = lcl_dot_abapgit=>build_default( ). + lo_dot_abapgit = zcl_abapgit_dot_abapgit=>build_default( ). ENDIF. ENDIF. ->set_dot_abapgit( lo_dot_abapgit ). diff --git a/src/zabapgit_page_repo_settings.prog.abap b/src/zabapgit_page_repo_settings.prog.abap index 38832b649..43f2c8a12 100644 --- a/src/zabapgit_page_repo_settings.prog.abap +++ b/src/zabapgit_page_repo_settings.prog.abap @@ -46,7 +46,7 @@ CLASS lcl_gui_page_repo_sett IMPLEMENTATION. METHOD render_content. - DATA: ls_dot TYPE lcl_dot_abapgit=>ty_dot_abapgit. + DATA: ls_dot TYPE zcl_abapgit_dot_abapgit=>ty_dot_abapgit. ls_dot = mo_repo->get_dot_abapgit( )->get_data( ). @@ -71,7 +71,7 @@ CLASS lcl_gui_page_repo_sett IMPLEMENTATION. METHOD lif_gui_page~on_event. DATA: lt_post_fields TYPE tihttpnvp, - lo_dot TYPE REF TO lcl_dot_abapgit, + lo_dot TYPE REF TO zcl_abapgit_dot_abapgit, ls_post_field LIKE LINE OF lt_post_fields. diff --git a/src/zabapgit_persistence.prog.abap b/src/zabapgit_persistence.prog.abap index f5a67f5bc..cbaf28a57 100644 --- a/src/zabapgit_persistence.prog.abap +++ b/src/zabapgit_persistence.prog.abap @@ -107,7 +107,7 @@ CLASS lcl_persistence_repo DEFINITION FINAL. package TYPE devclass, offline TYPE sap_bool, local_checksums TYPE ty_local_checksum_tt, - dot_abapgit TYPE lcl_dot_abapgit=>ty_dot_abapgit, + dot_abapgit TYPE zcl_abapgit_dot_abapgit=>ty_dot_abapgit, head_branch TYPE string, " HEAD symref of the repo, master branch write_protect TYPE sap_bool, " Deny destructive ops: pull, switch branch ... ignore_subpackages TYPE sap_bool, @@ -158,7 +158,7 @@ CLASS lcl_persistence_repo DEFINITION FINAL. METHODS update_dot_abapgit IMPORTING iv_key TYPE ty_repo-key - is_dot_abapgit TYPE lcl_dot_abapgit=>ty_dot_abapgit + is_dot_abapgit TYPE zcl_abapgit_dot_abapgit=>ty_dot_abapgit RAISING zcx_abapgit_exception. METHODS add @@ -167,7 +167,7 @@ CLASS lcl_persistence_repo DEFINITION FINAL. iv_branch TYPE zif_abapgit_definitions=>ty_sha1 OPTIONAL iv_package TYPE devclass iv_offline TYPE sap_bool DEFAULT abap_false - is_dot_abapgit TYPE lcl_dot_abapgit=>ty_dot_abapgit + is_dot_abapgit TYPE zcl_abapgit_dot_abapgit=>ty_dot_abapgit RETURNING VALUE(rv_key) TYPE ty_repo-key RAISING zcx_abapgit_exception. diff --git a/src/zabapgit_repo.prog.abap b/src/zabapgit_repo.prog.abap index 6ba1d98e3..f43f27795 100644 --- a/src/zabapgit_repo.prog.abap +++ b/src/zabapgit_repo.prog.abap @@ -39,9 +39,9 @@ CLASS lcl_repo DEFINITION ABSTRACT FRIENDS lcl_repo_srv. delete RAISING zcx_abapgit_exception, get_dot_abapgit - RETURNING VALUE(ro_dot_abapgit) TYPE REF TO lcl_dot_abapgit, + RETURNING VALUE(ro_dot_abapgit) TYPE REF TO zcl_abapgit_dot_abapgit, set_dot_abapgit - IMPORTING io_dot_abapgit TYPE REF TO lcl_dot_abapgit + IMPORTING io_dot_abapgit TYPE REF TO zcl_abapgit_dot_abapgit RAISING zcx_abapgit_exception, deserialize RAISING zcx_abapgit_exception, @@ -55,7 +55,7 @@ CLASS lcl_repo DEFINITION ABSTRACT FRIENDS lcl_repo_srv. rebuild_local_checksums RAISING zcx_abapgit_exception, find_remote_dot_abapgit - RETURNING VALUE(ro_dot) TYPE REF TO lcl_dot_abapgit + RETURNING VALUE(ro_dot) TYPE REF TO zcl_abapgit_dot_abapgit RAISING zcx_abapgit_exception, is_offline RETURNING VALUE(rv_offline) TYPE abap_bool diff --git a/src/zabapgit_repo_impl.prog.abap b/src/zabapgit_repo_impl.prog.abap index e0852204f..2280bd50c 100644 --- a/src/zabapgit_repo_impl.prog.abap +++ b/src/zabapgit_repo_impl.prog.abap @@ -222,7 +222,7 @@ CLASS lcl_repo_online IMPLEMENTATION. METHOD handle_stage_ignore. DATA: lv_add TYPE abap_bool, - lo_dot_abapgit TYPE REF TO lcl_dot_abapgit, + lo_dot_abapgit TYPE REF TO zcl_abapgit_dot_abapgit, lt_stage TYPE lcl_stage=>ty_stage_tt. FIELD-SYMBOLS: LIKE LINE OF lt_stage. @@ -392,7 +392,7 @@ CLASS lcl_repo IMPLEMENTATION. WITH KEY path = zif_abapgit_definitions=>gc_root_dir filename = zif_abapgit_definitions=>gc_dot_abapgit. IF sy-subrc = 0. - ro_dot = lcl_dot_abapgit=>deserialize( -data ). + ro_dot = zcl_abapgit_dot_abapgit=>deserialize( -data ). set_dot_abapgit( ro_dot ). ENDIF. @@ -549,7 +549,7 @@ CLASS lcl_repo IMPLEMENTATION. METHOD deserialize. DATA: lt_updated_files TYPE zif_abapgit_definitions=>ty_file_signatures_tt, - lt_requirements TYPE STANDARD TABLE OF lcl_dot_abapgit=>ty_requirement, + lt_requirements TYPE STANDARD TABLE OF zcl_abapgit_dot_abapgit=>ty_requirement, lx_error TYPE REF TO zcx_abapgit_exception. find_remote_dot_abapgit( ). @@ -893,7 +893,7 @@ CLASS lcl_repo_srv IMPLEMENTATION. iv_branch_name = iv_branch_name iv_package = iv_package iv_offline = abap_false - is_dot_abapgit = lcl_dot_abapgit=>build_default( )->get_data( ) ). + is_dot_abapgit = zcl_abapgit_dot_abapgit=>build_default( )->get_data( ) ). TRY. ls_repo = mo_persistence->read( lv_key ). CATCH zcx_abapgit_not_found. @@ -921,7 +921,7 @@ CLASS lcl_repo_srv IMPLEMENTATION. iv_branch_name = '' iv_package = iv_package iv_offline = abap_true - is_dot_abapgit = lcl_dot_abapgit=>build_default( )->get_data( ) ). + is_dot_abapgit = zcl_abapgit_dot_abapgit=>build_default( )->get_data( ) ). TRY. ls_repo = mo_persistence->read( lv_key ). diff --git a/src/zabapgit_requirements.prog.abap b/src/zabapgit_requirements.prog.abap index f70819d3c..d5c29c1b4 100644 --- a/src/zabapgit_requirements.prog.abap +++ b/src/zabapgit_requirements.prog.abap @@ -29,14 +29,14 @@ CLASS lcl_requirement_helper DEFINITION FINAL. "! @parameter it_requirements | The requirements to check "! @parameter iv_show_popup | Show popup with requirements "! @raising zcx_abapgit_exception | Cancelled by user or internal error - check_requirements IMPORTING it_requirements TYPE lcl_dot_abapgit=>ty_requirement_tt + check_requirements IMPORTING it_requirements TYPE zcl_abapgit_dot_abapgit=>ty_requirement_tt iv_show_popup TYPE abap_bool DEFAULT abap_true RAISING zcx_abapgit_exception, "! Get a table with information about each requirement "! @parameter it_requirements | Requirements "! @parameter rt_status | Result "! @raising zcx_abapgit_exception | Internal error - get_requirement_met_status IMPORTING it_requirements TYPE lcl_dot_abapgit=>ty_requirement_tt + get_requirement_met_status IMPORTING it_requirements TYPE zcl_abapgit_dot_abapgit=>ty_requirement_tt RETURNING value(rt_status) TYPE ty_requirement_status_tt RAISING zcx_abapgit_exception. PRIVATE SECTION. @@ -80,11 +80,14 @@ CLASS lcl_requirement_helper IMPLEMENTATION. ENDMETHOD. "check_requirements METHOD get_requirement_met_status. + DATA: lt_installed TYPE STANDARD TABLE OF cvers_sdu. - FIELD-SYMBOLS: TYPE lcl_dot_abapgit=>ty_requirement, + + FIELD-SYMBOLS: TYPE zcl_abapgit_dot_abapgit=>ty_requirement, TYPE ty_requirement_status, TYPE cvers_sdu. + CALL FUNCTION 'DELIVERY_GET_INSTALLED_COMPS' TABLES tt_comptab = lt_installed diff --git a/src/zabapgit_tadir.prog.abap b/src/zabapgit_tadir.prog.abap index 98a8a0dbc..d353dcdb7 100644 --- a/src/zabapgit_tadir.prog.abap +++ b/src/zabapgit_tadir.prog.abap @@ -32,7 +32,7 @@ CLASS lcl_tadir DEFINITION FINAL. read IMPORTING iv_package TYPE tadir-devclass iv_ignore_subpackages TYPE abap_bool DEFAULT abap_false - io_dot TYPE REF TO lcl_dot_abapgit OPTIONAL + io_dot TYPE REF TO zcl_abapgit_dot_abapgit OPTIONAL io_log TYPE REF TO lcl_log OPTIONAL RETURNING VALUE(rt_tadir) TYPE zif_abapgit_definitions=>ty_tadir_tt RAISING zcx_abapgit_exception, @@ -67,7 +67,7 @@ CLASS lcl_tadir DEFINITION FINAL. build IMPORTING iv_package TYPE tadir-devclass iv_top TYPE tadir-devclass - io_dot TYPE REF TO lcl_dot_abapgit + io_dot TYPE REF TO zcl_abapgit_dot_abapgit iv_ignore_subpackages TYPE abap_bool DEFAULT abap_false io_log TYPE REF TO lcl_log OPTIONAL RETURNING VALUE(rt_tadir) TYPE zif_abapgit_definitions=>ty_tadir_tt diff --git a/src/zabapgit_transport.prog.abap b/src/zabapgit_transport.prog.abap index 6c1e89b9c..a1812de0b 100644 --- a/src/zabapgit_transport.prog.abap +++ b/src/zabapgit_transport.prog.abap @@ -55,7 +55,7 @@ CLASS lcl_transport IMPLEMENTATION. ls_data-key = 'TZIP'. ls_data-package = lv_package. - ls_data-dot_abapgit = lcl_dot_abapgit=>build_default( )->get_data( ). + ls_data-dot_abapgit = zcl_abapgit_dot_abapgit=>build_default( )->get_data( ). CREATE OBJECT lo_repo EXPORTING diff --git a/src/zabapgit_unit_test.prog.abap b/src/zabapgit_unit_test.prog.abap index 3a4ac8df1..54e8f87db 100644 --- a/src/zabapgit_unit_test.prog.abap +++ b/src/zabapgit_unit_test.prog.abap @@ -160,71 +160,6 @@ CLASS ltcl_dangerous IMPLEMENTATION. ENDCLASS. "ltcl_dangerous IMPLEMENTATION -CLASS ltcl_dot_abapgit DEFINITION FOR TESTING RISK LEVEL HARMLESS DURATION SHORT FINAL. - - PRIVATE SECTION. - METHODS: - identity FOR TESTING - RAISING zcx_abapgit_exception, - ignore FOR TESTING. - -ENDCLASS. - -CLASS ltcl_dot_abapgit IMPLEMENTATION. - - METHOD identity. - - DATA: lo_dot TYPE REF TO lcl_dot_abapgit, - ls_before TYPE lcl_dot_abapgit=>ty_dot_abapgit, - ls_after TYPE lcl_dot_abapgit=>ty_dot_abapgit. - - - lo_dot = lcl_dot_abapgit=>build_default( ). - ls_before = lo_dot->ms_data. - - lo_dot = lcl_dot_abapgit=>deserialize( lo_dot->serialize( ) ). - ls_after = lo_dot->ms_data. - - cl_abap_unit_assert=>assert_equals( - act = ls_after - exp = ls_before ). - - ENDMETHOD. - - METHOD ignore. - - CONSTANTS: lc_path TYPE string VALUE '/', - lc_filename TYPE string VALUE 'foobar.txt'. - - DATA: lv_ignored TYPE abap_bool, - lo_dot TYPE REF TO lcl_dot_abapgit. - - - lo_dot = lcl_dot_abapgit=>build_default( ). - - lv_ignored = lo_dot->is_ignored( iv_path = lc_path iv_filename = lc_filename ). - cl_abap_unit_assert=>assert_equals( - act = lv_ignored - exp = abap_false ). - - lo_dot->add_ignore( iv_path = lc_path iv_filename = lc_filename ). - - lv_ignored = lo_dot->is_ignored( iv_path = lc_path iv_filename = lc_filename ). - cl_abap_unit_assert=>assert_equals( - act = lv_ignored - exp = abap_true ). - - lo_dot->remove_ignore( iv_path = lc_path iv_filename = lc_filename ). - - lv_ignored = lo_dot->is_ignored( iv_path = lc_path iv_filename = lc_filename ). - cl_abap_unit_assert=>assert_equals( - act = lv_ignored - exp = abap_false ). - - ENDMETHOD. - -ENDCLASS. - CLASS ltcl_git_porcelain DEFINITION FOR TESTING RISK LEVEL HARMLESS DURATION SHORT FINAL. PRIVATE SECTION. @@ -1656,7 +1591,7 @@ CLASS ltcl_file_status IMPLEMENTATION. lt_state TYPE zif_abapgit_definitions=>ty_file_signatures_tt, lt_results TYPE zif_abapgit_definitions=>ty_results_tt, lt_results_exp TYPE zif_abapgit_definitions=>ty_results_tt, - lo_dot TYPE REF TO lcl_dot_abapgit. + lo_dot TYPE REF TO zcl_abapgit_dot_abapgit. FIELD-SYMBOLS: LIKE LINE OF lt_local, LIKE LINE OF lt_remote, @@ -1728,7 +1663,7 @@ CLASS ltcl_file_status IMPLEMENTATION. _append_result 'DOMA' 'XFELD' 'X' ' ' ' ' 'SUTI' '/' 'xfeld.doma.xml'. lt_results_exp = lt_results. - lo_dot = lcl_dot_abapgit=>build_default( ). + lo_dot = zcl_abapgit_dot_abapgit=>build_default( ). * lo_dot->set_starting_folder( 'SRC' ). * lo_dot->set_folder_logic( lcl_dot_abapgit=>c_folder_logic-prefix ). @@ -1775,7 +1710,7 @@ CLASS ltcl_file_status2 IMPLEMENTATION. lcl_file_status=>run_checks( io_log = lo_log it_results = lt_results - io_dot = lcl_dot_abapgit=>build_default( ) + io_dot = zcl_abapgit_dot_abapgit=>build_default( ) iv_top = '$Z$' ). assert_equals( act = lo_log->count( ) exp = 0 ). @@ -1793,7 +1728,7 @@ CLASS ltcl_file_status2 IMPLEMENTATION. lcl_file_status=>run_checks( io_log = lo_log it_results = lt_results - io_dot = lcl_dot_abapgit=>build_default( ) + io_dot = zcl_abapgit_dot_abapgit=>build_default( ) iv_top = '$Z$' ). " This one is not pure - incorrect path also triggers path vs package check @@ -1813,7 +1748,7 @@ CLASS ltcl_file_status2 IMPLEMENTATION. lcl_file_status=>run_checks( io_log = lo_log it_results = lt_results - io_dot = lcl_dot_abapgit=>build_default( ) + io_dot = zcl_abapgit_dot_abapgit=>build_default( ) iv_top = '$Z$' ). assert_equals( act = lo_log->count( ) exp = 1 ). @@ -1832,7 +1767,7 @@ CLASS ltcl_file_status2 IMPLEMENTATION. lcl_file_status=>run_checks( io_log = lo_log it_results = lt_results - io_dot = lcl_dot_abapgit=>build_default( ) + io_dot = zcl_abapgit_dot_abapgit=>build_default( ) iv_top = '$Z$' ). assert_equals( act = lo_log->count( ) exp = 1 ). @@ -1850,7 +1785,7 @@ CLASS ltcl_file_status2 IMPLEMENTATION. lcl_file_status=>run_checks( io_log = lo_log it_results = lt_results - io_dot = lcl_dot_abapgit=>build_default( ) + io_dot = zcl_abapgit_dot_abapgit=>build_default( ) iv_top = '$Z$' ). assert_equals( act = lo_log->count( ) diff --git a/src/zabapgit_zip.prog.abap b/src/zabapgit_zip.prog.abap index 6909d9bf4..53379f853 100644 --- a/src/zabapgit_zip.prog.abap +++ b/src/zabapgit_zip.prog.abap @@ -389,7 +389,7 @@ CLASS lcl_zip IMPLEMENTATION. ls_data-key = 'DUMMY'. - ls_data-dot_abapgit = lcl_dot_abapgit=>build_default( )->get_data( ). + ls_data-dot_abapgit = zcl_abapgit_dot_abapgit=>build_default( )->get_data( ). lcl_popups=>popup_package_export( IMPORTING diff --git a/src/zcl_abapgit_dot_abapgit.clas.abap b/src/zcl_abapgit_dot_abapgit.clas.abap new file mode 100644 index 000000000..6e9080726 --- /dev/null +++ b/src/zcl_abapgit_dot_abapgit.clas.abap @@ -0,0 +1,302 @@ +CLASS zcl_abapgit_dot_abapgit DEFINITION + PUBLIC + CREATE PUBLIC . + + PUBLIC SECTION. + + TYPES: + BEGIN OF ty_requirement, + component TYPE dlvunit, + min_release TYPE saprelease, + min_patch TYPE sappatchlv, + END OF ty_requirement . + TYPES: + ty_requirement_tt TYPE STANDARD TABLE OF ty_requirement WITH DEFAULT KEY . + TYPES: + BEGIN OF ty_dot_abapgit, + master_language TYPE spras, + starting_folder TYPE string, + folder_logic TYPE string, + ignore TYPE STANDARD TABLE OF string WITH DEFAULT KEY, + requirements TYPE ty_requirement_tt, + END OF ty_dot_abapgit . + + CONSTANTS: + BEGIN OF c_folder_logic, + prefix TYPE string VALUE 'PREFIX', + full TYPE string VALUE 'FULL', + END OF c_folder_logic . + + CLASS-METHODS build_default + RETURNING + VALUE(ro_dot_abapgit) TYPE REF TO zcl_abapgit_dot_abapgit . + CLASS-METHODS deserialize + IMPORTING + !iv_xstr TYPE xstring + RETURNING + VALUE(ro_dot_abapgit) TYPE REF TO zcl_abapgit_dot_abapgit + RAISING + zcx_abapgit_exception . + METHODS constructor + IMPORTING + !is_data TYPE ty_dot_abapgit . + METHODS serialize + RETURNING + VALUE(rv_xstr) TYPE xstring + RAISING + zcx_abapgit_exception . + METHODS get_data + RETURNING + VALUE(rs_data) TYPE ty_dot_abapgit . + METHODS add_ignore + IMPORTING + !iv_path TYPE string + !iv_filename TYPE string . + METHODS is_ignored + IMPORTING + !iv_path TYPE string + !iv_filename TYPE string + RETURNING + VALUE(rv_ignored) TYPE abap_bool . + METHODS remove_ignore + IMPORTING + !iv_path TYPE string + !iv_filename TYPE string . + METHODS get_starting_folder + RETURNING + VALUE(rv_path) TYPE string . + METHODS get_folder_logic + RETURNING + VALUE(rv_logic) TYPE string . + METHODS set_folder_logic + IMPORTING + !iv_logic TYPE string . + METHODS set_starting_folder + IMPORTING + !iv_path TYPE string . + METHODS get_master_language + RETURNING + VALUE(rv_language) TYPE spras . +* set_master_language +* IMPORTING iv_language TYPE spras, + METHODS get_signature + RETURNING + VALUE(rs_signature) TYPE zif_abapgit_definitions=>ty_file_signature + RAISING + zcx_abapgit_exception . + PRIVATE SECTION. + DATA: ms_data TYPE ty_dot_abapgit. + + CLASS-METHODS: + to_xml + IMPORTING is_data TYPE ty_dot_abapgit + RETURNING VALUE(rv_xml) TYPE string + RAISING zcx_abapgit_exception, + from_xml + IMPORTING iv_xml TYPE string + RETURNING VALUE(rs_data) TYPE ty_dot_abapgit. + +ENDCLASS. + + + +CLASS ZCL_ABAPGIT_DOT_ABAPGIT IMPLEMENTATION. + + + METHOD add_ignore. + + DATA: lv_name TYPE string. + + FIELD-SYMBOLS: LIKE LINE OF ms_data-ignore. + + + lv_name = iv_path && iv_filename. + + READ TABLE ms_data-ignore FROM lv_name TRANSPORTING NO FIELDS. + IF sy-subrc = 0. + RETURN. + ENDIF. + + APPEND INITIAL LINE TO ms_data-ignore ASSIGNING . + = lv_name. + + ENDMETHOD. + + + METHOD build_default. + + DATA: ls_data TYPE ty_dot_abapgit. + + + ls_data-master_language = sy-langu. + ls_data-starting_folder = '/'. + ls_data-folder_logic = c_folder_logic-prefix. + + APPEND '/.gitignore' TO ls_data-ignore. + APPEND '/LICENSE' TO ls_data-ignore. + APPEND '/README.md' TO ls_data-ignore. + APPEND '/package.json' TO ls_data-ignore. + APPEND '/.travis.yml' TO ls_data-ignore. + + CREATE OBJECT ro_dot_abapgit + EXPORTING + is_data = ls_data. + + ENDMETHOD. + + + METHOD constructor. + ms_data = is_data. + ENDMETHOD. + + + METHOD deserialize. + + DATA: lv_xml TYPE string, + ls_data TYPE ty_dot_abapgit. + + + lv_xml = zcl_abapgit_convert=>xstring_to_string_utf8( iv_xstr ). + + ls_data = from_xml( lv_xml ). + + CREATE OBJECT ro_dot_abapgit + EXPORTING + is_data = ls_data. + + ENDMETHOD. + + + METHOD from_xml. + + DATA: lv_xml TYPE string. + + lv_xml = iv_xml. + +* fix downward compatibility + REPLACE ALL OCCURRENCES OF '<_--28C_DATA_--29>' IN lv_xml WITH ''. + REPLACE ALL OCCURRENCES OF '' IN lv_xml WITH ''. + + CALL TRANSFORMATION id + OPTIONS value_handling = 'accept_data_loss' + SOURCE XML lv_xml + RESULT data = rs_data ##NO_TEXT. + +* downward compatibility + IF rs_data-folder_logic IS INITIAL. + rs_data-folder_logic = c_folder_logic-prefix. + ENDIF. + + ENDMETHOD. + + + METHOD get_data. + rs_data = ms_data. + ENDMETHOD. + + + METHOD get_folder_logic. + rv_logic = ms_data-folder_logic. + ENDMETHOD. + + + METHOD get_master_language. + rv_language = ms_data-master_language. + ENDMETHOD. + + + METHOD get_signature. + + rs_signature-path = zif_abapgit_definitions=>gc_root_dir. + rs_signature-filename = zif_abapgit_definitions=>gc_dot_abapgit. + rs_signature-sha1 = zcl_abapgit_hash=>sha1( iv_type = zif_abapgit_definitions=>gc_type-blob + iv_data = serialize( ) ). + + ENDMETHOD. "get_signature + + + METHOD get_starting_folder. + rv_path = ms_data-starting_folder. + ENDMETHOD. + + + METHOD is_ignored. + + DATA: lv_name TYPE string, + lv_starting TYPE string, + lv_dot TYPE string, + lv_count TYPE i, + lv_ignore TYPE string. + + + lv_name = iv_path && iv_filename. + + CONCATENATE ms_data-starting_folder '*' INTO lv_starting. + CONCATENATE '/' zif_abapgit_definitions=>gc_dot_abapgit INTO lv_dot. + + LOOP AT ms_data-ignore INTO lv_ignore. + FIND ALL OCCURRENCES OF '/' IN lv_name MATCH COUNT lv_count. + + IF lv_name CP lv_ignore + OR ( ms_data-starting_folder <> '/' + AND lv_count > 1 + AND NOT lv_name CP lv_starting + AND NOT lv_name = lv_dot ). + rv_ignored = abap_true. + RETURN. + ENDIF. + ENDLOOP. + + ENDMETHOD. + + + METHOD remove_ignore. + + DATA: lv_name TYPE string. + + + lv_name = iv_path && iv_filename. + + DELETE TABLE ms_data-ignore FROM lv_name. + + ENDMETHOD. + + + METHOD serialize. + + DATA: lv_xml TYPE string. + + lv_xml = to_xml( ms_data ). + + rv_xstr = zcl_abapgit_convert=>string_to_xstring_utf8( lv_xml ). + + ENDMETHOD. + + + METHOD set_folder_logic. + ms_data-folder_logic = iv_logic. + ENDMETHOD. + + + METHOD set_starting_folder. + ms_data-starting_folder = iv_path. + ENDMETHOD. + + + METHOD to_xml. + + CALL TRANSFORMATION id + OPTIONS initial_components = 'suppress' + SOURCE data = is_data + RESULT XML rv_xml. + + rv_xml = zcl_abapgit_xml_pretty=>print( rv_xml ). + + REPLACE FIRST OCCURRENCE + OF REGEX '<\?xml version="1\.0" encoding="[\w-]+"\?>' + IN rv_xml + WITH ''. + ASSERT sy-subrc = 0. + + ENDMETHOD. +ENDCLASS. diff --git a/src/zcl_abapgit_dot_abapgit.clas.testclasses.abap b/src/zcl_abapgit_dot_abapgit.clas.testclasses.abap new file mode 100644 index 000000000..5b60210e4 --- /dev/null +++ b/src/zcl_abapgit_dot_abapgit.clas.testclasses.abap @@ -0,0 +1,68 @@ +CLASS ltcl_dot_abapgit DEFINITION DEFERRED. +CLASS zcl_abapgit_dot_abapgit DEFINITION LOCAL FRIENDS ltcl_dot_abapgit. + +CLASS ltcl_dot_abapgit DEFINITION FOR TESTING DURATION SHORT RISK LEVEL HARMLESS. + + PRIVATE SECTION. + METHODS: + identity FOR TESTING + RAISING zcx_abapgit_exception, + ignore FOR TESTING. + +ENDCLASS. "ltcl_Dot_Abapgit + + +CLASS ltcl_dot_abapgit IMPLEMENTATION. + + METHOD identity. + + DATA: lo_dot TYPE REF TO zcl_abapgit_dot_abapgit, + ls_before TYPE zcl_abapgit_dot_abapgit=>ty_dot_abapgit, + ls_after TYPE zcl_abapgit_dot_abapgit=>ty_dot_abapgit. + + + lo_dot = zcl_abapgit_dot_abapgit=>build_default( ). + ls_before = lo_dot->ms_data. + + lo_dot = zcl_abapgit_dot_abapgit=>deserialize( lo_dot->serialize( ) ). + ls_after = lo_dot->ms_data. + + cl_abap_unit_assert=>assert_equals( + act = ls_after + exp = ls_before ). + + ENDMETHOD. + + METHOD ignore. + + CONSTANTS: lc_path TYPE string VALUE '/', + lc_filename TYPE string VALUE 'foobar.txt'. + + DATA: lv_ignored TYPE abap_bool, + lo_dot TYPE REF TO zcl_abapgit_dot_abapgit. + + + lo_dot = zcl_abapgit_dot_abapgit=>build_default( ). + + lv_ignored = lo_dot->is_ignored( iv_path = lc_path iv_filename = lc_filename ). + cl_abap_unit_assert=>assert_equals( + act = lv_ignored + exp = abap_false ). + + lo_dot->add_ignore( iv_path = lc_path iv_filename = lc_filename ). + + lv_ignored = lo_dot->is_ignored( iv_path = lc_path iv_filename = lc_filename ). + cl_abap_unit_assert=>assert_equals( + act = lv_ignored + exp = abap_true ). + + lo_dot->remove_ignore( iv_path = lc_path iv_filename = lc_filename ). + + lv_ignored = lo_dot->is_ignored( iv_path = lc_path iv_filename = lc_filename ). + cl_abap_unit_assert=>assert_equals( + act = lv_ignored + exp = abap_false ). + + ENDMETHOD. + +ENDCLASS. diff --git a/src/zcl_abapgit_dot_abapgit.clas.xml b/src/zcl_abapgit_dot_abapgit.clas.xml new file mode 100644 index 000000000..f2233ccc1 --- /dev/null +++ b/src/zcl_abapgit_dot_abapgit.clas.xml @@ -0,0 +1,19 @@ + + + + + + ZCL_ABAPGIT_DOT_ABAPGIT + 1 + E + .abapgit.xml + 2 + 1 + X + X + X + X + + + +