mirror of
https://github.com/abapGit/abapGit.git
synced 2025-04-30 03:36:32 +08:00
Allow use of changelog feature without APACK (#5739)
This commit is contained in:
parent
b9bcf538a3
commit
125b529583
|
@ -5,6 +5,7 @@
|
|||
<MASTER_LANGUAGE>E</MASTER_LANGUAGE>
|
||||
<STARTING_FOLDER>/src/</STARTING_FOLDER>
|
||||
<FOLDER_LOGIC>PREFIX</FOLDER_LOGIC>
|
||||
<VERSION_CONSTANT>ZIF_ABAPGIT_VERSION=>C_ABAP_VERSION</VERSION_CONSTANT>
|
||||
</DATA>
|
||||
</asx:values>
|
||||
</asx:abap>
|
||||
|
|
|
@ -80,6 +80,10 @@ CLASS zcl_abapgit_dot_abapgit DEFINITION
|
|||
METHODS set_requirements
|
||||
IMPORTING
|
||||
!it_requirements TYPE zif_abapgit_dot_abapgit=>ty_requirement_tt .
|
||||
METHODS get_version_constant
|
||||
RETURNING VALUE(rv_version_constant) TYPE string.
|
||||
METHODS set_version_constant
|
||||
IMPORTING iv_version_constant TYPE csequence.
|
||||
|
||||
PROTECTED SECTION.
|
||||
PRIVATE SECTION.
|
||||
|
@ -313,6 +317,13 @@ CLASS zcl_abapgit_dot_abapgit IMPLEMENTATION.
|
|||
ms_data-starting_folder = iv_path.
|
||||
ENDMETHOD.
|
||||
|
||||
METHOD get_version_constant.
|
||||
rv_version_constant = ms_data-version_constant.
|
||||
ENDMETHOD.
|
||||
|
||||
METHOD set_version_constant.
|
||||
ms_data-version_constant = iv_version_constant.
|
||||
ENDMETHOD.
|
||||
|
||||
METHOD to_file.
|
||||
rs_file-path = zif_abapgit_definitions=>c_root_dir.
|
||||
|
@ -338,4 +349,5 @@ CLASS zcl_abapgit_dot_abapgit IMPLEMENTATION.
|
|||
ASSERT sy-subrc = 0.
|
||||
|
||||
ENDMETHOD.
|
||||
|
||||
ENDCLASS.
|
||||
|
|
|
@ -17,6 +17,7 @@ INTERFACE zif_abapgit_dot_abapgit PUBLIC.
|
|||
folder_logic TYPE string,
|
||||
ignore TYPE STANDARD TABLE OF string WITH DEFAULT KEY,
|
||||
requirements TYPE ty_requirement_tt,
|
||||
version_constant TYPE string,
|
||||
END OF ty_dot_abapgit .
|
||||
|
||||
CONSTANTS:
|
||||
|
|
|
@ -27,14 +27,16 @@ CLASS zcl_abapgit_gui_page_sett_repo DEFINITION
|
|||
|
||||
CONSTANTS:
|
||||
BEGIN OF c_id,
|
||||
dot TYPE string VALUE 'dot',
|
||||
main_language TYPE string VALUE 'main_language',
|
||||
i18n_langs TYPE string VALUE 'i18n_langs',
|
||||
starting_folder TYPE string VALUE 'starting_folder',
|
||||
folder_logic TYPE string VALUE 'folder_logic',
|
||||
ignore TYPE string VALUE 'ignore',
|
||||
requirements TYPE string VALUE 'requirements',
|
||||
END OF c_id .
|
||||
dot TYPE string VALUE 'dot',
|
||||
main_language TYPE string VALUE 'main_language',
|
||||
i18n_langs TYPE string VALUE 'i18n_langs',
|
||||
starting_folder TYPE string VALUE 'starting_folder',
|
||||
folder_logic TYPE string VALUE 'folder_logic',
|
||||
ignore TYPE string VALUE 'ignore',
|
||||
requirements TYPE string VALUE 'requirements',
|
||||
version_constant TYPE string VALUE 'version_constant',
|
||||
version_value TYPE string VALUE 'version_value',
|
||||
END OF c_id.
|
||||
CONSTANTS:
|
||||
BEGIN OF c_event,
|
||||
save TYPE string VALUE 'save',
|
||||
|
@ -160,6 +162,14 @@ CLASS zcl_abapgit_gui_page_sett_repo IMPLEMENTATION.
|
|||
)->column(
|
||||
iv_label = 'Minimum Patch'
|
||||
iv_width = '30%'
|
||||
)->text(
|
||||
iv_name = c_id-version_constant
|
||||
iv_label = 'Version Constant'
|
||||
iv_placeholder = 'ZVERSION_CLASS=>VERSION_CONSTANT'
|
||||
)->text(
|
||||
iv_name = c_id-version_value
|
||||
iv_label = 'Version Value'
|
||||
iv_readonly = abap_true
|
||||
)->command(
|
||||
iv_label = 'Save Settings'
|
||||
iv_cmd_type = zif_abapgit_html_form=>c_cmd_type-input_main
|
||||
|
@ -210,6 +220,18 @@ CLASS zcl_abapgit_gui_page_sett_repo IMPLEMENTATION.
|
|||
mo_form_data->set(
|
||||
iv_key = c_id-starting_folder
|
||||
iv_val = ls_dot-starting_folder ).
|
||||
mo_form_data->set(
|
||||
iv_key = c_id-version_constant
|
||||
iv_val = ls_dot-version_constant ).
|
||||
TRY.
|
||||
mo_form_data->set(
|
||||
iv_key = c_id-version_value
|
||||
iv_val = zcl_abapgit_version=>get_version_constant_value( ls_dot-version_constant ) ).
|
||||
CATCH zcx_abapgit_exception.
|
||||
mo_form_data->set(
|
||||
iv_key = c_id-version_value
|
||||
iv_val = '' ).
|
||||
ENDTRY.
|
||||
|
||||
lv_ignore = concat_lines_of(
|
||||
table = ls_dot-ignore
|
||||
|
@ -270,6 +292,7 @@ CLASS zcl_abapgit_gui_page_sett_repo IMPLEMENTATION.
|
|||
|
||||
lo_dot->set_folder_logic( mo_form_data->get( c_id-folder_logic ) ).
|
||||
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 ) ).
|
||||
|
||||
lo_dot->set_i18n_languages(
|
||||
zcl_abapgit_lxe_texts=>convert_lang_string_to_table(
|
||||
|
@ -322,11 +345,13 @@ CLASS zcl_abapgit_gui_page_sett_repo IMPLEMENTATION.
|
|||
METHOD validate_form.
|
||||
|
||||
DATA:
|
||||
lv_folder TYPE string,
|
||||
lv_len TYPE i,
|
||||
lv_component TYPE zif_abapgit_dot_abapgit=>ty_requirement-component,
|
||||
lv_min_release TYPE zif_abapgit_dot_abapgit=>ty_requirement-min_release,
|
||||
lv_min_patch TYPE zif_abapgit_dot_abapgit=>ty_requirement-min_patch.
|
||||
lv_folder TYPE string,
|
||||
lv_len TYPE i,
|
||||
lv_component TYPE zif_abapgit_dot_abapgit=>ty_requirement-component,
|
||||
lv_min_release TYPE zif_abapgit_dot_abapgit=>ty_requirement-min_release,
|
||||
lv_min_patch TYPE zif_abapgit_dot_abapgit=>ty_requirement-min_patch,
|
||||
lv_version_constant TYPE string,
|
||||
lx_exception TYPE REF TO zcx_abapgit_exception.
|
||||
|
||||
ro_validation_log = mo_form_util->validate( io_form_data ).
|
||||
|
||||
|
@ -362,6 +387,17 @@ CLASS zcl_abapgit_gui_page_sett_repo IMPLEMENTATION.
|
|||
ENDIF.
|
||||
ENDDO.
|
||||
|
||||
TRY.
|
||||
lv_version_constant = io_form_data->get( c_id-version_constant ).
|
||||
IF lv_version_constant IS NOT INITIAL.
|
||||
zcl_abapgit_version=>get_version_constant_value( lv_version_constant ).
|
||||
ENDIF.
|
||||
CATCH zcx_abapgit_exception INTO lx_exception.
|
||||
ro_validation_log->set(
|
||||
iv_key = c_id-version_constant
|
||||
iv_val = lx_exception->get_text( ) ).
|
||||
ENDTRY.
|
||||
|
||||
ENDMETHOD.
|
||||
|
||||
|
||||
|
|
|
@ -108,12 +108,13 @@ CLASS zcl_abapgit_news IMPLEMENTATION.
|
|||
lc_log_filename TYPE string VALUE 'changelog*',
|
||||
lc_log_filename_up TYPE string VALUE 'CHANGELOG*'.
|
||||
|
||||
DATA: lo_apack TYPE REF TO zcl_abapgit_apack_reader,
|
||||
lt_remote TYPE zif_abapgit_definitions=>ty_files_tt,
|
||||
lv_version TYPE string,
|
||||
lv_last_seen TYPE string,
|
||||
lv_url TYPE string,
|
||||
lo_repo_online TYPE REF TO zcl_abapgit_repo_online.
|
||||
DATA: lo_apack TYPE REF TO zcl_abapgit_apack_reader,
|
||||
lt_remote TYPE zif_abapgit_definitions=>ty_files_tt,
|
||||
lv_version TYPE string,
|
||||
lv_last_seen TYPE string,
|
||||
lv_url TYPE string,
|
||||
lo_repo_online TYPE REF TO zcl_abapgit_repo_online,
|
||||
lv_version_constant TYPE zif_abapgit_dot_abapgit=>ty_dot_abapgit-version_constant.
|
||||
|
||||
FIELD-SYMBOLS <ls_file> LIKE LINE OF lt_remote.
|
||||
|
||||
|
@ -125,17 +126,20 @@ CLASS zcl_abapgit_news IMPLEMENTATION.
|
|||
lo_repo_online ?= io_repo.
|
||||
lv_url = lo_repo_online->get_url( ).
|
||||
|
||||
IF zcl_abapgit_url=>is_abapgit_repo( lv_url ) = abap_true.
|
||||
lv_version = zif_abapgit_version=>c_abap_version. " TODO refactor
|
||||
ELSE.
|
||||
|
||||
lo_apack = io_repo->get_dot_apack( ).
|
||||
IF lo_apack IS NOT BOUND.
|
||||
RETURN.
|
||||
ENDIF.
|
||||
|
||||
lo_apack = io_repo->get_dot_apack( ).
|
||||
IF lo_apack IS BOUND.
|
||||
lv_version = lo_apack->get_manifest_descriptor( )-version.
|
||||
ENDIF.
|
||||
|
||||
IF lv_version IS INITIAL.
|
||||
TRY.
|
||||
lv_version_constant = io_repo->get_dot_abapgit( )->get_version_constant( ).
|
||||
IF lv_version_constant IS NOT INITIAL.
|
||||
lv_version = zcl_abapgit_version=>get_version_constant_value( lv_version_constant ).
|
||||
ENDIF.
|
||||
CATCH zcx_abapgit_exception.
|
||||
CLEAR lv_version.
|
||||
ENDTRY.
|
||||
ENDIF.
|
||||
|
||||
IF lv_version IS INITIAL.
|
||||
|
|
|
@ -31,6 +31,21 @@ CLASS zcl_abapgit_version DEFINITION
|
|||
!is_b TYPE zif_abapgit_definitions=>ty_version OPTIONAL
|
||||
RETURNING
|
||||
VALUE(rv_result) TYPE i .
|
||||
CLASS-METHODS get_version_constant_value
|
||||
IMPORTING
|
||||
iv_version_constant TYPE string
|
||||
RETURNING
|
||||
VALUE(rv_version) TYPE string
|
||||
RAISING
|
||||
zcx_abapgit_exception.
|
||||
CLASS-METHODS parse_version_from_source
|
||||
IMPORTING
|
||||
it_source TYPE string_table
|
||||
iv_component_name TYPE csequence
|
||||
RETURNING
|
||||
VALUE(rv_version) TYPE string
|
||||
RAISING
|
||||
zcx_abapgit_exception.
|
||||
PROTECTED SECTION.
|
||||
PRIVATE SECTION.
|
||||
|
||||
|
@ -242,4 +257,118 @@ CLASS zcl_abapgit_version IMPLEMENTATION.
|
|||
rv_version = lv_major * 1000000 + lv_minor * 1000 + lv_release.
|
||||
|
||||
ENDMETHOD.
|
||||
|
||||
METHOD get_version_constant_value.
|
||||
DATA: lv_version_class TYPE string,
|
||||
lv_version_component TYPE string.
|
||||
FIELD-SYMBOLS: <lv_version> TYPE string.
|
||||
|
||||
IF iv_version_constant NP '*=>*'.
|
||||
zcx_abapgit_exception=>raise( 'Version constant needs to use the format CLASS=>CONSTANT' ).
|
||||
ENDIF.
|
||||
|
||||
SPLIT iv_version_constant AT '=>' INTO lv_version_class lv_version_component.
|
||||
IF sy-subrc <> 0 OR lv_version_class IS INITIAL OR lv_version_component IS INITIAL.
|
||||
zcx_abapgit_exception=>raise( 'Version constant cannot be parsed' ).
|
||||
ENDIF.
|
||||
|
||||
ASSIGN (lv_version_class)=>(lv_version_component) TO <lv_version>.
|
||||
IF sy-subrc = 0.
|
||||
rv_version = <lv_version>.
|
||||
ELSE.
|
||||
zcx_abapgit_exception=>raise( |Could not access version at class { lv_version_class } component | &&
|
||||
|{ lv_version_component }| ).
|
||||
ENDIF.
|
||||
ENDMETHOD.
|
||||
|
||||
METHOD parse_version_from_source.
|
||||
TYPES: ty_statement TYPE c LENGTH 40.
|
||||
CONSTANTS: BEGIN OF c_token_types,
|
||||
identifier TYPE stokes-type VALUE 'I',
|
||||
literal TYPE stokes-type VALUE 'S',
|
||||
END OF c_token_types.
|
||||
DATA: lt_keyword_filter TYPE STANDARD TABLE OF ty_statement,
|
||||
lt_statements TYPE sstmnt_tab,
|
||||
lt_tokens TYPE stokes_tab,
|
||||
lt_structures TYPE sstruc_tab,
|
||||
lv_found_token_index TYPE i,
|
||||
lv_component_name TYPE string,
|
||||
lv_version_length TYPE i.
|
||||
FIELD-SYMBOLS: <ls_structure> TYPE sstruc,
|
||||
<ls_statement> TYPE sstmnt,
|
||||
<ls_token> TYPE stokes.
|
||||
|
||||
IF iv_component_name CA '-'.
|
||||
zcx_abapgit_exception=>raise( 'Structured version constants are not supported' ).
|
||||
ENDIF.
|
||||
|
||||
lv_component_name = condense( to_upper( iv_component_name ) ).
|
||||
|
||||
APPEND 'CONSTANTS' TO lt_keyword_filter.
|
||||
|
||||
SCAN ABAP-SOURCE it_source
|
||||
KEYWORDS FROM lt_keyword_filter
|
||||
STATEMENTS INTO lt_statements
|
||||
TOKENS INTO lt_tokens
|
||||
STRUCTURES INTO lt_structures.
|
||||
IF sy-subrc <> 0.
|
||||
zcx_abapgit_exception=>raise( 'Source code could not be parsed to extract version (syntax error?)' ).
|
||||
ENDIF.
|
||||
|
||||
READ TABLE lt_structures ASSIGNING <ls_structure> WITH KEY type = 'P'.
|
||||
IF sy-subrc <> 0.
|
||||
zcx_abapgit_exception=>raise( 'Could not find top level structure to parse version constant' ).
|
||||
ENDIF.
|
||||
|
||||
LOOP AT lt_statements FROM <ls_structure>-stmnt_from TO <ls_structure>-stmnt_to ASSIGNING <ls_statement>.
|
||||
LOOP AT lt_tokens FROM <ls_statement>-from TO <ls_statement>-to
|
||||
TRANSPORTING NO FIELDS
|
||||
WHERE type = c_token_types-identifier AND str = lv_component_name.
|
||||
lv_found_token_index = sy-tabix.
|
||||
EXIT.
|
||||
ENDLOOP.
|
||||
|
||||
IF sy-subrc = 0.
|
||||
LOOP AT lt_tokens FROM lv_found_token_index TO <ls_statement>-to
|
||||
TRANSPORTING NO FIELDS
|
||||
WHERE type = c_token_types-identifier AND str = 'VALUE'.
|
||||
lv_found_token_index = sy-tabix.
|
||||
EXIT.
|
||||
ENDLOOP.
|
||||
|
||||
IF lv_found_token_index + 1 > <ls_statement>-to.
|
||||
zcx_abapgit_exception=>raise( 'Internal error parsing version constant' ).
|
||||
ENDIF.
|
||||
|
||||
READ TABLE lt_tokens INDEX lv_found_token_index + 1 ASSIGNING <ls_token>.
|
||||
IF sy-subrc <> 0.
|
||||
zcx_abapgit_exception=>raise( 'Internal error parsing version constant' ).
|
||||
ENDIF.
|
||||
|
||||
CASE <ls_token>-type.
|
||||
WHEN c_token_types-identifier.
|
||||
rv_version = <ls_token>-str.
|
||||
IF rv_version(1) CA sy-abcde.
|
||||
zcx_abapgit_exception=>raise(
|
||||
'References to other constants are not supported in version constant value' ).
|
||||
ENDIF.
|
||||
WHEN c_token_types-literal.
|
||||
rv_version = <ls_token>-str.
|
||||
IF rv_version CP '`*`' OR rv_version CP `'*'`.
|
||||
lv_version_length = strlen( rv_version ).
|
||||
rv_version = substring(
|
||||
val = rv_version
|
||||
off = 1
|
||||
len = lv_version_length - 2 ).
|
||||
ENDIF.
|
||||
ENDCASE.
|
||||
|
||||
CONDENSE rv_version.
|
||||
|
||||
RETURN.
|
||||
ENDIF.
|
||||
ENDLOOP.
|
||||
|
||||
zcx_abapgit_exception=>raise( |Could not parse version constant { iv_component_name }| ).
|
||||
ENDMETHOD.
|
||||
ENDCLASS.
|
||||
|
|
|
@ -82,3 +82,263 @@ CLASS ltcl_version IMPLEMENTATION.
|
|||
ENDMETHOD.
|
||||
|
||||
ENDCLASS.
|
||||
|
||||
CLASS ltcl_version_parse DEFINITION FOR TESTING DURATION SHORT RISK LEVEL HARMLESS.
|
||||
PUBLIC SECTION.
|
||||
METHODS:
|
||||
abapgit_version FOR TESTING,
|
||||
interface1 FOR TESTING,
|
||||
interface2 FOR TESTING,
|
||||
class1 FOR TESTING,
|
||||
class_private FOR TESTING,
|
||||
structured_constant FOR TESTING,
|
||||
int4 FOR TESTING,
|
||||
decfloat34 FOR TESTING,
|
||||
syntax_error FOR TESTING,
|
||||
class_data FOR TESTING,
|
||||
ampersand FOR TESTING,
|
||||
constant_reference FOR TESTING,
|
||||
missing_constant FOR TESTING.
|
||||
PRIVATE SECTION.
|
||||
DATA:
|
||||
mt_given_source TYPE string_table,
|
||||
mv_given_component_name TYPE string,
|
||||
mv_parsed_version TYPE string,
|
||||
mo_raised_exception TYPE REF TO zcx_abapgit_exception.
|
||||
METHODS:
|
||||
given_the_source IMPORTING it_source TYPE string_table,
|
||||
given_the_component_name IMPORTING iv_component_name TYPE string,
|
||||
when_parse_is_called,
|
||||
then_should_raise_exception,
|
||||
then_version_should_equal IMPORTING iv_version TYPE string,
|
||||
teardown.
|
||||
ENDCLASS.
|
||||
|
||||
CLASS ltcl_version_parse IMPLEMENTATION.
|
||||
METHOD abapgit_version.
|
||||
DATA: lt_source TYPE string_table.
|
||||
|
||||
IF zcl_abapgit_factory=>get_environment( )->is_merged( ) = abap_true.
|
||||
cl_abap_unit_assert=>skip( 'Test method not supported in standalone version' ).
|
||||
ENDIF.
|
||||
|
||||
READ REPORT 'ZIF_ABAPGIT_VERSION===========IU' INTO lt_source STATE 'A'.
|
||||
cl_abap_unit_assert=>assert_subrc( ).
|
||||
|
||||
given_the_source( lt_source ).
|
||||
given_the_component_name( 'C_ABAP_VERSION' ).
|
||||
when_parse_is_called( ).
|
||||
then_version_should_equal( zif_abapgit_version=>c_abap_version ).
|
||||
ENDMETHOD.
|
||||
|
||||
METHOD interface1.
|
||||
DATA: lt_source TYPE string_table.
|
||||
|
||||
APPEND 'INTERFACE version.' TO lt_source.
|
||||
APPEND ' CONSTANTS:' TO lt_source.
|
||||
APPEND ' version TYPE string VALUE `1.2.3`.' TO lt_source.
|
||||
APPEND 'ENDINTERFACE.' TO lt_source.
|
||||
|
||||
given_the_source( lt_source ).
|
||||
given_the_component_name( 'VERSION' ).
|
||||
when_parse_is_called( ).
|
||||
then_version_should_equal( '1.2.3' ).
|
||||
ENDMETHOD.
|
||||
|
||||
METHOD interface2.
|
||||
DATA: lt_source TYPE string_table.
|
||||
|
||||
APPEND 'INTERFACE version.' TO lt_source.
|
||||
APPEND ' CONSTANTS version TYPE string VALUE `1.2.3`.' TO lt_source.
|
||||
APPEND 'ENDINTERFACE.' TO lt_source.
|
||||
|
||||
given_the_source( lt_source ).
|
||||
given_the_component_name( 'VERSION' ).
|
||||
when_parse_is_called( ).
|
||||
then_version_should_equal( '1.2.3' ).
|
||||
ENDMETHOD.
|
||||
|
||||
METHOD class1.
|
||||
DATA: lt_source TYPE string_table.
|
||||
|
||||
APPEND 'CLASS version DEFINITION CREATE PRIVATE PUBLIC.' TO lt_source.
|
||||
APPEND ' PUBLIC SECTION.' TO lt_source.
|
||||
APPEND ' CONSTANTS:' TO lt_source.
|
||||
APPEND ' version TYPE string VALUE `1.2.3`.' TO lt_source.
|
||||
APPEND 'ENDCLASS.' TO lt_source.
|
||||
|
||||
given_the_source( lt_source ).
|
||||
given_the_component_name( 'VERSION' ).
|
||||
when_parse_is_called( ).
|
||||
then_version_should_equal( '1.2.3' ).
|
||||
ENDMETHOD.
|
||||
|
||||
METHOD class_private.
|
||||
DATA: lt_source TYPE string_table.
|
||||
|
||||
APPEND 'CLASS version DEFINITION CREATE PRIVATE PUBLIC.' TO lt_source.
|
||||
APPEND ' PRIVATE SECTION.' TO lt_source.
|
||||
APPEND ' CONSTANTS:' TO lt_source.
|
||||
APPEND ' version TYPE string VALUE `1.2.3`.' TO lt_source.
|
||||
APPEND 'ENDCLASS.' TO lt_source.
|
||||
|
||||
given_the_source( lt_source ).
|
||||
given_the_component_name( 'VERSION' ).
|
||||
when_parse_is_called( ).
|
||||
then_version_should_equal( '1.2.3' ).
|
||||
ENDMETHOD.
|
||||
|
||||
METHOD structured_constant.
|
||||
DATA: lt_source TYPE string_table.
|
||||
|
||||
APPEND 'INTERFACE version.' TO lt_source.
|
||||
APPEND ' CONSTANTS:' TO lt_source.
|
||||
APPEND ' BEGIN OF structure,' TO lt_source.
|
||||
APPEND ' BEGIN OF inner_structure,' TO lt_source.
|
||||
APPEND ' version TYPE string VALUE `1.0.0`,' TO lt_source.
|
||||
APPEND ' text TYPE string VALUE `inner`,' TO lt_source.
|
||||
APPEND ' END OF inner_structre,' TO lt_source.
|
||||
APPEND ' outer_text TYPE string VALUE `outer`,' TO lt_source.
|
||||
APPEND ' END OF structure.' TO lt_source.
|
||||
APPEND 'ENDINTERFACE.' TO lt_source.
|
||||
|
||||
given_the_source( lt_source ).
|
||||
given_the_component_name( 'STRUCTURE-INNER_STRUCTURE-VERSION' ).
|
||||
when_parse_is_called( ).
|
||||
then_should_raise_exception( ).
|
||||
ENDMETHOD.
|
||||
|
||||
METHOD int4.
|
||||
DATA: lt_source TYPE string_table.
|
||||
|
||||
APPEND 'INTERFACE version DEFINITION CREATE PRIVATE PUBLIC.' TO lt_source.
|
||||
APPEND ' CONSTANTS:' TO lt_source.
|
||||
APPEND ' version TYPE i VALUE 6.' TO lt_source.
|
||||
APPEND 'ENDINTERFACE.' TO lt_source.
|
||||
|
||||
given_the_source( lt_source ).
|
||||
given_the_component_name( 'VERSION' ).
|
||||
when_parse_is_called( ).
|
||||
then_version_should_equal( '6' ).
|
||||
ENDMETHOD.
|
||||
|
||||
METHOD decfloat34.
|
||||
DATA: lt_source TYPE string_table.
|
||||
|
||||
APPEND 'INTERFACE version DEFINITION CREATE PRIVATE PUBLIC.' TO lt_source.
|
||||
APPEND ' CONSTANTS:' TO lt_source.
|
||||
APPEND ` version TYPE decfloat34 VALUE '3.14'.` TO lt_source.
|
||||
APPEND 'ENDINTERFACE.' TO lt_source.
|
||||
|
||||
given_the_source( lt_source ).
|
||||
given_the_component_name( 'VERSION' ).
|
||||
when_parse_is_called( ).
|
||||
then_version_should_equal( '3.14' ).
|
||||
ENDMETHOD.
|
||||
|
||||
METHOD syntax_error.
|
||||
DATA: lt_source TYPE string_table.
|
||||
|
||||
APPEND 'INTERFACE version.' TO lt_source.
|
||||
APPEND ' CONSTANTS:' TO lt_source.
|
||||
APPEND ' version TYPE string VAL `1.2.3`.' TO lt_source.
|
||||
APPEND 'ENDINTERFACE.' TO lt_source.
|
||||
|
||||
given_the_source( lt_source ).
|
||||
given_the_component_name( 'VERSION' ).
|
||||
when_parse_is_called( ).
|
||||
then_should_raise_exception( ).
|
||||
ENDMETHOD.
|
||||
|
||||
METHOD class_data.
|
||||
DATA: lt_source TYPE string_table.
|
||||
|
||||
APPEND 'INTERFACE version.' TO lt_source.
|
||||
APPEND ' CLASS-DATA:' TO lt_source.
|
||||
APPEND ' version TYPE string VALUE `1.2.3`.' TO lt_source.
|
||||
APPEND 'ENDINTERFACE.' TO lt_source.
|
||||
|
||||
given_the_source( lt_source ).
|
||||
given_the_component_name( 'VERSION' ).
|
||||
when_parse_is_called( ).
|
||||
then_should_raise_exception( ).
|
||||
ENDMETHOD.
|
||||
|
||||
METHOD ampersand.
|
||||
DATA: lt_source TYPE string_table.
|
||||
|
||||
APPEND 'INTERFACE version.' TO lt_source.
|
||||
APPEND ' CONSTANTS:' TO lt_source.
|
||||
APPEND ' version TYPE string VALUE `1` &' TO lt_source.
|
||||
APPEND ' `.2` & `.3`.' TO lt_source.
|
||||
APPEND 'ENDINTERFACE.' TO lt_source.
|
||||
|
||||
given_the_source( lt_source ).
|
||||
given_the_component_name( 'VERSION' ).
|
||||
when_parse_is_called( ).
|
||||
then_version_should_equal( '1.2.3' ).
|
||||
ENDMETHOD.
|
||||
|
||||
METHOD constant_reference.
|
||||
DATA: lt_source TYPE string_table.
|
||||
|
||||
APPEND 'INTERFACE version.' TO lt_source.
|
||||
APPEND ' CONSTANTS:' TO lt_source.
|
||||
APPEND ' actual_version TYPE string VALUE `1.2.3`,' TO lt_source.
|
||||
APPEND ' version TYPE string VALUE actual_version.' TO lt_source.
|
||||
APPEND 'ENDINTERFACE.' TO lt_source.
|
||||
|
||||
given_the_source( lt_source ).
|
||||
given_the_component_name( 'VERSION' ).
|
||||
when_parse_is_called( ).
|
||||
then_should_raise_exception( ).
|
||||
ENDMETHOD.
|
||||
|
||||
METHOD missing_constant.
|
||||
DATA: lt_source TYPE string_table.
|
||||
|
||||
APPEND 'INTERFACE version.' TO lt_source.
|
||||
APPEND ' CONSTANTS:' TO lt_source.
|
||||
APPEND ' version TYPE string VALUE `1.2.3`.' TO lt_source.
|
||||
APPEND 'ENDINTERFACE.' TO lt_source.
|
||||
|
||||
given_the_source( lt_source ).
|
||||
given_the_component_name( 'SOME_MISSING_CONSTANT' ).
|
||||
when_parse_is_called( ).
|
||||
then_should_raise_exception( ).
|
||||
ENDMETHOD.
|
||||
|
||||
METHOD given_the_source.
|
||||
mt_given_source = it_source.
|
||||
ENDMETHOD.
|
||||
|
||||
METHOD given_the_component_name.
|
||||
mv_given_component_name = iv_component_name.
|
||||
ENDMETHOD.
|
||||
|
||||
METHOD when_parse_is_called.
|
||||
TRY.
|
||||
mv_parsed_version = zcl_abapgit_version=>parse_version_from_source(
|
||||
it_source = mt_given_source
|
||||
iv_component_name = mv_given_component_name ).
|
||||
CATCH zcx_abapgit_exception INTO mo_raised_exception ##NO_HANDLER.
|
||||
ENDTRY.
|
||||
ENDMETHOD.
|
||||
|
||||
METHOD then_should_raise_exception.
|
||||
cl_abap_unit_assert=>assert_bound( mo_raised_exception ).
|
||||
ENDMETHOD.
|
||||
|
||||
METHOD then_version_should_equal.
|
||||
cl_abap_unit_assert=>assert_equals(
|
||||
exp = iv_version
|
||||
act = mv_parsed_version ).
|
||||
ENDMETHOD.
|
||||
|
||||
METHOD teardown.
|
||||
CLEAR mt_given_source.
|
||||
CLEAR mv_given_component_name.
|
||||
CLEAR mv_parsed_version.
|
||||
FREE mo_raised_exception.
|
||||
ENDMETHOD.
|
||||
ENDCLASS.
|
||||
|
|
|
@ -203,6 +203,21 @@
|
|||
{"object": "ZCL_ABAPGIT_FILE_DESERIALIZE", "class": "ltcl_prio_deserialization", "method": "xslt_before_prog", "note": "hmm, something with promises?"},
|
||||
|
||||
{"object": "ZCL_ABAPGIT_DOT_ABAPGIT", "class": "ltcl_dot_abapgit", "method": "identity", "note": "cx_xslt_runtime_error"},
|
||||
|
||||
{"object": "ZCL_ABAPGIT_VERSION", "class": "ltcl_version_parse", "method": "abapgit_version", "note": "SCAN-ABAP-SOURCE"},
|
||||
{"object": "ZCL_ABAPGIT_VERSION", "class": "ltcl_version_parse", "method": "interface1", "note": "SCAN-ABAP-SOURCE"},
|
||||
{"object": "ZCL_ABAPGIT_VERSION", "class": "ltcl_version_parse", "method": "interface2", "note": "SCAN-ABAP-SOURCE"},
|
||||
{"object": "ZCL_ABAPGIT_VERSION", "class": "ltcl_version_parse", "method": "class1", "note": "SCAN-ABAP-SOURCE"},
|
||||
{"object": "ZCL_ABAPGIT_VERSION", "class": "ltcl_version_parse", "method": "class_private", "note": "SCAN-ABAP-SOURCE"},
|
||||
{"object": "ZCL_ABAPGIT_VERSION", "class": "ltcl_version_parse", "method": "structured_constant", "note": "SCAN-ABAP-SOURCE"},
|
||||
{"object": "ZCL_ABAPGIT_VERSION", "class": "ltcl_version_parse", "method": "int4", "note": "SCAN-ABAP-SOURCE"},
|
||||
{"object": "ZCL_ABAPGIT_VERSION", "class": "ltcl_version_parse", "method": "decfloat34", "note": "SCAN-ABAP-SOURCE"},
|
||||
{"object": "ZCL_ABAPGIT_VERSION", "class": "ltcl_version_parse", "method": "syntax_error", "note": "SCAN-ABAP-SOURCE"},
|
||||
{"object": "ZCL_ABAPGIT_VERSION", "class": "ltcl_version_parse", "method": "class_data", "note": "SCAN-ABAP-SOURCE"},
|
||||
{"object": "ZCL_ABAPGIT_VERSION", "class": "ltcl_version_parse", "method": "ampersand", "note": "SCAN-ABAP-SOURCE"},
|
||||
{"object": "ZCL_ABAPGIT_VERSION", "class": "ltcl_version_parse", "method": "constant_reference", "note": "SCAN-ABAP-SOURCE"},
|
||||
{"object": "ZCL_ABAPGIT_VERSION", "class": "ltcl_version_parse", "method": "missing_constant", "note": "SCAN-ABAP-SOURCE"},
|
||||
|
||||
{"object": "ZCL_ABAPGIT_REPO", "class": "ltcl_find_remote_dot_abapgit", "method": "positive", "note": "passing data to super constructor()? ASSERT failed"},
|
||||
{"object": "ZCL_ABAPGIT_REPO", "class": "ltcl_find_remote_dot_abapgit", "method": "new_repo_needs_no_dot_abapgit", "note": "passing data to super constructor()? ASSERT failed"},
|
||||
|
||||
|
|
Loading…
Reference in New Issue
Block a user