@@ -2,13 +2,13 @@ create or replace type body ut_xunit_reporter is
22 /*
33 utPLSQL - Version X.X.X.X
44 Copyright 2016 - 2017 utPLSQL Project
5-
5+
66 Licensed under the Apache License, Version 2.0 (the "License"):
77 you may not use this file except in compliance with the License.
88 You may obtain a copy of the License at
9-
9+
1010 http://www.apache.org/licenses/LICENSE-2.0
11-
11+
1212 Unless required by applicable law or agreed to in writing, software
1313 distributed under the License is distributed on an "AS IS" BASIS,
1414 WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
@@ -24,36 +24,46 @@ create or replace type body ut_xunit_reporter is
2424
2525 overriding member procedure after_calling_run(self in out nocopy ut_xunit_reporter, a_run in ut_run) is
2626 l_suite_id integer := 0;
27- l_tests_count integer := a_run.results_count.ignored_count + a_run.results_count.success_count + a_run.results_count.failure_count + a_run.results_count.errored_count;
28-
27+ l_tests_count integer := a_run.results_count.ignored_count + a_run.results_count.success_count +
28+ a_run.results_count.failure_count + a_run.results_count.errored_count;
29+
2930 function get_path(a_path_with_name varchar2, a_name varchar2) return varchar2 is
3031 begin
31- return substr(a_path_with_name, 1, instr(a_path_with_name,'.'|| a_name)- 1);
32+ return substr(a_path_with_name, 1, instr(a_path_with_name, '.' || a_name) - 1);
3233 end;
33-
34+
3435 procedure print_test_elements(a_test ut_test) is
3536 l_lines ut_varchar2_list;
3637 begin
37- self.print_text(
38- '<testcase classname="'||get_path(a_test.path, a_test.name)||'" ' ||
39- ' assertions="'||coalesce(cardinality(a_test.results),0)||'"' ||
40- self.get_common_item_attributes(a_test) ||
41- ' status="'||ut_utils.test_result_to_char(a_test.result)||'"' ||
42- '>'
43- );
38+ self.print_text('<testcase classname="' || get_path(a_test.path, a_test.name) || '" ' || ' assertions="' ||
39+ coalesce(cardinality(a_test.results), 0) || '"' || self.get_common_item_attributes(a_test) ||
40+ case when a_test.result != ut_utils.tr_success then' status="'||ut_utils.test_result_to_char(a_test.result)||'"' end ||
41+ '>');
4442 if a_test.result = ut_utils.tr_ignore then
4543 self.print_text('<skipped/>');
4644 end if;
47-
45+ /*
46+ if a_test.result = ut_utils.tr_error then
47+ self.print_text('<error>');
48+ self.print_text('<![CDATA[');
49+ self.print_text(coalesce(a_test.before_each.error_stack
50+ ,a_test.before_test.error_stack
51+ ,a_test.item.error_stack
52+ ,a_test.after_test.error_stack
53+ ,a_test.after_each.error_stack));
54+ self.print_text(']]>');
55+ self.print_text('</error>');
56+
57+ els*/
4858 if a_test.result > ut_utils.tr_success then
4959 self.print_text('<failure>');
50- self.print_text( '<![CDATA[');
60+ self.print_text('<![CDATA[');
5161 for i in 1 .. a_test.results.count loop
5262 l_lines := a_test.results(i).get_result_lines();
5363 for i in 1 .. l_lines.count loop
5464 self.print_text(l_lines(i));
5565 end loop;
56- end loop;
66+ end loop;
5767 self.print_text(']]>');
5868 self.print_text('</failure>');
5969 end if;
@@ -64,31 +74,30 @@ create or replace type body ut_xunit_reporter is
6474 -- <system-err/>
6575 self.print_text('</testcase>');
6676 end;
67-
77+
6878 procedure print_suite_elements(a_suite ut_logical_suite, a_suite_id in out nocopy integer) is
69- l_tests_count integer := a_suite.results_count.ignored_count + a_suite.results_count.success_count + a_suite.results_count.failure_count + a_suite.results_count.errored_count;
79+ l_tests_count integer := a_suite.results_count.ignored_count + a_suite.results_count.success_count +
80+ a_suite.results_count.failure_count + a_suite.results_count.errored_count;
7081 begin
7182 a_suite_id := a_suite_id + 1;
72- self.print_text(
73- '<testsuite tests="' || l_tests_count || '"' || ' id="' || a_suite_id || '"' ||
74- ' package="' || a_suite.path || '" ' || self.get_common_item_attributes(a_suite) || '>'
75- );
83+ self.print_text('<testsuite tests="' || l_tests_count || '"' || ' id="' || a_suite_id || '"' || ' package="' ||
84+ a_suite.path || '" ' || self.get_common_item_attributes(a_suite) || '>');
7685 -- TODO - separate failure messages, error messages, and dbms_output results from tests execution
7786 -- TODO - decide if to use 'skipped' or 'disabled'
7887 -- <system-out/>
7988 -- <system-err/>
8089 for i in 1 .. a_suite.items.count loop
81- if a_suite.items(i) is of (ut_test) then
90+ if a_suite.items(i) is of(ut_test) then
8291 print_test_elements(treat(a_suite.items(i) as ut_test));
83- elsif a_suite.items(i) is of (ut_logical_suite) then
92+ elsif a_suite.items(i) is of(ut_logical_suite) then
8493 print_suite_elements(treat(a_suite.items(i) as ut_logical_suite), a_suite_id);
8594 end if;
8695 end loop;
8796 self.print_text('</testsuite>');
8897 end;
8998 begin
9099 l_suite_id := 0;
91- self.print_text('<testsuites tests="'|| l_tests_count|| '"'|| self.get_common_item_attributes(a_run)|| '>');
100+ self.print_text('<testsuites tests="' || l_tests_count || '"' || self.get_common_item_attributes(a_run) || '>');
92101 for i in 1 .. a_run.items.count loop
93102 print_suite_elements(treat(a_run.items(i) as ut_logical_suite), l_suite_id);
94103 end loop;
@@ -98,10 +107,7 @@ create or replace type body ut_xunit_reporter is
98107
99108 member function get_common_item_attributes(a_item ut_suite_item) return varchar2 is
100109 begin
101- return
102- ' skipped="'||a_item.results_count.ignored_count||'" error="'||a_item.results_count.errored_count||'"'||
103- ' failure="'||a_item.results_count.failure_count||'" name="'||a_item.description||'"'||
104- ' time="'||a_item.execution_time()||'" ';
110+ return ' skipped="' || a_item.results_count.ignored_count || '" error="' || a_item.results_count.errored_count || '"' || ' failure="' || a_item.results_count.failure_count || '" name="' || a_item.description || '"' || ' time="' || a_item.execution_time() || '" ';
105111 end;
106112
107113end;
0 commit comments