Fix message helper (#3482)

* Fix message helper

Split text didn't work if message has space at offset 51

* Add unit tests
This commit is contained in:
Marc Bernard 2020-06-12 07:11:57 +02:00 committed by GitHub
parent 256fdbeec4
commit 91f25304ce
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
3 changed files with 122 additions and 17 deletions

View File

@ -4,34 +4,31 @@ CLASS zcl_abapgit_message_helper DEFINITION
CREATE PUBLIC .
PUBLIC SECTION.
CONSTANTS:
BEGIN OF gc_section_text,
cause TYPE string VALUE `Cause`,
system_response TYPE string VALUE `System response`,
what_to_do TYPE string VALUE `Procedure`,
sys_admin TYPE string VALUE `System administration`,
END OF gc_section_text,
END OF gc_section_text .
CONSTANTS:
BEGIN OF gc_section_token,
cause TYPE string VALUE `&CAUSE&`,
system_response TYPE string VALUE `&SYSTEM_RESPONSE&`,
what_to_do TYPE string VALUE `&WHAT_TO_DO&`,
sys_admin TYPE string VALUE `&SYS_ADMIN&`,
END OF gc_section_token.
CLASS-METHODS:
set_msg_vars_for_clike
IMPORTING
iv_text TYPE string.
METHODS:
constructor
IMPORTING
ii_t100_message TYPE REF TO if_t100_message,
get_t100_longtext
RETURNING
VALUE(rv_longtext) TYPE string.
END OF gc_section_token .
CLASS-METHODS set_msg_vars_for_clike
IMPORTING
!iv_text TYPE string .
METHODS constructor
IMPORTING
!ii_t100_message TYPE REF TO if_t100_message .
METHODS get_t100_longtext
RETURNING
VALUE(rv_longtext) TYPE string .
PROTECTED SECTION.
PRIVATE SECTION.
TYPES:
@ -363,7 +360,8 @@ CLASS ZCL_ABAPGIT_MESSAGE_HELPER IMPLEMENTATION.
line = lv_msg_var
rest = lv_rest.
IF lv_msg_var+lc_offset_of_last_character = space.
IF lv_msg_var+lc_offset_of_last_character(1) = space OR
lv_text+lc_length_of_msgv(1) = space.
" keep the space at the beginning of the rest
" because otherwise it's lost
lv_rest = | { lv_rest }|.

View File

@ -0,0 +1,106 @@
CLASS ltcl_test DEFINITION
FOR TESTING
DURATION SHORT
RISK LEVEL HARMLESS.
PUBLIC SECTION.
METHODS:
test_set_msg_b FOR TESTING,
test_set_msg_c FOR TESTING,
test_set_msg_d FOR TESTING,
test_set_msg_e FOR TESTING,
test_set_msg_z FOR TESTING.
PROTECTED SECTION.
PRIVATE SECTION.
TYPES:
BEGIN OF ty_msg,
v1 TYPE sy-msgv1,
v2 TYPE sy-msgv2,
v3 TYPE sy-msgv3,
v4 TYPE sy-msgv4,
END OF ty_msg.
CLASS-METHODS:
test_set_msg_vars
IMPORTING
iv_text TYPE string
is_msg TYPE ty_msg.
ENDCLASS.
CLASS ltcl_test IMPLEMENTATION.
METHOD test_set_msg_b.
CONSTANTS:
lc_text_b TYPE string VALUE '0123456789012345678901234567890123456789012345678 0123456789',
BEGIN OF lc_msg_b,
v1 TYPE sy-msgv1 VALUE '0123456789012345678901234567890123456789012345678',
v2 TYPE sy-msgv2 VALUE ' 0123456789',
v3 TYPE sy-msgv3 VALUE '',
v4 TYPE sy-msgv4 VALUE '',
END OF lc_msg_b.
test_set_msg_vars( iv_text = lc_text_b
is_msg = lc_msg_b ).
ENDMETHOD.
METHOD test_set_msg_c.
CONSTANTS:
lc_text_c TYPE string VALUE '01234567890123456789012345678901234567890123456789 123456789',
BEGIN OF lc_msg_c,
v1 TYPE sy-msgv1 VALUE '01234567890123456789012345678901234567890123456789',
v2 TYPE sy-msgv2 VALUE ' 123456789',
v3 TYPE sy-msgv3 VALUE '',
v4 TYPE sy-msgv4 VALUE '',
END OF lc_msg_c.
test_set_msg_vars( iv_text = lc_text_c
is_msg = lc_msg_c ).
ENDMETHOD.
METHOD test_set_msg_d.
CONSTANTS:
lc_text_d TYPE string VALUE '012345678901234567890123456789012345678901234567890 23456789',
BEGIN OF lc_msg_d,
v1 TYPE sy-msgv1 VALUE '01234567890123456789012345678901234567890123456789',
v2 TYPE sy-msgv2 VALUE '0 23456789',
v3 TYPE sy-msgv3 VALUE '',
v4 TYPE sy-msgv4 VALUE '',
END OF lc_msg_d.
test_set_msg_vars( iv_text = lc_text_d
is_msg = lc_msg_d ).
ENDMETHOD.
METHOD test_set_msg_e.
CONSTANTS:
lc_text_e TYPE string VALUE '012345678901234567890123456789012345678901234567890123456789',
BEGIN OF lc_msg_e,
v1 TYPE sy-msgv1 VALUE '01234567890123456789012345678901234567890123456789',
v2 TYPE sy-msgv2 VALUE '0123456789',
v3 TYPE sy-msgv3 VALUE '',
v4 TYPE sy-msgv4 VALUE '',
END OF lc_msg_e.
test_set_msg_vars( iv_text = lc_text_e
is_msg = lc_msg_e ).
ENDMETHOD.
METHOD test_set_msg_z.
CONSTANTS:
lc_text_x TYPE string VALUE `Here is a very long text more than 200 characters and we have to invent `,
lc_text_y TYPE string VALUE `a nice story about abapGit to fill this long message. abapGit is simply `,
lc_text_z TYPE string VALUE `the greatest! #abapGit #awesome #community #opensource`,
BEGIN OF lc_msg_z,
v1 TYPE sy-msgv1 VALUE `Here is a very long text more than 200 characters`,
v2 TYPE sy-msgv2 VALUE ` and we have to invent a nice story about abapGit`,
v3 TYPE sy-msgv3 VALUE ` to fill this long message. abapGit is simply the`,
v4 TYPE sy-msgv4 VALUE ` greatest! #abapGit #awesome #community`,
END OF lc_msg_z.
test_set_msg_vars( iv_text = lc_text_x && lc_text_y && lc_text_z
is_msg = lc_msg_z ).
ENDMETHOD.
METHOD test_set_msg_vars.
zcl_abapgit_message_helper=>set_msg_vars_for_clike( iv_text ).
cl_abap_unit_assert=>assert_equals( act = sy-msgv1
exp = is_msg-v1 ).
cl_abap_unit_assert=>assert_equals( act = sy-msgv2
exp = is_msg-v2 ).
cl_abap_unit_assert=>assert_equals( act = sy-msgv3
exp = is_msg-v3 ).
cl_abap_unit_assert=>assert_equals( act = sy-msgv4
exp = is_msg-v4 ).
ENDMETHOD.
ENDCLASS.

View File

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