folder logic, handle namespaces

This commit is contained in:
larshp 2017-02-16 14:02:37 +00:00
parent 9dae60ebad
commit 5a13042681
2 changed files with 189 additions and 53 deletions

View File

@ -47,6 +47,7 @@ CLASS lcl_folder_logic IMPLEMENTATION.
CASE io_dot->get_folder_logic( ). CASE io_dot->get_folder_logic( ).
WHEN lcl_dot_abapgit=>c_folder_logic-full. WHEN lcl_dot_abapgit=>c_folder_logic-full.
rv_package = lv_new. rv_package = lv_new.
TRANSLATE rv_package USING '#/'.
IF iv_top(1) = '$'. IF iv_top(1) = '$'.
CONCATENATE '$' rv_package INTO rv_package. CONCATENATE '$' rv_package INTO rv_package.
ENDIF. ENDIF.
@ -113,6 +114,7 @@ CLASS lcl_folder_logic IMPLEMENTATION.
lv_path = lv_path+1. lv_path = lv_path+1.
ENDIF. ENDIF.
TRANSLATE lv_path USING '/#'.
TRANSLATE lv_path TO LOWER CASE. TRANSLATE lv_path TO LOWER CASE.
CONCATENATE lv_path '/' INTO lv_path. CONCATENATE lv_path '/' INTO lv_path.
@ -128,6 +130,55 @@ CLASS lcl_folder_logic IMPLEMENTATION.
ENDCLASS. 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. CLASS ltcl_folder_logic DEFINITION FOR TESTING RISK LEVEL HARMLESS DURATION SHORT FINAL.
PUBLIC SECTION. PUBLIC SECTION.
@ -140,12 +191,6 @@ CLASS ltcl_folder_logic DEFINITION FOR TESTING RISK LEVEL HARMLESS DURATION SHOR
METHODS: METHODS:
setup, setup,
teardown, teardown,
test
IMPORTING
iv_logic TYPE string
iv_package TYPE devclass
iv_path TYPE string
RAISING lcx_exception,
prefix1 FOR TESTING RAISING lcx_exception, prefix1 FOR TESTING RAISING lcx_exception,
prefix2 FOR TESTING RAISING lcx_exception, prefix2 FOR TESTING RAISING lcx_exception,
prefix_error1 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. CLASS ltcl_folder_logic IMPLEMENTATION.
METHOD lif_sap_package~list_subpackages. METHOD lif_sap_package~list_subpackages.
RETURN.
ENDMETHOD. ENDMETHOD.
METHOD lif_sap_package~list_superpackages. METHOD lif_sap_package~list_superpackages.
RETURN.
ENDMETHOD. ENDMETHOD.
METHOD lif_sap_package~read_parent. METHOD lif_sap_package~read_parent.
@ -167,6 +214,7 @@ CLASS ltcl_folder_logic IMPLEMENTATION.
ENDMETHOD. ENDMETHOD.
METHOD lif_sap_package~create_child. METHOD lif_sap_package~create_child.
RETURN.
ENDMETHOD. ENDMETHOD.
METHOD lif_sap_package~exists. METHOD lif_sap_package~exists.
@ -196,69 +244,154 @@ CLASS ltcl_folder_logic IMPLEMENTATION.
ENDMETHOD. ENDMETHOD.
METHOD prefix1. METHOD prefix1.
test( iv_logic = lcl_dot_abapgit=>c_folder_logic-prefix ltcl_folder_logic_helper=>test(
iv_package = lc_top iv_starting = lc_src
iv_path = lc_src ). iv_top = lc_top
iv_logic = lcl_dot_abapgit=>c_folder_logic-prefix
iv_package = lc_top
iv_path = lc_src ).
ENDMETHOD. ENDMETHOD.
METHOD prefix2. METHOD prefix2.
test( iv_logic = lcl_dot_abapgit=>c_folder_logic-prefix ltcl_folder_logic_helper=>test(
iv_package = '$TOP_FOO' iv_starting = lc_src
iv_path = '/src/foo/' ). iv_top = lc_top
iv_logic = lcl_dot_abapgit=>c_folder_logic-prefix
iv_package = '$TOP_FOO'
iv_path = '/src/foo/' ).
ENDMETHOD. ENDMETHOD.
METHOD prefix_error1. METHOD prefix_error1.
* PREFIX mode, top package is $TOP, so all subpackages should be named $TOP_something * PREFIX mode, top package is $TOP, so all subpackages should be named $TOP_something
TRY. TRY.
test( iv_logic = lcl_dot_abapgit=>c_folder_logic-prefix ltcl_folder_logic_helper=>test(
iv_package = '$FOOBAR' iv_starting = lc_src
iv_path = '/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' ). cl_abap_unit_assert=>fail( 'Error expected' ).
CATCH lcx_exception. CATCH lcx_exception.
ENDTRY. ENDTRY.
ENDMETHOD. ENDMETHOD.
METHOD full1. METHOD full1.
test( iv_logic = lcl_dot_abapgit=>c_folder_logic-full ltcl_folder_logic_helper=>test(
iv_package = lc_top iv_starting = lc_src
iv_path = lc_src ). iv_top = lc_top
iv_logic = lcl_dot_abapgit=>c_folder_logic-full
iv_package = lc_top
iv_path = lc_src ).
ENDMETHOD. ENDMETHOD.
METHOD full2. METHOD full2.
test( iv_logic = lcl_dot_abapgit=>c_folder_logic-full ltcl_folder_logic_helper=>test(
iv_package = '$TOP_FOO' iv_starting = lc_src
iv_path = '/src/top_foo/' ). iv_top = lc_top
ENDMETHOD. iv_logic = lcl_dot_abapgit=>c_folder_logic-full
iv_package = '$TOP_FOO'
METHOD test. iv_path = '/src/top_foo/' ).
ENDMETHOD.
DATA: lv_path TYPE string,
lv_package TYPE devclass, ENDCLASS.
lo_dot TYPE REF TO lcl_dot_abapgit.
CLASS ltcl_folder_logic_namespaces DEFINITION FOR TESTING RISK LEVEL HARMLESS DURATION SHORT FINAL.
lo_dot = lcl_dot_abapgit=>build_default( sy-langu ). PUBLIC SECTION.
lo_dot->set_starting_folder( lc_src ). INTERFACES: lif_sap_package.
lo_dot->set_folder_logic( iv_logic ).
PRIVATE SECTION.
lv_package = lcl_folder_logic=>path_to_package( CONSTANTS: lc_top TYPE devclass VALUE '/TEST/TOOLS',
iv_top = lc_top lc_src TYPE string VALUE '/src/'.
io_dot = lo_dot
iv_path = iv_path ). METHODS:
setup,
lv_path = lcl_folder_logic=>package_to_path( teardown,
iv_top = lc_top prefix1 FOR TESTING RAISING lcx_exception,
io_dot = lo_dot prefix2 FOR TESTING RAISING lcx_exception,
iv_package = iv_package ). full1 FOR TESTING RAISING lcx_exception,
full2 FOR TESTING RAISING lcx_exception.
cl_abap_unit_assert=>assert_equals(
act = lv_package ENDCLASS. "ltcl_convert DEFINITION
exp = iv_package ).
CLASS ltcl_folder_logic_namespaces IMPLEMENTATION.
cl_abap_unit_assert=>assert_equals(
act = lv_path METHOD lif_sap_package~list_subpackages.
exp = iv_path ). 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: <ls_inject> LIKE LINE OF lcl_sap_package=>gt_injected.
CLEAR lcl_sap_package=>gt_injected.
APPEND INITIAL LINE TO lcl_sap_package=>gt_injected ASSIGNING <ls_inject>.
<ls_inject>-package = '/TEST/TOOLS'.
<ls_inject>-object = me.
APPEND INITIAL LINE TO lcl_sap_package=>gt_injected ASSIGNING <ls_inject>.
<ls_inject>-package = '/TEST/T1'.
<ls_inject>-object = me.
APPEND INITIAL LINE TO lcl_sap_package=>gt_injected ASSIGNING <ls_inject>.
<ls_inject>-package = '/TEST/TOOLS_T1'.
<ls_inject>-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. ENDMETHOD.
ENDCLASS. ENDCLASS.

View File

@ -22,6 +22,7 @@ INTERFACE lif_sap_package.
ENDINTERFACE. ENDINTERFACE.
CLASS ltcl_folder_logic DEFINITION DEFERRED. CLASS ltcl_folder_logic DEFINITION DEFERRED.
CLASS ltcl_folder_logic_namespaces DEFINITION DEFERRED.
*----------------------------------------------------------------------* *----------------------------------------------------------------------*
* CLASS lcl_package DEFINITION * CLASS lcl_package DEFINITION
@ -29,7 +30,9 @@ CLASS ltcl_folder_logic DEFINITION DEFERRED.
* *
*----------------------------------------------------------------------* *----------------------------------------------------------------------*
CLASS lcl_sap_package DEFINITION FINAL CREATE PRIVATE CLASS lcl_sap_package DEFINITION FINAL CREATE PRIVATE
FRIENDS ltcl_folder_logic. FRIENDS
ltcl_folder_logic
ltcl_folder_logic_namespaces.
PUBLIC SECTION. PUBLIC SECTION.
CLASS-METHODS: CLASS-METHODS: