@@ -15,13 +15,16 @@ create or replace type body ut_junit_reporter is
1515 See the License for the specific language governing permissions and
1616 limitations under the License.
1717 */
18+
1819 constructor function ut_junit_reporter(self in out nocopy ut_junit_reporter) return self as result is
1920 begin
2021 self.init($$plsql_unit);
2122 return;
2223 end;
2324
2425 overriding member procedure after_calling_run(self in out nocopy ut_junit_reporter, a_run in ut_run) is
26+ c_cddata_tag_start constant varchar2(30) := '<![CDATA[';
27+ c_cddata_tag_end constant varchar2(10) := ']]>';
2528 l_suite_id integer := 0;
2629 l_tests_count integer := a_run.results_count.disabled_count + a_run.results_count.success_count +
2730 a_run.results_count.failure_count + a_run.results_count.errored_count;
@@ -34,57 +37,55 @@ create or replace type body ut_junit_reporter is
3437 procedure print_test_elements(a_test ut_test) is
3538 l_lines ut_varchar2_list;
3639 l_output clob;
37- l_cdata_tag_start varchar2(10) := '<![CDATA[';
38- l_cddata_tag_end varchar2(10) := ']]>';
3940 begin
4041 self.print_text('<testcase classname="' || dbms_xmlgen.convert(get_path(a_test.path, a_test.name)) || '"' || ' assertions="' ||
41- nvl(a_test.all_expectations.count,0) || '"' || self.get_common_test_attributes (a_test) || case when
42+ nvl(a_test.all_expectations.count,0) || self.get_common_item_attributes (a_test) || case when
4243 a_test.result != ut_utils.gc_success then
4344 ' status="' || ut_utils.test_result_to_char(a_test.result) || '"' end || '>');
4445 if a_test.result = ut_utils.gc_disabled then
4546 self.print_text('<skipped/>');
4647 end if;
4748 if a_test.result = ut_utils.gc_error then
4849 self.print_text('<error>');
49- self.print_text('<![CDATA[' );
50+ self.print_text(c_cddata_tag_start );
5051 self.print_clob(
51- replace(replace(ut_utils.table_to_clob(a_test.get_error_stack_traces()),l_cdata_tag_start ,''),l_cddata_tag_end ,'')
52+ replace(replace(ut_utils.table_to_clob(a_test.get_error_stack_traces()),c_cddata_tag_start ,''),c_cddata_tag_end ,'')
5253 );
53- self.print_text(']]>' );
54+ self.print_text(c_cddata_tag_end );
5455 self.print_text('</error>');
5556 elsif a_test.result > ut_utils.gc_success then
5657 self.print_text('<failure>');
57- self.print_text('<![CDATA[' );
58+ self.print_text(c_cddata_tag_start );
5859 for i in 1 .. a_test.failed_expectations.count loop
5960
6061 l_lines := a_test.failed_expectations(i).get_result_lines();
6162
6263 for j in 1 .. l_lines.count loop
6364 self.print_text(
64- replace(replace(l_lines(j),l_cdata_tag_start ,''),l_cddata_tag_end ,'')
65+ replace(replace(l_lines(j),c_cddata_tag_start ,''),c_cddata_tag_end ,'')
6566 );
6667 end loop;
6768 self.print_text(a_test.failed_expectations(i).caller_info);
6869 end loop;
69- self.print_text(']]>' );
70+ self.print_text(c_cddata_tag_end );
7071 self.print_text('</failure>');
7172 end if;
7273 -- TODO - decide if we need/want to use the <system-err/> tag too
7374 l_output := a_test.get_serveroutputs();
7475 if l_output is not null then
7576 self.print_text('<system-out>');
76- self.print_text('<![CDATA[' );
77+ self.print_text(c_cddata_tag_start );
7778 self.print_clob(l_output);
78- self.print_text(']]>' );
79+ self.print_text(c_cddata_tag_end );
7980 self.print_text('</system-out>');
8081 else
8182 self.print_text('<system-out/>');
8283 end if;
8384 if a_test.before_test.get_error_stack_trace() is not null or a_test.after_test.get_error_stack_trace() is not null then
8485 self.print_text('<system-err>');
85- self.print_text('<![CDATA[' );
86+ self.print_text(c_cddata_tag_start );
8687 self.print_text(trim(a_test.before_test.get_error_stack_trace()) || trim(chr(10) || chr(10) || a_test.after_test.get_error_stack_trace()));
87- self.print_text(']]>' );
88+ self.print_text(c_cddata_tag_end );
8889 self.print_text('</system-err>');
8990 else
9091 self.print_text('<system-err/>');
@@ -117,32 +118,24 @@ create or replace type body ut_junit_reporter is
117118 print_test_elements(treat(l_tests(i) as ut_test));
118119 end loop;
119120
120- /*for i in 1 .. a_suite.items.count loop
121- if a_suite.items(i) is of(ut_test) then
122- print_test_elements(treat(a_suite.items(i) as ut_test));
123- elsif a_suite.items(i) is of(ut_logical_suite) then
124- print_suite_elements(treat(a_suite.items(i) as ut_logical_suite), a_suite_id);
125- end if;
126- end loop;*/
127-
128121 if a_suite is of(ut_suite) then
129122 l_suite := treat(a_suite as ut_suite);
130123
131124 if l_suite.before_all.serveroutput is not null or l_suite.after_all.serveroutput is not null then
132125 self.print_text('<system-out>');
133- self.print_text('<![CDATA[' );
126+ self.print_text(c_cddata_tag_start );
134127 self.print_clob(l_suite.get_serveroutputs());
135- self.print_text(']]>' );
128+ self.print_text(c_cddata_tag_end );
136129 self.print_text('</system-out>');
137130 else
138131 self.print_text('<system-out/>');
139132 end if;
140133
141134 if l_suite.before_all.error_stack is not null or l_suite.after_all.error_stack is not null then
142135 self.print_text('<system-err>');
143- self.print_text('<![CDATA[' );
136+ self.print_text(c_cddata_tag_start );
144137 self.print_text(trim(l_suite.before_all.error_stack) || trim(chr(10) || chr(10) || l_suite.after_all.error_stack));
145- self.print_text(']]>' );
138+ self.print_text(c_cddata_tag_end );
146139 self.print_text('</system-err>');
147140 else
148141 self.print_text('<system-err/>');
@@ -159,19 +152,18 @@ create or replace type body ut_junit_reporter is
159152 self.print_text('</testsuites>');
160153 end;
161154
162- member function get_common_suite_attributes (a_item ut_suite_item) return varchar2 is
155+ member function get_common_item_attributes (a_item ut_suite_item) return varchar2 is
163156 begin
164- return ' disabled="' || a_item.results_count.disabled_count
165- || '" errors="' || a_item.results_count.errored_count
166- || '" failures="' || a_item.results_count.failure_count
167- || '" name="' || dbms_xmlgen.convert(nvl(a_item.description, a_item.name))
157+ return '" name="' || dbms_xmlgen.convert(nvl(a_item.description, a_item.name))
168158 || '" time="' || ut_utils.to_xml_number_format(a_item.execution_time()) || '" ';
169159 end;
170160
171- member function get_common_test_attributes (a_item ut_suite_item) return varchar2 is
161+ member function get_common_suite_attributes (a_item ut_suite_item) return varchar2 is
172162 begin
173- return ' name="' || dbms_xmlgen.convert(nvl(a_item.description, a_item.name))
174- || '" time="' || ut_utils.to_xml_number_format(a_item.execution_time()) || '" ';
163+ return ' disabled="' || a_item.results_count.disabled_count
164+ || '" errors="' || a_item.results_count.errored_count
165+ || '" failures="' || a_item.results_count.failure_count
166+ || get_common_item_attributes(a_item);
175167 end;
176168
177169 overriding member function get_description return varchar2 as
0 commit comments