From 5a13042681138396c96b94621173f975b2c1e17c Mon Sep 17 00:00:00 2001 From: larshp Date: Thu, 16 Feb 2017 14:02:37 +0000 Subject: [PATCH] folder logic, handle namespaces --- src/zabapgit_folder_logic.prog.abap | 237 ++++++++++++++++++++++------ src/zabapgit_sap_package.prog.abap | 5 +- 2 files changed, 189 insertions(+), 53 deletions(-) diff --git a/src/zabapgit_folder_logic.prog.abap b/src/zabapgit_folder_logic.prog.abap index 5f05fbe4f..68141281d 100644 --- a/src/zabapgit_folder_logic.prog.abap +++ b/src/zabapgit_folder_logic.prog.abap @@ -47,6 +47,7 @@ CLASS lcl_folder_logic IMPLEMENTATION. CASE io_dot->get_folder_logic( ). WHEN lcl_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. @@ -113,6 +114,7 @@ CLASS lcl_folder_logic IMPLEMENTATION. lv_path = lv_path+1. ENDIF. + TRANSLATE lv_path USING '/#'. TRANSLATE lv_path TO LOWER CASE. CONCATENATE lv_path '/' INTO lv_path. @@ -128,6 +130,55 @@ CLASS lcl_folder_logic IMPLEMENTATION. ENDCLASS. +CLASS ltcl_folder_logic_helper DEFINITION FOR TESTING FINAL. + + PUBLIC SECTION. + CLASS-METHODS: test + IMPORTING + iv_starting TYPE string + iv_top TYPE devclass + iv_logic TYPE string + iv_package TYPE devclass + iv_path TYPE string + RAISING lcx_exception. + +ENDCLASS. + +CLASS ltcl_folder_logic_helper IMPLEMENTATION. + + METHOD test. + + DATA: lv_path TYPE string, + lv_package TYPE devclass, + lo_dot TYPE REF TO lcl_dot_abapgit. + + + lo_dot = lcl_dot_abapgit=>build_default( sy-langu ). + lo_dot->set_starting_folder( iv_starting ). + lo_dot->set_folder_logic( iv_logic ). + + lv_package = lcl_folder_logic=>path_to_package( + iv_top = iv_top + io_dot = lo_dot + iv_path = iv_path ). + + lv_path = lcl_folder_logic=>package_to_path( + iv_top = iv_top + io_dot = lo_dot + iv_package = iv_package ). + + cl_abap_unit_assert=>assert_equals( + act = lv_package + exp = iv_package ). + + cl_abap_unit_assert=>assert_equals( + act = lv_path + exp = iv_path ). + + ENDMETHOD. + +ENDCLASS. + CLASS ltcl_folder_logic DEFINITION FOR TESTING RISK LEVEL HARMLESS DURATION SHORT FINAL. PUBLIC SECTION. @@ -140,12 +191,6 @@ CLASS ltcl_folder_logic DEFINITION FOR TESTING RISK LEVEL HARMLESS DURATION SHOR METHODS: setup, teardown, - test - IMPORTING - iv_logic TYPE string - iv_package TYPE devclass - iv_path TYPE string - RAISING lcx_exception, prefix1 FOR TESTING RAISING lcx_exception, prefix2 FOR TESTING RAISING lcx_exception, prefix_error1 FOR TESTING RAISING lcx_exception, @@ -157,9 +202,11 @@ ENDCLASS. "ltcl_convert DEFINITION CLASS ltcl_folder_logic IMPLEMENTATION. METHOD lif_sap_package~list_subpackages. + RETURN. ENDMETHOD. METHOD lif_sap_package~list_superpackages. + RETURN. ENDMETHOD. METHOD lif_sap_package~read_parent. @@ -167,6 +214,7 @@ CLASS ltcl_folder_logic IMPLEMENTATION. ENDMETHOD. METHOD lif_sap_package~create_child. + RETURN. ENDMETHOD. METHOD lif_sap_package~exists. @@ -196,69 +244,154 @@ CLASS ltcl_folder_logic IMPLEMENTATION. ENDMETHOD. METHOD prefix1. - test( iv_logic = lcl_dot_abapgit=>c_folder_logic-prefix - iv_package = lc_top - iv_path = lc_src ). + ltcl_folder_logic_helper=>test( + iv_starting = lc_src + iv_top = lc_top + iv_logic = lcl_dot_abapgit=>c_folder_logic-prefix + iv_package = lc_top + iv_path = lc_src ). ENDMETHOD. METHOD prefix2. - test( iv_logic = lcl_dot_abapgit=>c_folder_logic-prefix - iv_package = '$TOP_FOO' - iv_path = '/src/foo/' ). + ltcl_folder_logic_helper=>test( + iv_starting = lc_src + iv_top = lc_top + iv_logic = lcl_dot_abapgit=>c_folder_logic-prefix + iv_package = '$TOP_FOO' + iv_path = '/src/foo/' ). ENDMETHOD. METHOD prefix_error1. * PREFIX mode, top package is $TOP, so all subpackages should be named $TOP_something TRY. - test( iv_logic = lcl_dot_abapgit=>c_folder_logic-prefix - iv_package = '$FOOBAR' - iv_path = '/src/' ). + ltcl_folder_logic_helper=>test( + iv_starting = lc_src + iv_top = lc_top + iv_logic = lcl_dot_abapgit=>c_folder_logic-prefix + iv_package = '$FOOBAR' + iv_path = '/src/' ). cl_abap_unit_assert=>fail( 'Error expected' ). CATCH lcx_exception. ENDTRY. ENDMETHOD. METHOD full1. - test( iv_logic = lcl_dot_abapgit=>c_folder_logic-full - iv_package = lc_top - iv_path = lc_src ). + ltcl_folder_logic_helper=>test( + iv_starting = lc_src + iv_top = lc_top + iv_logic = lcl_dot_abapgit=>c_folder_logic-full + iv_package = lc_top + iv_path = lc_src ). ENDMETHOD. METHOD full2. - test( iv_logic = lcl_dot_abapgit=>c_folder_logic-full - iv_package = '$TOP_FOO' - iv_path = '/src/top_foo/' ). - ENDMETHOD. - - METHOD test. - - DATA: lv_path TYPE string, - lv_package TYPE devclass, - lo_dot TYPE REF TO lcl_dot_abapgit. - - - lo_dot = lcl_dot_abapgit=>build_default( sy-langu ). - lo_dot->set_starting_folder( lc_src ). - lo_dot->set_folder_logic( iv_logic ). - - lv_package = lcl_folder_logic=>path_to_package( - iv_top = lc_top - io_dot = lo_dot - iv_path = iv_path ). - - lv_path = lcl_folder_logic=>package_to_path( - iv_top = lc_top - io_dot = lo_dot - iv_package = iv_package ). - - cl_abap_unit_assert=>assert_equals( - act = lv_package - exp = iv_package ). - - cl_abap_unit_assert=>assert_equals( - act = lv_path - exp = iv_path ). - + ltcl_folder_logic_helper=>test( + iv_starting = lc_src + iv_top = lc_top + iv_logic = lcl_dot_abapgit=>c_folder_logic-full + iv_package = '$TOP_FOO' + iv_path = '/src/top_foo/' ). + ENDMETHOD. + +ENDCLASS. + +CLASS ltcl_folder_logic_namespaces DEFINITION FOR TESTING RISK LEVEL HARMLESS DURATION SHORT FINAL. + + PUBLIC SECTION. + INTERFACES: lif_sap_package. + + PRIVATE SECTION. + CONSTANTS: lc_top TYPE devclass VALUE '/TEST/TOOLS', + lc_src TYPE string VALUE '/src/'. + + METHODS: + setup, + teardown, + prefix1 FOR TESTING RAISING lcx_exception, + prefix2 FOR TESTING RAISING lcx_exception, + full1 FOR TESTING RAISING lcx_exception, + full2 FOR TESTING RAISING lcx_exception. + +ENDCLASS. "ltcl_convert DEFINITION + +CLASS ltcl_folder_logic_namespaces IMPLEMENTATION. + + METHOD lif_sap_package~list_subpackages. + RETURN. + ENDMETHOD. + + METHOD lif_sap_package~list_superpackages. + RETURN. + ENDMETHOD. + + METHOD lif_sap_package~read_parent. + rv_parentcl = lc_top. + ENDMETHOD. + + METHOD lif_sap_package~create_child. + RETURN. + ENDMETHOD. + + METHOD lif_sap_package~exists. + rv_bool = abap_true. + ENDMETHOD. + + METHOD setup. + FIELD-SYMBOLS: LIKE LINE OF lcl_sap_package=>gt_injected. + + CLEAR lcl_sap_package=>gt_injected. + + APPEND INITIAL LINE TO lcl_sap_package=>gt_injected ASSIGNING . + -package = '/TEST/TOOLS'. + -object = me. + + APPEND INITIAL LINE TO lcl_sap_package=>gt_injected ASSIGNING . + -package = '/TEST/T1'. + -object = me. + + APPEND INITIAL LINE TO lcl_sap_package=>gt_injected ASSIGNING . + -package = '/TEST/TOOLS_T1'. + -object = me. + ENDMETHOD. + + METHOD teardown. + CLEAR lcl_sap_package=>gt_injected. + ENDMETHOD. + + METHOD prefix1. + ltcl_folder_logic_helper=>test( + iv_starting = lc_src + iv_top = lc_top + iv_logic = lcl_dot_abapgit=>c_folder_logic-prefix + iv_package = lc_top + iv_path = lc_src ). + ENDMETHOD. + + METHOD prefix2. + ltcl_folder_logic_helper=>test( + iv_starting = lc_src + iv_top = lc_top + iv_logic = lcl_dot_abapgit=>c_folder_logic-prefix + iv_package = '/TEST/TOOLS_T1' + iv_path = '/src/t1/' ). + ENDMETHOD. + + METHOD full1. + ltcl_folder_logic_helper=>test( + iv_starting = lc_src + iv_top = lc_top + iv_logic = lcl_dot_abapgit=>c_folder_logic-full + iv_package = lc_top + iv_path = lc_src ). + ENDMETHOD. + + METHOD full2. + ltcl_folder_logic_helper=>test( + iv_starting = lc_src + iv_top = lc_top + iv_logic = lcl_dot_abapgit=>c_folder_logic-full + iv_package = '/TEST/T1' + iv_path = '/src/#test#t1/' ). ENDMETHOD. ENDCLASS. diff --git a/src/zabapgit_sap_package.prog.abap b/src/zabapgit_sap_package.prog.abap index 78d987071..b5b6b4d68 100644 --- a/src/zabapgit_sap_package.prog.abap +++ b/src/zabapgit_sap_package.prog.abap @@ -22,6 +22,7 @@ INTERFACE lif_sap_package. ENDINTERFACE. CLASS ltcl_folder_logic DEFINITION DEFERRED. +CLASS ltcl_folder_logic_namespaces DEFINITION DEFERRED. *----------------------------------------------------------------------* * CLASS lcl_package DEFINITION @@ -29,7 +30,9 @@ CLASS ltcl_folder_logic DEFINITION DEFERRED. * *----------------------------------------------------------------------* CLASS lcl_sap_package DEFINITION FINAL CREATE PRIVATE - FRIENDS ltcl_folder_logic. + FRIENDS + ltcl_folder_logic + ltcl_folder_logic_namespaces. PUBLIC SECTION. CLASS-METHODS: