mirror of
https://github.com/abapGit/abapGit.git
synced 2025-04-30 20:03:20 +08:00
Refactor feature check (is_feature_enabled
) (#6599)
Co-authored-by: Lars Hvam <larshp@hotmail.com>
This commit is contained in:
parent
9cb286004d
commit
d4156132be
|
@ -9,10 +9,6 @@ CLASS zcl_abapgit_aff_registry DEFINITION
|
|||
|
||||
CONSTANTS c_aff_feature TYPE string VALUE 'AFF'.
|
||||
|
||||
METHODS:
|
||||
constructor
|
||||
IMPORTING
|
||||
io_settings TYPE REF TO zcl_abapgit_settings OPTIONAL.
|
||||
PROTECTED SECTION.
|
||||
PRIVATE SECTION.
|
||||
|
||||
|
@ -25,8 +21,6 @@ CLASS zcl_abapgit_aff_registry DEFINITION
|
|||
CLASS-DATA:
|
||||
gt_registry TYPE HASHED TABLE OF ty_registry_entry WITH UNIQUE KEY obj_type.
|
||||
|
||||
DATA:
|
||||
mo_settings TYPE REF TO zcl_abapgit_settings.
|
||||
METHODS initialize_registry_table.
|
||||
|
||||
CLASS-METHODS:
|
||||
|
@ -42,15 +36,6 @@ ENDCLASS.
|
|||
CLASS zcl_abapgit_aff_registry IMPLEMENTATION.
|
||||
|
||||
|
||||
METHOD constructor.
|
||||
IF io_settings IS SUPPLIED.
|
||||
mo_settings = io_settings.
|
||||
ELSE.
|
||||
mo_settings = zcl_abapgit_persist_factory=>get_settings( )->read( ).
|
||||
ENDIF.
|
||||
ENDMETHOD.
|
||||
|
||||
|
||||
METHOD initialize_registry_table.
|
||||
register( 'CHKC' ).
|
||||
register( 'CHKO' ).
|
||||
|
@ -86,7 +71,7 @@ CLASS zcl_abapgit_aff_registry IMPLEMENTATION.
|
|||
READ TABLE gt_registry WITH TABLE KEY obj_type = iv_obj_type INTO ls_registry_entry.
|
||||
IF sy-subrc = 0 AND ls_registry_entry-experimental = abap_false.
|
||||
rv_result = abap_true.
|
||||
ELSEIF sy-subrc = 0 AND mo_settings->is_feature_enabled( c_aff_feature ) = abap_true.
|
||||
ELSEIF sy-subrc = 0 AND zcl_abapgit_feature=>is_enabled( c_aff_feature ) = abap_true.
|
||||
rv_result = abap_true.
|
||||
ELSE.
|
||||
rv_result = abap_false.
|
||||
|
|
|
@ -30,16 +30,14 @@ CLASS ltcl_aff_registry IMPLEMENTATION.
|
|||
lo_settings_stub TYPE REF TO zcl_abapgit_settings,
|
||||
lv_act TYPE abap_bool.
|
||||
|
||||
|
||||
CREATE OBJECT lo_settings_stub.
|
||||
lo_settings_stub = zcl_abapgit_persist_factory=>get_settings( )->read( ).
|
||||
IF iv_experimental = abap_true.
|
||||
lo_settings_stub->set_experimental_features( zcl_abapgit_aff_registry=>c_aff_feature ).
|
||||
ELSE.
|
||||
lo_settings_stub->set_experimental_features( '' ).
|
||||
ENDIF.
|
||||
CREATE OBJECT lo_cut TYPE zcl_abapgit_aff_registry
|
||||
EXPORTING
|
||||
io_settings = lo_settings_stub.
|
||||
|
||||
CREATE OBJECT lo_cut TYPE zcl_abapgit_aff_registry.
|
||||
lv_act = lo_cut->is_supported_object_type( iv_obj_type ).
|
||||
cl_abap_unit_assert=>assert_equals( exp = iv_is_supported
|
||||
act = lv_act ).
|
||||
|
|
|
@ -112,8 +112,7 @@ CLASS zcl_abapgit_object_intf IMPLEMENTATION.
|
|||
iv_language = iv_language ).
|
||||
mi_object_oriented_object_fct = zcl_abapgit_oo_factory=>make( ms_item-obj_type ).
|
||||
|
||||
mv_aff_enabled = zcl_abapgit_persist_factory=>get_settings( )->read( )->is_feature_enabled(
|
||||
zcl_abapgit_aff_registry=>c_aff_feature ).
|
||||
mv_aff_enabled = zcl_abapgit_feature=>is_enabled( zcl_abapgit_abap_language_vers=>c_feature_flag ).
|
||||
ENDMETHOD.
|
||||
|
||||
|
||||
|
|
|
@ -13,7 +13,7 @@ CLASS ltc_ci IMPLEMENTATION.
|
|||
|
||||
DATA lv_repo_url TYPE string.
|
||||
|
||||
IF zcl_abapgit_persist_factory=>get_settings( )->read( )->is_feature_enabled( 'PDTS' ) = abap_false.
|
||||
IF zcl_abapgit_feature=>is_enabled( 'PDTS' ) = abap_false.
|
||||
RETURN.
|
||||
ENDIF.
|
||||
|
||||
|
@ -53,7 +53,7 @@ CLASS ltc_smoke_test IMPLEMENTATION.
|
|||
|
||||
DATA ls_item TYPE zif_abapgit_definitions=>ty_item.
|
||||
|
||||
IF zcl_abapgit_persist_factory=>get_settings( )->read( )->is_feature_enabled( 'PDTS' ) = abap_false.
|
||||
IF zcl_abapgit_feature=>is_enabled( 'PDTS' ) = abap_false.
|
||||
RETURN.
|
||||
ENDIF.
|
||||
|
||||
|
@ -73,7 +73,7 @@ CLASS ltc_smoke_test IMPLEMENTATION.
|
|||
|
||||
METHOD run_simple_methods.
|
||||
|
||||
IF zcl_abapgit_persist_factory=>get_settings( )->read( )->is_feature_enabled( 'PDTS' ) = abap_false.
|
||||
IF zcl_abapgit_feature=>is_enabled( 'PDTS' ) = abap_false.
|
||||
RETURN.
|
||||
ENDIF.
|
||||
|
||||
|
|
|
@ -1000,7 +1000,7 @@ CLASS zcl_abapgit_gui_page_repo_over IMPLEMENTATION.
|
|||
|
||||
CREATE OBJECT ro_toolbar EXPORTING iv_id = 'toolbar-main'.
|
||||
|
||||
IF zcl_abapgit_persist_factory=>get_settings( )->read( )->is_feature_enabled( 'FLOW' ) = abap_true.
|
||||
IF zcl_abapgit_feature=>is_enabled( 'FLOW' ) = abap_true.
|
||||
ro_toolbar->add(
|
||||
iv_txt = zcl_abapgit_gui_buttons=>flow( )
|
||||
iv_act = zif_abapgit_definitions=>c_action-flow ).
|
||||
|
|
|
@ -51,7 +51,6 @@ CLASS zcl_abapgit_gui_page_sett_repo DEFINITION
|
|||
|
||||
DATA mo_repo TYPE REF TO zcl_abapgit_repo .
|
||||
DATA mv_requirements_count TYPE i .
|
||||
DATA mv_feature_enabled TYPE abap_bool.
|
||||
|
||||
METHODS validate_form
|
||||
IMPORTING
|
||||
|
@ -88,7 +87,6 @@ CLASS zcl_abapgit_gui_page_sett_repo IMPLEMENTATION.
|
|||
|
||||
" Feature for ABAP Language Version
|
||||
lo_settings = zcl_abapgit_persist_factory=>get_settings( )->read( ).
|
||||
mv_feature_enabled = lo_settings->is_feature_enabled( zcl_abapgit_abap_language_vers=>c_feature_flag ).
|
||||
|
||||
CREATE OBJECT mo_validation_log.
|
||||
CREATE OBJECT mo_form_data.
|
||||
|
@ -176,7 +174,7 @@ CLASS zcl_abapgit_gui_page_sett_repo IMPLEMENTATION.
|
|||
iv_label = 'Minimum Patch'
|
||||
iv_width = '30%' ).
|
||||
|
||||
IF mv_feature_enabled = abap_true.
|
||||
IF zcl_abapgit_feature=>is_enabled( zcl_abapgit_abap_language_vers=>c_feature_flag ) = abap_true.
|
||||
ro_form->radio(
|
||||
iv_name = c_id-abap_langu_vers
|
||||
iv_default_value = ''
|
||||
|
@ -310,7 +308,7 @@ CLASS zcl_abapgit_gui_page_sett_repo IMPLEMENTATION.
|
|||
iv_key = |{ c_id-requirements }-{ zif_abapgit_html_form=>c_rows }|
|
||||
iv_val = |{ mv_requirements_count }| ).
|
||||
|
||||
IF mv_feature_enabled = abap_true.
|
||||
IF zcl_abapgit_feature=>is_enabled( zcl_abapgit_abap_language_vers=>c_feature_flag ) = abap_true.
|
||||
ro_form_data->set(
|
||||
iv_key = c_id-abap_langu_vers
|
||||
iv_val = ls_dot-abap_language_version ).
|
||||
|
@ -334,7 +332,7 @@ CLASS zcl_abapgit_gui_page_sett_repo IMPLEMENTATION.
|
|||
lo_dot->set_starting_folder( mo_form_data->get( c_id-starting_folder ) ).
|
||||
lo_dot->set_version_constant( mo_form_data->get( c_id-version_constant ) ).
|
||||
|
||||
IF mv_feature_enabled = abap_true.
|
||||
IF zcl_abapgit_feature=>is_enabled( zcl_abapgit_abap_language_vers=>c_feature_flag ) = abap_true.
|
||||
lo_dot->set_abap_language_version( mo_form_data->get( c_id-abap_langu_vers ) ).
|
||||
ENDIF.
|
||||
|
||||
|
|
|
@ -62,13 +62,9 @@ CLASS zcl_abapgit_abap_language_vers IMPLEMENTATION.
|
|||
|
||||
METHOD constructor.
|
||||
|
||||
DATA lo_settings TYPE REF TO zcl_abapgit_settings.
|
||||
|
||||
mo_dot_abapgit = io_dot_abapgit.
|
||||
|
||||
lo_settings = zcl_abapgit_persist_factory=>get_settings( )->read( ).
|
||||
|
||||
IF lo_settings->is_feature_enabled( c_feature_flag ) = abap_false.
|
||||
IF zcl_abapgit_feature=>is_enabled( c_feature_flag ) = abap_false.
|
||||
mv_has_abap_language_vers = abap_false.
|
||||
ELSEIF get_abap_language_vers_by_repo( ) = zif_abapgit_dot_abapgit=>c_abap_language_version-undefined.
|
||||
mv_has_abap_language_vers = abap_false.
|
||||
|
|
|
@ -176,7 +176,6 @@ CLASS ltcl_abap_language_version IMPLEMENTATION.
|
|||
exp = iv_exp
|
||||
msg = |ABAP Language Version: { iv_version }, Cloud| ).
|
||||
|
||||
|
||||
ENDMETHOD.
|
||||
|
||||
METHOD repo_setting_feature_off.
|
||||
|
|
48
src/zcl_abapgit_feature.clas.abap
Normal file
48
src/zcl_abapgit_feature.clas.abap
Normal file
|
@ -0,0 +1,48 @@
|
|||
CLASS zcl_abapgit_feature DEFINITION
|
||||
PUBLIC
|
||||
FINAL
|
||||
CREATE PUBLIC.
|
||||
|
||||
PUBLIC SECTION.
|
||||
|
||||
" For dependency injection/testing, use the following
|
||||
" zcl_abapgit_persist_factory=>get_settings( )->read( )->set_experimental_features( )
|
||||
|
||||
CLASS-METHODS is_enabled
|
||||
IMPORTING
|
||||
!iv_feature TYPE string OPTIONAL
|
||||
RETURNING
|
||||
VALUE(rv_run) TYPE abap_bool.
|
||||
|
||||
PROTECTED SECTION.
|
||||
PRIVATE SECTION.
|
||||
ENDCLASS.
|
||||
|
||||
|
||||
|
||||
CLASS zcl_abapgit_feature IMPLEMENTATION.
|
||||
|
||||
|
||||
METHOD is_enabled.
|
||||
|
||||
DATA:
|
||||
lv_features TYPE string,
|
||||
lt_features TYPE string_table.
|
||||
|
||||
IF zcl_abapgit_factory=>get_environment( )->is_merged( ) = abap_true.
|
||||
RETURN.
|
||||
ENDIF.
|
||||
|
||||
lv_features = zcl_abapgit_persist_factory=>get_settings( )->read( )->get_experimental_features( ).
|
||||
CONDENSE lv_features NO-GAPS.
|
||||
|
||||
rv_run = boolc( lv_features = abap_true ).
|
||||
|
||||
IF iv_feature IS NOT INITIAL.
|
||||
SPLIT lv_features AT ',' INTO TABLE lt_features.
|
||||
READ TABLE lt_features TRANSPORTING NO FIELDS WITH TABLE KEY table_line = iv_feature.
|
||||
rv_run = boolc( rv_run = abap_true OR sy-subrc = 0 ).
|
||||
ENDIF.
|
||||
|
||||
ENDMETHOD.
|
||||
ENDCLASS.
|
101
src/zcl_abapgit_feature.clas.testclasses.abap
Normal file
101
src/zcl_abapgit_feature.clas.testclasses.abap
Normal file
|
@ -0,0 +1,101 @@
|
|||
CLASS ltcl_feature DEFINITION FOR TESTING RISK LEVEL HARMLESS
|
||||
DURATION SHORT FINAL.
|
||||
|
||||
PRIVATE SECTION.
|
||||
|
||||
DATA mo_settings TYPE REF TO zcl_abapgit_settings.
|
||||
DATA mo_cut TYPE REF TO zcl_abapgit_feature.
|
||||
|
||||
METHODS:
|
||||
setup,
|
||||
merged_disabled FOR TESTING,
|
||||
feature_disabled FOR TESTING,
|
||||
feature_enabled FOR TESTING.
|
||||
|
||||
ENDCLASS.
|
||||
|
||||
CLASS ltcl_feature IMPLEMENTATION.
|
||||
|
||||
METHOD setup.
|
||||
CREATE OBJECT mo_cut.
|
||||
mo_settings = zcl_abapgit_persist_factory=>get_settings( )->read( ).
|
||||
ENDMETHOD.
|
||||
|
||||
METHOD merged_disabled.
|
||||
|
||||
IF zcl_abapgit_factory=>get_environment( )->is_merged( ) = abap_true.
|
||||
|
||||
cl_abap_unit_assert=>assert_equals(
|
||||
act = mo_cut->is_enabled( )
|
||||
exp = abap_false ).
|
||||
|
||||
cl_abap_unit_assert=>assert_equals(
|
||||
act = mo_cut->is_enabled( 'TEST' )
|
||||
exp = abap_false ).
|
||||
|
||||
ENDIF.
|
||||
|
||||
ENDMETHOD.
|
||||
|
||||
METHOD feature_disabled.
|
||||
|
||||
" Only run for dev version
|
||||
IF zcl_abapgit_factory=>get_environment( )->is_merged( ) = abap_true.
|
||||
RETURN.
|
||||
ENDIF.
|
||||
|
||||
" All off
|
||||
mo_settings->set_experimental_features( '' ).
|
||||
|
||||
cl_abap_unit_assert=>assert_equals(
|
||||
act = mo_cut->is_enabled( 'TEST' )
|
||||
exp = abap_false ).
|
||||
|
||||
ENDMETHOD.
|
||||
|
||||
METHOD feature_enabled.
|
||||
|
||||
" Only run for dev version
|
||||
IF zcl_abapgit_factory=>get_environment( )->is_merged( ) = abap_true.
|
||||
RETURN.
|
||||
ENDIF.
|
||||
|
||||
" All on
|
||||
mo_settings->set_experimental_features( 'X' ).
|
||||
|
||||
cl_abap_unit_assert=>assert_equals(
|
||||
act = mo_cut->is_enabled( 'TEST' )
|
||||
exp = abap_true ).
|
||||
|
||||
" Just one feature on
|
||||
mo_settings->set_experimental_features( 'TEST' ).
|
||||
|
||||
cl_abap_unit_assert=>assert_equals(
|
||||
act = mo_cut->is_enabled( 'TEST' )
|
||||
exp = abap_true ).
|
||||
|
||||
" Several features on
|
||||
mo_settings->set_experimental_features( 'AFF,LXE' ).
|
||||
|
||||
cl_abap_unit_assert=>assert_equals(
|
||||
act = mo_cut->is_enabled( 'TEST' )
|
||||
exp = abap_false ).
|
||||
|
||||
cl_abap_unit_assert=>assert_equals(
|
||||
act = mo_cut->is_enabled( 'AFF' )
|
||||
exp = abap_true ).
|
||||
|
||||
" Several features on with whitespace
|
||||
mo_settings->set_experimental_features( ' AFF , FLOW ,LXE ' ).
|
||||
|
||||
cl_abap_unit_assert=>assert_equals(
|
||||
act = mo_cut->is_enabled( 'TEST' )
|
||||
exp = abap_false ).
|
||||
|
||||
cl_abap_unit_assert=>assert_equals(
|
||||
act = mo_cut->is_enabled( 'FLOW' )
|
||||
exp = abap_true ).
|
||||
|
||||
ENDMETHOD.
|
||||
|
||||
ENDCLASS.
|
17
src/zcl_abapgit_feature.clas.xml
Normal file
17
src/zcl_abapgit_feature.clas.xml
Normal file
|
@ -0,0 +1,17 @@
|
|||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<abapGit version="v1.0.0" serializer="LCL_OBJECT_CLAS" serializer_version="v1.0.0">
|
||||
<asx:abap xmlns:asx="http://www.sap.com/abapxml" version="1.0">
|
||||
<asx:values>
|
||||
<VSEOCLASS>
|
||||
<CLSNAME>ZCL_ABAPGIT_FEATURE</CLSNAME>
|
||||
<LANGU>E</LANGU>
|
||||
<DESCRIPT>abapGit - Feature</DESCRIPT>
|
||||
<STATE>1</STATE>
|
||||
<CLSCCINCL>X</CLSCCINCL>
|
||||
<FIXPT>X</FIXPT>
|
||||
<UNICODE>X</UNICODE>
|
||||
<WITH_UNIT_TESTS>X</WITH_UNIT_TESTS>
|
||||
</VSEOCLASS>
|
||||
</asx:values>
|
||||
</asx:abap>
|
||||
</abapGit>
|
|
@ -55,11 +55,6 @@ CLASS zcl_abapgit_settings DEFINITION
|
|||
METHODS get_experimental_features
|
||||
RETURNING
|
||||
VALUE(rv_features) TYPE string.
|
||||
METHODS is_feature_enabled
|
||||
IMPORTING
|
||||
!iv_feature TYPE string OPTIONAL
|
||||
RETURNING
|
||||
VALUE(rv_run) TYPE abap_bool.
|
||||
METHODS set_max_lines
|
||||
IMPORTING
|
||||
!iv_lines TYPE i .
|
||||
|
@ -338,19 +333,6 @@ CLASS zcl_abapgit_settings IMPLEMENTATION.
|
|||
ENDMETHOD.
|
||||
|
||||
|
||||
METHOD is_feature_enabled.
|
||||
DATA lt_features TYPE string_table.
|
||||
IF zcl_abapgit_factory=>get_environment( )->is_merged( ) = abap_false.
|
||||
rv_run = boolc( ms_settings-experimental_features = abap_true ).
|
||||
IF iv_feature IS NOT INITIAL.
|
||||
SPLIT ms_settings-experimental_features AT ',' INTO TABLE lt_features.
|
||||
READ TABLE lt_features TRANSPORTING NO FIELDS WITH TABLE KEY table_line = iv_feature.
|
||||
rv_run = boolc( rv_run = abap_true OR sy-subrc = 0 ).
|
||||
ENDIF.
|
||||
ENDIF.
|
||||
ENDMETHOD.
|
||||
|
||||
|
||||
METHOD set_activate_wo_popup.
|
||||
ms_user_settings-activate_wo_popup = iv_act_wo_popup.
|
||||
ENDMETHOD.
|
||||
|
|
|
@ -1,82 +0,0 @@
|
|||
CLASS ltcl_settings DEFINITION FOR TESTING RISK LEVEL HARMLESS
|
||||
DURATION SHORT FINAL.
|
||||
|
||||
PRIVATE SECTION.
|
||||
DATA mo_cut TYPE REF TO zcl_abapgit_settings.
|
||||
|
||||
METHODS:
|
||||
setup,
|
||||
feature_disabled FOR TESTING,
|
||||
feature_enabled FOR TESTING.
|
||||
|
||||
ENDCLASS.
|
||||
|
||||
CLASS ltcl_settings IMPLEMENTATION.
|
||||
|
||||
METHOD setup.
|
||||
CREATE OBJECT mo_cut.
|
||||
ENDMETHOD.
|
||||
|
||||
METHOD feature_disabled.
|
||||
|
||||
" Only run for dev version
|
||||
IF zcl_abapgit_factory=>get_environment( )->is_merged( ) = abap_true.
|
||||
RETURN.
|
||||
ENDIF.
|
||||
|
||||
" All off
|
||||
mo_cut->set_experimental_features( '' ).
|
||||
|
||||
cl_abap_unit_assert=>assert_equals(
|
||||
act = mo_cut->get_experimental_features( )
|
||||
exp = '' ).
|
||||
|
||||
cl_abap_unit_assert=>assert_equals(
|
||||
act = mo_cut->is_feature_enabled( 'TEST' )
|
||||
exp = abap_false ).
|
||||
|
||||
ENDMETHOD.
|
||||
|
||||
METHOD feature_enabled.
|
||||
|
||||
" Only run for dev version
|
||||
IF zcl_abapgit_factory=>get_environment( )->is_merged( ) = abap_true.
|
||||
RETURN.
|
||||
ENDIF.
|
||||
|
||||
" All on
|
||||
mo_cut->set_experimental_features( 'X' ).
|
||||
|
||||
cl_abap_unit_assert=>assert_equals(
|
||||
act = mo_cut->get_experimental_features( )
|
||||
exp = 'X' ).
|
||||
|
||||
cl_abap_unit_assert=>assert_equals(
|
||||
act = mo_cut->is_feature_enabled( 'TEST' )
|
||||
exp = abap_true ).
|
||||
|
||||
" Just one feature on
|
||||
mo_cut->set_experimental_features( 'TEST' ).
|
||||
|
||||
cl_abap_unit_assert=>assert_equals(
|
||||
act = mo_cut->get_experimental_features( )
|
||||
exp = 'TEST' ).
|
||||
|
||||
cl_abap_unit_assert=>assert_equals(
|
||||
act = mo_cut->is_feature_enabled( 'TEST' )
|
||||
exp = abap_true ).
|
||||
|
||||
" Several features on
|
||||
mo_cut->set_experimental_features( 'AFF,LXE' ).
|
||||
|
||||
cl_abap_unit_assert=>assert_equals(
|
||||
act = mo_cut->is_feature_enabled( 'TEST' )
|
||||
exp = abap_false ).
|
||||
|
||||
cl_abap_unit_assert=>assert_equals(
|
||||
act = mo_cut->is_feature_enabled( 'AFF' )
|
||||
exp = abap_true ).
|
||||
|
||||
ENDMETHOD.
|
||||
|
||||
ENDCLASS.
|
|
@ -10,7 +10,6 @@
|
|||
<CLSCCINCL>X</CLSCCINCL>
|
||||
<FIXPT>X</FIXPT>
|
||||
<UNICODE>X</UNICODE>
|
||||
<WITH_UNIT_TESTS>X</WITH_UNIT_TESTS>
|
||||
</VSEOCLASS>
|
||||
</asx:values>
|
||||
</asx:abap>
|
||||
|
|
Loading…
Reference in New Issue
Block a user