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

Skip to content

Commit e2e2e7a

Browse files
committed
Adding JUnit reporter with refactorings for calculation of result totals.
1 parent fa50762 commit e2e2e7a

14 files changed

Lines changed: 198 additions & 22 deletions
Lines changed: 46 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,46 @@
1+
create or replace type body ut_results_counter as
2+
constructor function ut_results_counter(self in out nocopy ut_results_counter) return self as result is
3+
begin
4+
self.ignored_count := 0;
5+
self.success_count := 0;
6+
self.failure_count := 0;
7+
self.errored_count := 0;
8+
return;
9+
end;
10+
11+
constructor function ut_results_counter(self in out nocopy ut_results_counter, a_status integer) return self as result is
12+
begin
13+
self.ignored_count := case when a_status = ut_utils.tr_ignore then 1 else 0 end;
14+
self.success_count := case when a_status = ut_utils.tr_success then 1 else 0 end;
15+
self.failure_count := case when a_status = ut_utils.tr_failure then 1 else 0 end;
16+
self.errored_count := case when a_status = ut_utils.tr_error then 1 else 0 end;
17+
return;
18+
end;
19+
20+
member procedure sum_counter_values(self in out nocopy ut_results_counter, a_item ut_results_counter) is
21+
begin
22+
self.ignored_count := self.ignored_count + a_item.ignored_count;
23+
self.success_count := self.success_count + a_item.success_count;
24+
self.failure_count := self.failure_count + a_item.failure_count;
25+
self.errored_count := self.errored_count + a_item.errored_count;
26+
end;
27+
28+
member function total_count return integer is
29+
begin
30+
return self.ignored_count + self.success_count + self.failure_count + self.errored_count;
31+
end;
32+
33+
member function result_status return integer is
34+
begin
35+
return
36+
case
37+
when self.errored_count > 0 then ut_utils.tr_error
38+
when self.failure_count > 0 then ut_utils.tr_failure
39+
when self.success_count > 0 then ut_utils.tr_success
40+
when self.ignored_count > 0 then ut_utils.tr_ignore
41+
else ut_utils.tr_error
42+
end;
43+
end;
44+
45+
end;
46+
/
Lines changed: 12 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,12 @@
1+
create or replace type ut_results_counter as object(
2+
ignored_count integer,
3+
success_count integer,
4+
failure_count integer,
5+
errored_count integer,
6+
constructor function ut_results_counter(self in out nocopy ut_results_counter) return self as result,
7+
constructor function ut_results_counter(self in out nocopy ut_results_counter, a_status integer) return self as result,
8+
member procedure sum_counter_values(self in out nocopy ut_results_counter, a_item ut_results_counter),
9+
member function total_count return integer,
10+
member function result_status return integer
11+
)
12+
/

source/core/types/ut_run.tpb

Lines changed: 6 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -4,6 +4,7 @@ create or replace type body ut_run as
44
begin
55
self.self_type := $$plsql_unit;
66
self.items := a_items;
7+
self.results_count := ut_results_counter();
78
return;
89
end;
910

@@ -26,7 +27,7 @@ create or replace type body ut_run as
2627
l_completed_without_errors := self.items(i).do_execute(a_listener);
2728
end loop;
2829

29-
self.calc_execution_result;
30+
self.calc_execution_result();
3031

3132
self.end_time := current_timestamp;
3233

@@ -35,16 +36,16 @@ create or replace type body ut_run as
3536
return l_completed_without_errors;
3637
end;
3738

38-
member procedure calc_execution_result(self in out nocopy ut_run) is
39+
overriding member procedure calc_execution_result(self in out nocopy ut_run) is
3940
l_result integer(1);
4041
begin
4142
if self.items is not null and self.items.count > 0 then
42-
l_result := ut_utils.tr_ignore;
4343
for i in 1 .. self.items.count loop
44-
l_result := greatest(self.items(i).result, l_result);
45-
exit when l_result = ut_utils.tr_error;
44+
self.results_count.sum_counter_values( self.items(i).results_count );
4645
end loop;
46+
l_result := self.results_count.result_status();
4747
else
48+
--if suite is empty then it's successful (no errors)
4849
l_result := ut_utils.tr_success;
4950
end if;
5051

source/core/types/ut_run.tps

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -6,6 +6,6 @@ create or replace type ut_run under ut_suite_item (
66
constructor function ut_run( self in out nocopy ut_run, a_items ut_suite_items ) return self as result,
77
overriding member function do_execute(self in out nocopy ut_run, a_listener in out nocopy ut_event_listener_base) return boolean,
88
overriding member procedure do_execute(self in out nocopy ut_run, a_listener in out nocopy ut_event_listener_base),
9-
member procedure calc_execution_result(self in out nocopy ut_run)
9+
overriding member procedure calc_execution_result(self in out nocopy ut_run)
1010
)
1111
/

source/core/types/ut_suite.tpb

Lines changed: 7 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -107,7 +107,7 @@ create or replace type body ut_suite as
107107
l_completed_without_errors := self.after_all.do_execute(self, a_listener);
108108
end if;
109109

110-
self.calc_execution_result;
110+
self.calc_execution_result();
111111

112112
self.rollback_to_savepoint(l_suite_savepoint);
113113

@@ -119,21 +119,21 @@ create or replace type body ut_suite as
119119
return l_completed_without_errors;
120120
end;
121121

122-
member procedure calc_execution_result(self in out nocopy ut_suite) is
122+
overriding member procedure calc_execution_result(self in out nocopy ut_suite) is
123123
l_result integer(1);
124124
begin
125125
if self.items is not null and self.items.count > 0 then
126-
l_result := ut_utils.tr_ignore;
127126
for i in 1 .. self.items.count loop
128-
l_result := greatest(self.items(i).result, l_result);
129-
exit when l_result = ut_utils.tr_error;
127+
self.results_count.sum_counter_values( self.items(i).results_count );
130128
end loop;
129+
l_result := self.results_count.result_status();
131130
else
131+
--if suite is empty then it's successful (no errors)
132132
l_result := ut_utils.tr_success;
133133
end if;
134134

135-
self.result := l_result;
136-
end;
135+
self.result := l_result;
136+
end;
137137

138138
end;
139139
/

source/core/types/ut_suite.tps

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -36,6 +36,6 @@ create or replace type ut_suite under ut_suite_item (
3636
member procedure add_item(self in out nocopy ut_suite, a_item ut_suite_item),
3737
overriding member function do_execute(self in out nocopy ut_suite, a_listener in out nocopy ut_event_listener_base) return boolean,
3838
overriding member procedure do_execute(self in out nocopy ut_suite, a_listener in out nocopy ut_event_listener_base),
39-
member procedure calc_execution_result(self in out nocopy ut_suite)
39+
overriding member procedure calc_execution_result(self in out nocopy ut_suite)
4040
)
4141
/

source/core/types/ut_suite_item.tpb

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -12,6 +12,7 @@ create or replace type body ut_suite_item as
1212
self.path := nvl(lower(trim(a_path)), self.object_name);
1313
self.rollback_type := a_rollback_type;
1414
self.ignore_flag := ut_utils.boolean_to_int(a_ignore_flag);
15+
self.results_count := ut_results_counter();
1516
end;
1617

1718
member procedure set_ignore_flag(self in out nocopy ut_suite_item, a_ignore_flag boolean) is

source/core/types/ut_suite_item.tps

Lines changed: 4 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,6 @@
11
create or replace type ut_suite_item under ut_suite_item_base (
22

3+
results_count ut_results_counter,
34
member procedure init(
45
self in out nocopy ut_suite_item, a_object_owner varchar2, a_object_name varchar2, a_name varchar2,
56
a_description varchar2, a_path varchar2, a_rollback_type integer, a_ignore_flag boolean),
@@ -8,9 +9,10 @@ create or replace type ut_suite_item under ut_suite_item_base (
89
member function create_savepoint_if_needed return varchar2,
910
member procedure rollback_to_savepoint(self in ut_suite_item, a_savepoint varchar2),
1011
member function execution_time return number,
11-
12+
1213
not instantiable member function do_execute(self in out nocopy ut_suite_item, a_listener in out nocopy ut_event_listener_base) return boolean,
13-
not instantiable member procedure do_execute(self in out nocopy ut_suite_item, a_listener in out nocopy ut_event_listener_base)
14+
not instantiable member procedure do_execute(self in out nocopy ut_suite_item, a_listener in out nocopy ut_event_listener_base),
15+
not instantiable member procedure calc_execution_result(self in out nocopy ut_suite_item)
1416

1517
)
1618
not final not instantiable

source/core/types/ut_test.tpb

Lines changed: 9 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -65,16 +65,21 @@ create or replace type body ut_test as
6565
self.rollback_to_savepoint(l_savepoint);
6666

6767
end if;
68-
68+
self.calc_execution_result();
6969
self.end_time := current_timestamp;
70-
self.result := ut_assert_processor.get_aggregate_asserts_result();
71-
--expectation results need to be part of test results
72-
self.results := ut_assert_processor.get_asserts_results();
7370
a_listener.fire_after_event(ut_utils.gc_test,self);
7471

7572
end if;
7673
return l_completed_without_errors;
7774
end;
7875

76+
overriding member procedure calc_execution_result(self in out nocopy ut_test) is
77+
begin
78+
self.result := ut_assert_processor.get_aggregate_asserts_result();
79+
--expectation results need to be part of test results
80+
self.results := ut_assert_processor.get_asserts_results();
81+
self.results_count := ut_results_counter(self.result);
82+
end;
83+
7984
end;
8085
/

source/core/types/ut_test.tps

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -24,6 +24,7 @@ create or replace type ut_test under ut_suite_item (
2424
) return self as result,
2525
member function is_valid return boolean,
2626
overriding member procedure do_execute(self in out nocopy ut_test, a_listener in out nocopy ut_event_listener_base),
27-
overriding member function do_execute(self in out nocopy ut_test, a_listener in out nocopy ut_event_listener_base) return boolean
27+
overriding member function do_execute(self in out nocopy ut_test, a_listener in out nocopy ut_event_listener_base) return boolean,
28+
overriding member procedure calc_execution_result(self in out nocopy ut_test)
2829
)
2930
/

0 commit comments

Comments
 (0)