@@ -48,8 +48,28 @@ create or replace package body test_tfs_junit_reporter as
4848 null;
4949 end;
5050 end;]';
51+
52+
53+ execute immediate q'[create or replace package check_fail_escape is
54+ --%suitepath(core)
55+ --%suite(checkfailedescape)
56+ --%displayname(Check JUNIT XML failure is escaped)
57+
58+ --%test(Fail Miserably)
59+ procedure fail_miserably;
60+
61+ end;]';
62+
63+ execute immediate q'[create or replace package body check_fail_escape is
64+ procedure fail_miserably is
65+ begin
66+ ut3.ut.expect('test').to_equal('<![CDATA[some stuff]]>');
67+ end;
68+ end;]';
69+
5170 end;
5271
72+
5373 procedure escapes_special_chars is
5474 l_results ut3.ut_varchar2_list;
5575 l_actual clob;
@@ -143,6 +163,21 @@ create or replace package body test_tfs_junit_reporter as
143163 execute immediate 'alter session set NLS_NUMERIC_CHARACTERS='''||l_nls_numeric_characters||'''';
144164 end;
145165
166+ procedure check_failure_escaped is
167+ l_results ut3.ut_varchar2_list;
168+ l_actual clob;
169+ begin
170+ --Act
171+ select *
172+ bulk collect into l_results
173+ from table(ut3.ut.run('check_fail_escape',ut3.ut_tfs_junit_reporter()));
174+ l_actual := ut3.ut_utils.table_to_clob(l_results);
175+ --Assert
176+ ut.expect(l_actual).to_be_like('%<![CDATA[%
177+ Actual: 'test' (varchar2) was expected to equal: '<![CDATA[some stuff]]>' (varchar2)%
178+ ]]>%');
179+ end;
180+
146181 procedure check_classname_suitepath is
147182 l_results ut3.ut_varchar2_list;
148183 l_actual clob;
@@ -161,6 +196,7 @@ create or replace package body test_tfs_junit_reporter as
161196 execute immediate 'drop package check_junit_reporting';
162197 execute immediate 'drop package check_junit_rep_suitepath';
163198 execute immediate 'drop package check_junit_flat_suitepath';
199+ execute immediate 'drop package check_fail_escape';
164200 end;
165201end;
166202/
0 commit comments