Thanks to visit codestin.com
Credit goes to github.com

Skip to content

Commit 37ed91f

Browse files
authored
Merge pull request #668 from lwasylow/fix/catercddata
Fix issue where failure message includes special xml char like CDDATA etc.
2 parents d9f09f0 + 75f69e1 commit 37ed91f

7 files changed

Lines changed: 80 additions & 6 deletions

File tree

source/reporters/ut_junit_reporter.tpb

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -59,7 +59,7 @@ create or replace type body ut_junit_reporter is
5959
l_lines := a_test.failed_expectations(i).get_result_lines();
6060

6161
for j in 1 .. l_lines.count loop
62-
self.print_text(l_lines(j));
62+
self.print_text(dbms_xmlgen.convert(l_lines(j)));
6363
end loop;
6464
self.print_text(a_test.failed_expectations(i).caller_info);
6565
end loop;

source/reporters/ut_sonar_test_reporter.tpb

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -60,7 +60,7 @@ create or replace type body ut_sonar_test_reporter is
6060
for i in 1 .. a_test.failed_expectations.count loop
6161
l_lines := a_test.failed_expectations(i).get_result_lines();
6262
for i in 1 .. l_lines.count loop
63-
self.print_text(l_lines(i));
63+
self.print_text(dbms_xmlgen.convert(l_lines(i)));
6464
end loop;
6565
end loop;
6666
self.print_text(']]>');

source/reporters/ut_tfs_junit_reporter.tpb

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -80,7 +80,7 @@ create or replace type body ut_tfs_junit_reporter is
8080
for i in 1 .. a_test.failed_expectations.count loop
8181
l_lines := a_test.failed_expectations(i).get_result_lines();
8282
for j in 1 .. l_lines.count loop
83-
self.print_text(l_lines(j));
83+
self.print_text(dbms_xmlgen.convert(l_lines(j)));
8484
end loop;
8585
self.print_text(a_test.failed_expectations(i).caller_info);
8686
end loop;

test/core/reporters/test_junit_reporter.pkb

Lines changed: 35 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -61,19 +61,35 @@ create or replace package body test_junit_reporter as
6161
execute immediate q'[create or replace package body tst_package_junit_nosuite as
6262
procedure test1 is begin ut.expect(1).to_equal(1); end;
6363
end;]';
64-
6564

66-
execute immediate q'[create or replace package Tst_Fix_Case_Sensitive as
65+
execute immediate q'[create or replace package Tst_Fix_Case_Sensitive as
6766
--%suite
6867

6968
--%test(bugfix)
7069
procedure bUgFiX;
71-
end;]';
70+
end;]';
7271

7372
execute immediate q'[create or replace package body Tst_Fix_Case_Sensitive as
7473
procedure bUgFiX is begin ut.expect(1).to_equal(1); end;
7574
end;]';
7675

76+
execute immediate q'[create or replace package check_fail_escape is
77+
--%suitepath(core)
78+
--%suite(checkfailedescape)
79+
--%displayname(Check JUNIT XML failure is escaped)
80+
81+
--%test(Fail Miserably)
82+
procedure fail_miserably;
83+
84+
end;]';
85+
86+
execute immediate q'[create or replace package body check_fail_escape is
87+
procedure fail_miserably is
88+
begin
89+
ut3.ut.expect('test').to_equal('<![CDATA[some stuff]]>');
90+
end;
91+
end;]';
92+
7793
reporters.reporters_setup;
7894

7995
end;
@@ -279,6 +295,21 @@ create or replace package body test_junit_reporter as
279295
ut.expect(l_actual).to_be_like(l_expected);
280296
end;
281297

298+
procedure check_failure_escaped is
299+
l_results ut3.ut_varchar2_list;
300+
l_actual clob;
301+
begin
302+
--Act
303+
select *
304+
bulk collect into l_results
305+
from table(ut3.ut.run('check_fail_escape',ut3.ut_junit_reporter()));
306+
l_actual := ut3.ut_utils.table_to_clob(l_results);
307+
--Assert
308+
ut.expect(l_actual).to_be_like('%<![CDATA[%
309+
Actual: &apos;test&apos; (varchar2) was expected to equal: &apos;&lt;![CDATA[some stuff]]&gt;&apos; (varchar2)%
310+
]]>%');
311+
end;
312+
282313
procedure check_classname_is_populated is
283314
l_results ut3.ut_varchar2_list;
284315
l_actual clob;
@@ -307,6 +338,7 @@ create or replace package body test_junit_reporter as
307338
execute immediate 'drop package check_junit_rep_suitepath';
308339
execute immediate 'drop package tst_package_junit_nodesc';
309340
execute immediate 'drop package tst_package_junit_nosuite';
341+
execute immediate 'drop package check_fail_escape';
310342
execute immediate 'drop package Tst_Fix_Case_Sensitive';
311343
reporters.reporters_cleanup;
312344
end;

test/core/reporters/test_junit_reporter.pks

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -39,6 +39,9 @@ create or replace package test_junit_reporter as
3939
--%test( Check classname is populated when procedure is mixed cased - bug #659)
4040
procedure check_classname_is_populated;
4141

42+
--%test( Validate that fail with special char are escaped )
43+
procedure check_failure_escaped;
44+
4245
--%afterall
4346
procedure remove_test_package;
4447
end;

test/core/reporters/test_tfs_junit_reporter.pkb

Lines changed: 36 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -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: &apos;test&apos; (varchar2) was expected to equal: &apos;&lt;![CDATA[some stuff]]&gt;&apos; (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;
165201
end;
166202
/

test/core/reporters/test_tfs_junit_reporter.pks

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -27,6 +27,9 @@ create or replace package test_tfs_junit_reporter as
2727
--%test(Reports duration according to XML specification for numbers)
2828
procedure check_nls_number_formatting;
2929

30+
--%test( Validate that failures with special char are escaped )
31+
procedure check_failure_escaped;
32+
3033
--%afterall
3134
procedure remove_test_package;
3235
end;

0 commit comments

Comments
 (0)