From 103790eb35dbd6af6cd4df87ba8780079b1ee210 Mon Sep 17 00:00:00 2001
From: Marc Bernard <59966492+mbtools@users.noreply.github.com>
Date: Thu, 24 Mar 2022 07:12:24 +0100
Subject: [PATCH] Remove popup for XML version mismatch (#5403)
Very unlikely that this error happens. Therefore, the popup was replaced with an exception which makes the case testable.
---
src/xml/zcl_abapgit_xml.clas.abap | 46 ++++++++-----------
src/xml/zcl_abapgit_xml.clas.testclasses.abap | 31 +++++++++++--
2 files changed, 46 insertions(+), 31 deletions(-)
diff --git a/src/xml/zcl_abapgit_xml.clas.abap b/src/xml/zcl_abapgit_xml.clas.abap
index da99a9ce8..0ec82d922 100644
--- a/src/xml/zcl_abapgit_xml.clas.abap
+++ b/src/xml/zcl_abapgit_xml.clas.abap
@@ -32,7 +32,7 @@ CLASS zcl_abapgit_xml DEFINITION
!ii_parser TYPE REF TO if_ixml_parser
RAISING
zcx_abapgit_exception .
- METHODS display_version_mismatch
+ METHODS raise_version_mismatch
IMPORTING
!iv_vers TYPE string
RAISING
@@ -56,31 +56,6 @@ CLASS zcl_abapgit_xml IMPLEMENTATION.
ENDMETHOD.
- METHOD display_version_mismatch.
-
- DATA lv_text TYPE string.
-
- lv_text = |The XML versions do not match, expected: { zif_abapgit_version=>c_xml_version }, actual: { iv_vers }|.
-
- IF mv_filename IS NOT INITIAL.
- lv_text = lv_text && |, file: { mv_filename }|.
- ENDIF.
-
- lv_text = lv_text && | (see https://docs.abapgit.org/other-xml-mismatch.html)|.
-
- zcl_abapgit_ui_factory=>get_popups( )->popup_to_confirm(
- iv_titlebar = 'abapGit XML Version Mismatch'
- iv_text_question = lv_text ).
-
- IF mv_filename IS INITIAL.
- zcx_abapgit_exception=>raise( 'abapGit XML version mismatch' ).
- ELSE.
- zcx_abapgit_exception=>raise( |abapGit XML version mismatch in file { mv_filename }| ).
- ENDIF.
-
- ENDMETHOD.
-
-
METHOD error.
IF ii_parser->num_errors( ) <> 0.
@@ -125,7 +100,7 @@ CLASS zcl_abapgit_xml IMPLEMENTATION.
li_version = li_element->if_ixml_node~get_attributes(
)->get_named_item_ns( c_attr_version ).
IF li_version->get_value( ) <> zif_abapgit_version=>c_xml_version.
- display_version_mismatch( li_version->get_value( ) ).
+ raise_version_mismatch( li_version->get_value( ) ).
ENDIF.
* buffer serializer metadata. Git node will be removed lateron
@@ -151,6 +126,23 @@ CLASS zcl_abapgit_xml IMPLEMENTATION.
ENDMETHOD.
+ METHOD raise_version_mismatch.
+
+ DATA lv_text TYPE string.
+
+ lv_text = |The XML versions do not match, expected: { zif_abapgit_version=>c_xml_version }, actual: { iv_vers }|.
+
+ IF mv_filename IS NOT INITIAL.
+ lv_text = lv_text && |, file: { mv_filename }|.
+ ENDIF.
+
+ lv_text = lv_text && | (see https://docs.abapgit.org/other-xml-mismatch.html)|.
+
+ zcx_abapgit_exception=>raise( lv_text ).
+
+ ENDMETHOD.
+
+
METHOD to_xml.
* will render to codepage UTF-16
diff --git a/src/xml/zcl_abapgit_xml.clas.testclasses.abap b/src/xml/zcl_abapgit_xml.clas.testclasses.abap
index 23db8d3d5..c3ee814f8 100644
--- a/src/xml/zcl_abapgit_xml.clas.testclasses.abap
+++ b/src/xml/zcl_abapgit_xml.clas.testclasses.abap
@@ -16,8 +16,8 @@ CLASS ltcl_xml DEFINITION FOR TESTING DURATION SHORT RISK LEVEL HARMLESS.
METHODS setup.
METHODS:
- space_leading_trailing FOR TESTING
- RAISING zcx_abapgit_exception,
+ space_leading_trailing FOR TESTING RAISING zcx_abapgit_exception,
+ bad_version_raises_exc FOR TESTING RAISING cx_static_check,
bad_xml_raises_exc FOR TESTING RAISING cx_static_check.
METHODS:
@@ -61,7 +61,6 @@ CLASS ltcl_xml IMPLEMENTATION.
DATA: lv_from_xml TYPE string,
lv_to_xml TYPE string.
-
lv_from_xml = ` A `.
parse_xml( lv_from_xml ).
@@ -90,11 +89,35 @@ CLASS ltcl_xml IMPLEMENTATION.
ENDMETHOD.
- METHOD bad_xml_raises_exc.
+ METHOD bad_version_raises_exc.
+
DATA: lv_xml TYPE string,
lo_error TYPE REF TO zcx_abapgit_exception,
lv_text TYPE string.
+ lv_xml = ||
+ && |<{ mo_xml->c_abapgit_tag } { mo_xml->c_attr_version }="v9.8.7">|
+ && |data|
+ && |{ mo_xml->c_abapgit_tag }>|.
+
+ TRY.
+ mo_xml->parse( iv_xml = lv_xml ).
+ cl_abap_unit_assert=>fail( msg = 'Exception not raised' ).
+
+ CATCH zcx_abapgit_exception INTO lo_error.
+ lv_text = lo_error->get_text( ).
+ cl_abap_unit_assert=>assert_char_cp(
+ act = lv_text
+ exp = '*XML version*' ).
+ ENDTRY.
+
+ ENDMETHOD.
+
+ METHOD bad_xml_raises_exc.
+
+ DATA: lv_xml TYPE string,
+ lo_error TYPE REF TO zcx_abapgit_exception,
+ lv_text TYPE string.
lv_xml = ||
&& |<{ mo_xml->c_abapgit_tag } { mo_xml->c_attr_version }="{ zif_abapgit_version=>c_xml_version }">|