Skip to content

Commit d9a0457

Browse files
Merge pull request #1075 from utPLSQL/bugfix/issue-1073-nested-cdata
Fix invalid XML message with nested CDATA section causes in ut_realtime_reporter
2 parents 789ad61 + 6631930 commit d9a0457

File tree

4 files changed

+69
-1
lines changed

4 files changed

+69
-1
lines changed

.travis/install.sh

Lines changed: 19 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -113,6 +113,25 @@ PROMPT Creating $UT3_USER - minimal privileges user for API testing
113113
create user $UT3_USER identified by "$UT3_USER_PASSWORD" default tablespace $UT3_TABLESPACE quota unlimited on $UT3_TABLESPACE;
114114
grant create session, create procedure, create type, create table to $UT3_USER;
115115
116+
PROMPT Grants for starting a debugging session from $UT3_USER
117+
grant debug connect session to $UT3_USER;
118+
grant debug any procedure to $UT3_USER;
119+
begin
120+
\$if dbms_db_version.version <= 11 \$then
121+
null; -- no addition action necessary
122+
\$else
123+
-- necessary on 12c or higher
124+
dbms_network_acl_admin.append_host_ace (
125+
host =>'*',
126+
ace => sys.xs\$ace_type(
127+
privilege_list => sys.xs\$name_list('JDWP') ,
128+
principal_name => '$UT3_USER',
129+
principal_type => sys.xs_acl.ptype_db
130+
)
131+
);
132+
\$end
133+
end;
134+
/
116135
117136
--------------------------------------------------------------------------------
118137
PROMPT Creating $UT3_TESTER_HELPER - provides functions to allow min grant test user setup tests.

source/reporters/ut_realtime_reporter.tpb

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -252,7 +252,7 @@ create or replace type body ut_realtime_reporter is
252252
) is
253253
begin
254254
if a_content is not null then
255-
self.print_xml_fragment('<' || a_name || '><![CDATA[' || a_content || ']]></' || a_name || '>');
255+
self.print_xml_fragment('<' || a_name || '><![CDATA[' || ut_utils.to_cdata(a_content) || ']]></' || a_name || '>');
256256
end if;
257257
end print_cdata_node;
258258

test/ut3_user/reporters/test_realtime_reporter.pkb

Lines changed: 46 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -118,6 +118,22 @@ create or replace package body test_realtime_reporter as
118118
end;
119119
end;]';
120120

121+
execute immediate q'[create or replace package check_realtime_reporting5 is
122+
--%suite
123+
--%suitepath(realtime_reporting_bufix)
124+
125+
--%test(test XML with nested CDATA)
126+
procedure test_nested_cdata;
127+
end;]';
128+
129+
execute immediate q'[create or replace package body check_realtime_reporting5 is
130+
procedure test_nested_cdata is
131+
begin
132+
dbms_output.put_line('nested cdata block: <![CDATA[...]]>, to be handled.');
133+
ut.expect(1).to_equal(1);
134+
end;
135+
end;]';
136+
121137
<<run_report_and_cache_result>>
122138
declare
123139
l_reporter ut3_develop.ut_realtime_reporter := ut3_develop.ut_realtime_reporter();
@@ -448,6 +464,35 @@ create or replace package body test_realtime_reporter as
448464
l_actual := l_reporter.get_description();
449465
ut.expect(l_actual).to_be_like(l_expected);
450466
end get_description;
467+
468+
procedure nested_cdata_output is
469+
l_text varchar2(4000);
470+
l_xml xmltype;
471+
--
472+
function produce_and_consume return varchar2 is
473+
pragma autonomous_transaction;
474+
l_reporter ut3_develop.ut_realtime_reporter := ut3_develop.ut_realtime_reporter();
475+
l_text varchar2(4000);
476+
begin
477+
-- produce
478+
ut3_develop.ut_runner.run(
479+
a_paths => ut3_develop.ut_varchar2_list(':realtime_reporting_bufix'),
480+
a_reporters => ut3_develop.ut_reporters(l_reporter)
481+
);
482+
-- consume
483+
select text
484+
into l_text
485+
from table(l_reporter.get_lines())
486+
where item_type = 'post-test';
487+
return l_text;
488+
end produce_and_consume;
489+
begin
490+
l_text := produce_and_consume();
491+
ut.expect(l_text).to_be_not_null();
492+
-- this fails, if l_text is not a valid XML
493+
l_xml := xmltype(l_text);
494+
ut.expect(l_xml is not null).to_be_true();
495+
end;
451496

452497
procedure remove_test_suites is
453498
pragma autonomous_transaction;
@@ -456,6 +501,7 @@ create or replace package body test_realtime_reporter as
456501
execute immediate 'drop package check_realtime_reporting2';
457502
execute immediate 'drop package check_realtime_reporting3';
458503
execute immediate 'drop package check_realtime_reporting4';
504+
execute immediate 'drop package check_realtime_reporting5';
459505
end remove_test_suites;
460506

461507
end test_realtime_reporter;

test/ut3_user/reporters/test_realtime_reporter.pks

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -54,6 +54,9 @@ create or replace package test_realtime_reporter as
5454
--%test(Provide a description of the reporter explaining the use for SQL Developer)
5555
procedure get_description;
5656

57+
--%test(Escape nested CDATA sections in test output)
58+
procedure nested_cdata_output;
59+
5760
--%afterall
5861
procedure remove_test_suites;
5962

0 commit comments

Comments
 (0)