FUGR: Better maintenance view auto comments cleanups (#5622)

This commit is contained in:
Alexander Tsybulsky 2022-06-13 13:00:09 +03:00 committed by GitHub
parent 20e15a19c2
commit 380508d72c
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
5 changed files with 205 additions and 63 deletions

View File

@ -142,7 +142,7 @@ ENDCLASS.
CLASS zcl_abapgit_object_fugr IMPLEMENTATION. CLASS ZCL_ABAPGIT_OBJECT_FUGR IMPLEMENTATION.
METHOD check_rfc_parameters. METHOD check_rfc_parameters.
@ -853,10 +853,12 @@ CLASS zcl_abapgit_object_fugr IMPLEMENTATION.
APPEND ls_function TO rt_functions. APPEND ls_function TO rt_functions.
IF NOT lt_new_source IS INITIAL. IF NOT lt_new_source IS INITIAL.
strip_generation_comments( CHANGING ct_source = lt_new_source ).
zif_abapgit_object~mo_files->add_abap( zif_abapgit_object~mo_files->add_abap(
iv_extra = <ls_func>-funcname iv_extra = <ls_func>-funcname
it_abap = lt_new_source ). it_abap = lt_new_source ).
ELSE. ELSE.
strip_generation_comments( CHANGING ct_source = lt_source ).
zif_abapgit_object~mo_files->add_abap( zif_abapgit_object~mo_files->add_abap(
iv_extra = <ls_func>-funcname iv_extra = <ls_func>-funcname
it_abap = lt_source ). it_abap = lt_source ).

View File

@ -1,7 +1,12 @@
CLASS zcl_abapgit_objects_program DEFINITION PUBLIC INHERITING FROM zcl_abapgit_objects_super. CLASS zcl_abapgit_objects_program DEFINITION
PUBLIC
INHERITING FROM zcl_abapgit_objects_super
CREATE PUBLIC .
PUBLIC SECTION. PUBLIC SECTION.
TYPES: BEGIN OF ty_progdir,
TYPES:
BEGIN OF ty_progdir,
name TYPE progdir-name, name TYPE progdir-name,
state TYPE progdir-state, state TYPE progdir-state,
sqlx TYPE progdir-sqlx, sqlx TYPE progdir-sqlx,
@ -35,24 +40,27 @@ CLASS zcl_abapgit_objects_program DEFINITION PUBLIC INHERITING FROM zcl_abapgit_
END OF ty_progdir. END OF ty_progdir.
METHODS serialize_program METHODS serialize_program
IMPORTING io_xml TYPE REF TO zif_abapgit_xml_output OPTIONAL IMPORTING
is_item TYPE zif_abapgit_definitions=>ty_item !io_xml TYPE REF TO zif_abapgit_xml_output OPTIONAL
io_files TYPE REF TO zcl_abapgit_objects_files !is_item TYPE zif_abapgit_definitions=>ty_item
iv_program TYPE programm OPTIONAL !io_files TYPE REF TO zcl_abapgit_objects_files
iv_extra TYPE clike OPTIONAL !iv_program TYPE programm OPTIONAL
RAISING zcx_abapgit_exception. !iv_extra TYPE clike OPTIONAL
RAISING
zcx_abapgit_exception.
METHODS read_progdir METHODS read_progdir
IMPORTING iv_program TYPE programm IMPORTING
RETURNING VALUE(rs_progdir) TYPE ty_progdir. !iv_program TYPE programm
RETURNING
VALUE(rs_progdir) TYPE ty_progdir.
METHODS deserialize_program METHODS deserialize_program
IMPORTING is_progdir TYPE ty_progdir IMPORTING
it_source TYPE abaptxt255_tab !is_progdir TYPE ty_progdir
it_tpool TYPE textpool_table !it_source TYPE abaptxt255_tab
iv_package TYPE devclass !it_tpool TYPE textpool_table
RAISING zcx_abapgit_exception. !iv_package TYPE devclass
RAISING
zcx_abapgit_exception.
PROTECTED SECTION. PROTECTED SECTION.
TYPES: TYPES:
@ -85,7 +93,7 @@ CLASS zcl_abapgit_objects_program DEFINITION PUBLIC INHERITING FROM zcl_abapgit_
METHODS strip_generation_comments METHODS strip_generation_comments
CHANGING CHANGING
ct_source TYPE abaptxt255_tab. ct_source TYPE STANDARD TABLE. " tab of string or charX
METHODS serialize_dynpros METHODS serialize_dynpros
IMPORTING IMPORTING
!iv_program_name TYPE programm !iv_program_name TYPE programm
@ -192,7 +200,7 @@ ENDCLASS.
CLASS zcl_abapgit_objects_program IMPLEMENTATION. CLASS ZCL_ABAPGIT_OBJECTS_PROGRAM IMPLEMENTATION.
METHOD add_tpool. METHOD add_tpool.
@ -965,12 +973,20 @@ CLASS zcl_abapgit_objects_program IMPLEMENTATION.
METHOD strip_generation_comments. METHOD strip_generation_comments.
FIELD-SYMBOLS <lv_line> LIKE LINE OF ct_source. FIELD-SYMBOLS <lv_line> TYPE any. " Assuming CHAR (e.g. abaptxt255_tab) or string (FUGR)
IF ms_item-obj_type <> 'FUGR'. IF ms_item-obj_type <> 'FUGR'.
RETURN. RETURN.
ENDIF. ENDIF.
" Case 1: MV FM main prog and TOPs
READ TABLE ct_source INDEX 1 ASSIGNING <lv_line>.
IF sy-subrc = 0 AND <lv_line> CP '#**regenerated at *'.
DELETE ct_source INDEX 1.
RETURN.
ENDIF.
" Case 2: MV FM includes
IF lines( ct_source ) < 5. " Generation header length IF lines( ct_source ) < 5. " Generation header length
RETURN. RETURN.
ENDIF. ENDIF.

View File

@ -0,0 +1,122 @@
CLASS ltcl_test DEFINITION FINAL
FOR TESTING
RISK LEVEL HARMLESS
DURATION SHORT.
PRIVATE SECTION.
METHODS strip_generation_comments_1 FOR TESTING.
METHODS strip_generation_comments_2 FOR TESTING.
ENDCLASS.
CLASS zcl_abapgit_objects_program DEFINITION LOCAL FRIENDS ltcl_test.
CLASS ltcl_test IMPLEMENTATION.
METHOD strip_generation_comments_1.
DATA lo_cut TYPE REF TO zcl_abapgit_objects_program.
DATA ls_item TYPE zif_abapgit_definitions=>ty_item.
DATA lt_src_orig TYPE abaptxt255_tab.
DATA lt_src_act TYPE abaptxt255_tab.
DATA lt_src_exp TYPE abaptxt255_tab.
APPEND '*---------------------------------------------------------------------*' TO lt_src_orig.
APPEND '* view related data declarations' TO lt_src_orig.
APPEND '* generation date: 03.02.2022 at 13:19:02' TO lt_src_orig.
APPEND '* view maintenance generator version: #001407#' TO lt_src_orig.
APPEND '*---------------------------------------------------------------------*' TO lt_src_orig.
APPEND 'some code starts here' TO lt_src_orig.
APPEND '*---------------------------------------------------------------------*' TO lt_src_exp.
APPEND '* view related data declarations' TO lt_src_exp.
APPEND '*---------------------------------------------------------------------*' TO lt_src_exp.
APPEND 'some code starts here' TO lt_src_exp.
" case 1, not FUGR, should skip
ls_item-obj_type = 'PROG'.
CREATE OBJECT lo_cut
EXPORTING
iv_language = 'E'
is_item = ls_item.
lt_src_act = lt_src_orig.
lo_cut->strip_generation_comments( CHANGING ct_source = lt_src_act ).
cl_abap_unit_assert=>assert_equals(
act = lt_src_act
exp = lt_src_orig ).
" case 2, FUGR
ls_item-obj_type = 'FUGR'.
CREATE OBJECT lo_cut
EXPORTING
iv_language = 'E'
is_item = ls_item.
lt_src_act = lt_src_orig.
lo_cut->strip_generation_comments( CHANGING ct_source = lt_src_act ).
cl_abap_unit_assert=>assert_equals(
act = lt_src_act
exp = lt_src_exp ).
" case 3, wrong pattern
CLEAR lt_src_orig.
APPEND '*---------------------------------------------------------------------*' TO lt_src_orig.
APPEND '* extra line' TO lt_src_orig.
APPEND '* view related data declarations' TO lt_src_orig.
APPEND '* generation date: 03.02.2022 at 13:19:02' TO lt_src_orig.
APPEND '* view maintenance generator version: #001407#' TO lt_src_orig.
APPEND '*---------------------------------------------------------------------*' TO lt_src_orig.
APPEND 'some code starts here' TO lt_src_orig.
ls_item-obj_type = 'FUGR'.
CREATE OBJECT lo_cut
EXPORTING
iv_language = 'E'
is_item = ls_item.
lt_src_act = lt_src_orig.
lo_cut->strip_generation_comments( CHANGING ct_source = lt_src_act ).
cl_abap_unit_assert=>assert_equals(
act = lt_src_act
exp = lt_src_orig ).
ENDMETHOD.
METHOD strip_generation_comments_2.
DATA lo_cut TYPE REF TO zcl_abapgit_objects_program.
DATA ls_item TYPE zif_abapgit_definitions=>ty_item.
DATA lt_src_orig TYPE abaptxt255_tab.
DATA lt_src_act TYPE abaptxt255_tab.
DATA lt_src_exp TYPE abaptxt255_tab.
APPEND '* regenerated at 06.06.2022 10:47:40' TO lt_src_orig.
APPEND 'some code 1' TO lt_src_orig.
APPEND 'some code 2' TO lt_src_orig.
APPEND 'some code 3' TO lt_src_orig.
APPEND 'some code 4' TO lt_src_orig.
APPEND 'some code 5' TO lt_src_orig.
APPEND 'some code 1' TO lt_src_exp.
APPEND 'some code 2' TO lt_src_exp.
APPEND 'some code 3' TO lt_src_exp.
APPEND 'some code 4' TO lt_src_exp.
APPEND 'some code 5' TO lt_src_exp.
" case 1, not FUGR, should skip
ls_item-obj_type = 'FUGR'.
CREATE OBJECT lo_cut
EXPORTING
iv_language = 'E'
is_item = ls_item.
lt_src_act = lt_src_orig.
lo_cut->strip_generation_comments( CHANGING ct_source = lt_src_act ).
cl_abap_unit_assert=>assert_equals(
act = lt_src_act
exp = lt_src_exp ).
ENDMETHOD.
ENDCLASS.

View File

@ -10,6 +10,7 @@
<CLSCCINCL>X</CLSCCINCL> <CLSCCINCL>X</CLSCCINCL>
<FIXPT>X</FIXPT> <FIXPT>X</FIXPT>
<UNICODE>X</UNICODE> <UNICODE>X</UNICODE>
<WITH_UNIT_TESTS>X</WITH_UNIT_TESTS>
</VSEOCLASS> </VSEOCLASS>
</asx:values> </asx:values>
</asx:abap> </asx:abap>

View File

@ -133,7 +133,7 @@ ENDCLASS.
CLASS zcx_abapgit_exception IMPLEMENTATION. CLASS ZCX_ABAPGIT_EXCEPTION IMPLEMENTATION.
METHOD constructor ##ADT_SUPPRESS_GENERATION. METHOD constructor ##ADT_SUPPRESS_GENERATION.
@ -382,6 +382,16 @@ CLASS zcx_abapgit_exception IMPLEMENTATION.
ENDMETHOD. ENDMETHOD.
METHOD remove_newlines_from_string.
rv_result = iv_string.
REPLACE ALL OCCURRENCES OF ` ` && cl_abap_char_utilities=>cr_lf IN rv_result WITH ` `.
REPLACE ALL OCCURRENCES OF cl_abap_char_utilities=>cr_lf IN rv_result WITH ` `.
REPLACE ALL OCCURRENCES OF ` ` && cl_abap_char_utilities=>newline IN rv_result WITH ` `.
REPLACE ALL OCCURRENCES OF cl_abap_char_utilities=>newline IN rv_result WITH ` `.
ENDMETHOD.
METHOD replace_section_head_with_text. METHOD replace_section_head_with_text.
CASE cs_itf-tdline. CASE cs_itf-tdline.
@ -483,13 +493,4 @@ CLASS zcx_abapgit_exception IMPLEMENTATION.
rs_msg = ls_msg. rs_msg = ls_msg.
ENDMETHOD. ENDMETHOD.
METHOD remove_newlines_from_string.
rv_result = iv_string.
REPLACE ALL OCCURRENCES OF ` ` && cl_abap_char_utilities=>cr_lf IN rv_result WITH ` `.
REPLACE ALL OCCURRENCES OF cl_abap_char_utilities=>cr_lf IN rv_result WITH ` `.
REPLACE ALL OCCURRENCES OF ` ` && cl_abap_char_utilities=>newline IN rv_result WITH ` `.
REPLACE ALL OCCURRENCES OF cl_abap_char_utilities=>newline IN rv_result WITH ` `.
ENDMETHOD.
ENDCLASS. ENDCLASS.