diff --git a/src/utils/zcl_abapgit_url.clas.abap b/src/utils/zcl_abapgit_url.clas.abap index 551999e9a..d03765d2f 100644 --- a/src/utils/zcl_abapgit_url.clas.abap +++ b/src/utils/zcl_abapgit_url.clas.abap @@ -31,6 +31,7 @@ CLASS zcl_abapgit_url DEFINITION VALUE(rv_path_name) TYPE string RAISING zcx_abapgit_exception . + PROTECTED SECTION. PRIVATE SECTION. CLASS-METHODS regex @@ -59,8 +60,17 @@ CLASS ZCL_ABAPGIT_URL IMPLEMENTATION. METHOD name. + DATA: lv_path TYPE string. + regex( EXPORTING iv_url = iv_url - IMPORTING ev_name = rv_name ). + IMPORTING ev_name = rv_name + ev_path = lv_path ). + + IF rv_name IS INITIAL. + FIND REGEX '([\w-]+)/$' IN lv_path SUBMATCHES rv_name. + ENDIF. + + ASSERT NOT rv_name IS INITIAL. ENDMETHOD. diff --git a/src/utils/zcl_abapgit_url.clas.testclasses.abap b/src/utils/zcl_abapgit_url.clas.testclasses.abap index cb3a9e138..f0fba13ef 100644 --- a/src/utils/zcl_abapgit_url.clas.testclasses.abap +++ b/src/utils/zcl_abapgit_url.clas.testclasses.abap @@ -6,6 +6,9 @@ CLASS ltcl_test DEFINITION FOR TESTING DURATION SHORT RISK LEVEL HARMLESS. repo_host FOR TESTING RAISING zcx_abapgit_exception, repo_name1 FOR TESTING RAISING zcx_abapgit_exception, repo_name2 FOR TESTING RAISING zcx_abapgit_exception, + repo_name3 FOR TESTING RAISING zcx_abapgit_exception, + repo_name4 FOR TESTING RAISING zcx_abapgit_exception, + repo_name5 FOR TESTING RAISING zcx_abapgit_exception, repo_error FOR TESTING. ENDCLASS. @@ -59,4 +62,40 @@ CLASS ltcl_test IMPLEMENTATION. ENDMETHOD. + METHOD repo_name3. + + DATA: lv_name TYPE string. + + lv_name = zcl_abapgit_url=>name( 'https://github.com/larshp/Foobar/' ). + + cl_abap_unit_assert=>assert_equals( + exp = 'Foobar' + act = lv_name ). + + ENDMETHOD. + + METHOD repo_name4. + + DATA: lv_name TYPE string. + + lv_name = zcl_abapgit_url=>name( 'https://github.com/larshp/foo-bar/' ). + + cl_abap_unit_assert=>assert_equals( + exp = 'foo-bar' + act = lv_name ). + + ENDMETHOD. + + METHOD repo_name5. + + DATA: lv_name TYPE string. + + lv_name = zcl_abapgit_url=>name( 'https://github.com/larshp/foo_bar/' ). + + cl_abap_unit_assert=>assert_equals( + exp = 'foo_bar' + act = lv_name ). + + ENDMETHOD. + ENDCLASS.