From 91f25304cec0811c84a2668faa8b891843309087 Mon Sep 17 00:00:00 2001 From: Marc Bernard <59966492+mbtools@users.noreply.github.com> Date: Fri, 12 Jun 2020 07:11:57 +0200 Subject: [PATCH] Fix message helper (#3482) * Fix message helper Split text didn't work if message has space at offset 51 * Add unit tests --- src/zcl_abapgit_message_helper.clas.abap | 32 +++--- ...apgit_message_helper.clas.testclasses.abap | 106 ++++++++++++++++++ src/zcl_abapgit_message_helper.clas.xml | 1 + 3 files changed, 122 insertions(+), 17 deletions(-) create mode 100644 src/zcl_abapgit_message_helper.clas.testclasses.abap diff --git a/src/zcl_abapgit_message_helper.clas.abap b/src/zcl_abapgit_message_helper.clas.abap index a861eb90d..af817c1db 100644 --- a/src/zcl_abapgit_message_helper.clas.abap +++ b/src/zcl_abapgit_message_helper.clas.abap @@ -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 }|. diff --git a/src/zcl_abapgit_message_helper.clas.testclasses.abap b/src/zcl_abapgit_message_helper.clas.testclasses.abap new file mode 100644 index 000000000..3dcf15d50 --- /dev/null +++ b/src/zcl_abapgit_message_helper.clas.testclasses.abap @@ -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. diff --git a/src/zcl_abapgit_message_helper.clas.xml b/src/zcl_abapgit_message_helper.clas.xml index 51944e6f2..45b589c54 100644 --- a/src/zcl_abapgit_message_helper.clas.xml +++ b/src/zcl_abapgit_message_helper.clas.xml @@ -10,6 +10,7 @@ X X X + X