@@ -33,61 +33,70 @@ create or replace type body ut_suite as
3333 l_completed_without_errors boolean;
3434 begin
3535 ut_utils.debug_log('ut_suite .execute');
36+ a_listener.fire_before_event(ut_utils.gc_suite,self);
37+
38+ self.start_time := current_timestamp;
3639
3740 if self.get_ignore_flag() then
3841 self.result := ut_utils.tr_ignore;
42+ self.end_time := self.start_time;
3943 ut_utils.debug_log('ut_suite .execute - ignored');
4044 else
41- a_listener.fire_before_event(ut_utils.gc_suite,self);
42-
43- self.start_time := current_timestamp;
44-
45- l_suite_savepoint := self.create_savepoint_if_needed();
46-
47- --includes listener calls for before and after actions
48- l_completed_without_errors := self.before_all.do_execute(self, a_listener);
49-
50- if l_completed_without_errors then
51- for i in 1 .. self.items.count loop
52- l_completed_without_errors := true;
53-
54- --savepoint
55- l_item_savepoint := self.items(i).create_savepoint_if_needed();
56- --before each
57- if l_completed_without_errors then
58- --includes listener calls for before and after actions
59- l_completed_without_errors := self.before_each.do_execute(self, a_listener);
60- end if;
61-
62- -- execute the item (test or suite)
63- if l_completed_without_errors then
45+
46+ if self.is_valid() then
47+
48+ l_suite_savepoint := self.create_savepoint_if_needed();
49+
50+ --includes listener calls for before and after actions
51+ l_completed_without_errors := self.before_all.do_execute(self, a_listener);
52+
53+ if l_completed_without_errors then
54+ for i in 1 .. self.items.count loop
55+ l_completed_without_errors := true;
56+
57+ --savepoint
58+ l_item_savepoint := self.items(i).create_savepoint_if_needed();
59+ --before each
60+ if l_completed_without_errors then
61+ --includes listener calls for before and after actions
62+ l_completed_without_errors := self.before_each.do_execute(self, a_listener);
63+ end if;
64+
65+ -- execute the item (test or suite)
66+ if l_completed_without_errors then
67+ l_completed_without_errors := self.items(i).do_execute(a_listener);
68+ end if;
69+
70+ --after each
71+ if l_completed_without_errors then
72+ --includes listener calls for before and after actions
73+ l_completed_without_errors := self.after_each.do_execute(self, a_listener);
74+ end if;
75+ --rollback to savepoint
76+ self.items(i).rollback_to_savepoint(l_item_savepoint);
77+
78+ -- exit when not l_completed_without_errors;
79+ end loop;
80+ end if;
81+
82+ if l_completed_without_errors then
83+ l_completed_without_errors := self.after_all.do_execute(self, a_listener);
84+ end if;
85+
86+ self.rollback_to_savepoint(l_suite_savepoint);
87+ else
88+ for i in 1..self.items.count loop
89+ if self.items(i) is of(ut_test) then
6490 l_completed_without_errors := self.items(i).do_execute(a_listener);
6591 end if;
66-
67- --after each
68- if l_completed_without_errors then
69- --includes listener calls for before and after actions
70- l_completed_without_errors := self.after_each.do_execute(self, a_listener);
71- end if;
72- --rollback to savepoint
73- self.items(i).rollback_to_savepoint(l_item_savepoint);
74-
75- -- exit when not l_completed_without_errors;
7692 end loop;
7793 end if;
7894
79- if l_completed_without_errors then
80- l_completed_without_errors := self.after_all.do_execute(self, a_listener);
81- end if;
82-
8395 self.calc_execution_result();
84-
85- self.rollback_to_savepoint(l_suite_savepoint);
86-
8796 self.end_time := current_timestamp;
8897
89- a_listener.fire_after_event(ut_utils.gc_suite,self);
9098 end if;
99+ a_listener.fire_after_event(ut_utils.gc_suite,self);
91100
92101 return l_completed_without_errors;
93102 end;
0 commit comments