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

Skip to content

Commit 203d88e

Browse files
committed
fixed xunit reporter as otherwise it treated passed tests as skipped in Teamcity
1 parent 483b4fc commit 203d88e

1 file changed

Lines changed: 36 additions & 30 deletions

File tree

source/reporters/ut_xunit_reporter.tpb

Lines changed: 36 additions & 30 deletions
Original file line numberDiff line numberDiff line change
@@ -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

107113
end;

0 commit comments

Comments
 (0)