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

Skip to content

Commit 24da4d6

Browse files
committed
moved beforeeach/aftereach to ut_test
1 parent a51dbff commit 24da4d6

7 files changed

Lines changed: 58 additions & 75 deletions

File tree

examples/demo_expectations.pck

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -32,11 +32,11 @@ create or replace package demo_expectations is
3232
procedure demo_to_be_null_failure;
3333

3434
-- %test
35-
-- %displayname(demo of failure for to_be_null expectation )
35+
-- %displayname(demo of success for to_be_null expectation )
3636
procedure demo_to_be_null_success;
3737

3838
-- %test
39-
-- %displayname(demo of success for to_be_not_null expectation )
39+
-- %displayname(demo of failure for to_be_not_null expectation )
4040
procedure demo_to_be_not_null_failure;
4141

4242
-- %test

source/core/types/ut_suite.tpb

Lines changed: 13 additions & 44 deletions
Original file line numberDiff line numberDiff line change
@@ -19,15 +19,13 @@ create or replace type body ut_suite as
1919
constructor function ut_suite (
2020
self in out nocopy ut_suite , a_object_owner varchar2 := null, a_object_name varchar2, a_name varchar2, a_path varchar2, a_description varchar2 := null,
2121
a_rollback_type integer := null, a_ignore_flag boolean := false, a_before_all_proc_name varchar2 := null,
22-
a_after_all_proc_name varchar2 := null, a_before_each_proc_name varchar2 := null, a_after_each_proc_name varchar2 := null
22+
a_after_all_proc_name varchar2 := null
2323
) return self as result is
2424
begin
2525
self.self_type := $$plsql_unit;
2626
self.init(a_object_owner, a_object_name, a_name, a_description, a_path, a_rollback_type, a_ignore_flag);
2727
self.before_all := ut_executable(self, a_before_all_proc_name, ut_utils.gc_before_all);
28-
self.before_each := ut_executable(self, a_before_each_proc_name, ut_utils.gc_before_each);
2928
self.items := ut_suite_items();
30-
self.after_each := ut_executable(self, a_after_each_proc_name, ut_utils.gc_after_each);
3129
self.after_all := ut_executable(self, a_after_all_proc_name, ut_utils.gc_after_all);
3230
return;
3331
end;
@@ -37,18 +35,15 @@ create or replace type body ut_suite as
3735
begin
3836
l_is_valid :=
3937
( not self.before_all.is_defined() or self.before_all.is_valid() ) and
40-
( not self.before_each.is_defined() or self.before_each.is_valid() ) and
41-
( not self.after_each.is_defined() or self.after_each.is_valid() ) and
4238
( not self.after_all.is_defined() or self.after_all.is_valid() );
4339
return l_is_valid;
4440
end;
4541

4642
overriding member function do_execute(self in out nocopy ut_suite, a_listener in out nocopy ut_event_listener_base) return boolean is
4743
l_suite_savepoint varchar2(30);
4844
l_item_savepoint varchar2(30);
49-
l_completed_without_errors boolean;
5045
l_suite_step_without_errors boolean;
51-
46+
5247
procedure do_fail(a_prefix varchar2) is
5348
l_results ut_assert_results := ut_assert_processor.get_asserts_results();
5449
begin
@@ -59,15 +54,15 @@ create or replace type body ut_suite as
5954
begin
6055
ut_utils.debug_log('ut_suite.execute');
6156
a_listener.fire_before_event(ut_utils.gc_suite,self);
62-
63-
self.start_time := current_timestamp;
57+
58+
self.start_time := current_timestamp;
6459

6560
if self.get_ignore_flag() then
6661
self.result := ut_utils.tr_ignore;
6762
self.end_time := self.start_time;
6863
ut_utils.debug_log('ut_suite .execute - ignored');
6964
else
70-
65+
7166
if self.is_valid() then
7267

7368
l_suite_savepoint := self.create_savepoint_if_needed();
@@ -77,45 +72,19 @@ create or replace type body ut_suite as
7772

7873
if l_suite_step_without_errors then
7974
for i in 1 .. self.items.count loop
80-
l_completed_without_errors := true;
81-
82-
--savepoint
83-
l_item_savepoint := self.items(i).create_savepoint_if_needed();
84-
85-
--before each
86-
--includes listener calls for before and after actions
87-
l_completed_without_errors := self.before_each.do_execute(self, a_listener);
88-
89-
-- execute the item (test or suite)
90-
if l_completed_without_errors then
91-
l_completed_without_errors := self.items(i).do_execute(a_listener);
92-
else
93-
self.items(i).fail(a_listener, 'Beforeach procedure failed:'||chr(10)||ut_assert_processor.get_asserts_results()(1).error_message);
94-
end if;
95-
96-
--after each
97-
--includes listener calls for before and after actions
98-
--run afteeach even if a test raised an exception
99-
l_completed_without_errors := self.after_each.do_execute(self, a_listener);
100-
if not l_completed_without_errors then
101-
self.put_warning('Aftereach procedure failed:'||chr(10)||ut_assert_processor.get_asserts_results()(1).error_message);
102-
end if;
103-
104-
--rollback to savepoint
105-
self.items(i).rollback_to_savepoint(l_item_savepoint);
106-
75+
self.items(i).do_execute(a_listener);
10776
end loop;
108-
109-
l_suite_step_without_errors := self.after_all.do_execute(self, a_listener);
110-
if not l_suite_step_without_errors then
111-
self.put_warning('Afterall procedure failed: '||chr(10)||ut_assert_processor.get_asserts_results()(1).error_message);
112-
end if;
11377
else
11478
do_fail('Beforeall procedure failed: '||chr(10));
11579
end if;
11680

81+
l_suite_step_without_errors := self.after_all.do_execute(self, a_listener);
82+
if not l_suite_step_without_errors then
83+
self.put_warning('Afterall procedure failed: '||chr(10)||ut_assert_processor.get_asserts_results()(1).error_message);
84+
end if;
85+
11786
self.rollback_to_savepoint(l_suite_savepoint);
118-
87+
11988
else
12089
do_fail(null);
12190
end if;
@@ -126,7 +95,7 @@ create or replace type body ut_suite as
12695
end if;
12796
a_listener.fire_after_event(ut_utils.gc_suite,self);
12897

129-
return l_completed_without_errors;
98+
return l_suite_step_without_errors;
13099
end;
131100

132101
end;

source/core/types/ut_suite.tps

Lines changed: 2 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -20,16 +20,7 @@ create or replace type ut_suite under ut_logical_suite (
2020
* Procedure exists within the package of the suite
2121
*/
2222
before_all ut_executable,
23-
/**
24-
* The procedure to be invoked before each of the child items of the suite (executed each time for each item)
25-
* Procedure exists within the package of the suite
26-
*/
27-
before_each ut_executable,
28-
/**
29-
* The procedure to be invoked after each of the child items of the suite (executed each time for each item)
30-
* Procedure exists within the package of the suite
31-
*/
32-
after_each ut_executable,
23+
3324
/**
3425
* The procedure to be invoked after all of the items of the suite (executed once)
3526
* Procedure exists within the package of the suite
@@ -38,7 +29,7 @@ create or replace type ut_suite under ut_logical_suite (
3829
constructor function ut_suite (
3930
self in out nocopy ut_suite , a_object_owner varchar2 := null, a_object_name varchar2, a_name varchar2, a_path varchar2, a_description varchar2 := null,
4031
a_rollback_type integer := null, a_ignore_flag boolean := false, a_before_all_proc_name varchar2 := null,
41-
a_after_all_proc_name varchar2 := null, a_before_each_proc_name varchar2 := null, a_after_each_proc_name varchar2 := null
32+
a_after_all_proc_name varchar2 := null
4233
) return self as result,
4334
overriding member function is_valid return boolean,
4435
/**

source/core/types/ut_test.tpb

Lines changed: 21 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -18,24 +18,30 @@ create or replace type body ut_test as
1818

1919
constructor function ut_test(
2020
self in out nocopy ut_test, a_object_owner varchar2 := null, a_object_name varchar2, a_name varchar2, a_description varchar2 := null,
21-
a_path varchar2 := null, a_rollback_type integer := null, a_ignore_flag boolean := false, a_before_test_proc_name varchar2 := null, a_after_test_proc_name varchar2 := null
21+
a_path varchar2 := null, a_rollback_type integer := null, a_ignore_flag boolean := false,
22+
a_before_each_proc_name varchar2 := null, a_before_test_proc_name varchar2 := null,
23+
a_after_test_proc_name varchar2 := null, a_after_each_proc_name varchar2 := null
2224
) return self as result is
2325
begin
2426
self.self_type := $$plsql_unit;
2527
self.init(a_object_owner, a_object_name, a_name, a_description, a_path, a_rollback_type, a_ignore_flag);
28+
self.before_each := ut_executable(self, a_before_each_proc_name, ut_utils.gc_before_each);
2629
self.before_test := ut_executable(self, a_before_test_proc_name, ut_utils.gc_before_test);
2730
self.item := ut_executable(self, a_name, ut_utils.gc_test_execute);
2831
self.after_test := ut_executable(self, a_after_test_proc_name, ut_utils.gc_after_test);
32+
self.after_each := ut_executable(self, a_after_each_proc_name, ut_utils.gc_after_each);
2933
return;
3034
end;
3135

3236
member function is_valid return boolean is
3337
l_is_valid boolean;
3438
begin
3539
l_is_valid :=
40+
( not self.before_each.is_defined() or self.before_each.is_valid() ) and
3641
( not self.before_test.is_defined() or self.before_test.is_valid() ) and
3742
( self.item.is_valid() ) and
38-
( not self.after_test.is_defined() or self.after_test.is_valid() );
43+
( not self.after_test.is_defined() or self.after_test.is_valid() ) and
44+
( not self.after_each.is_defined() or self.after_each.is_valid() );
3945
return l_is_valid;
4046
end;
4147

@@ -60,19 +66,24 @@ create or replace type body ut_test as
6066
l_savepoint := self.create_savepoint_if_needed();
6167

6268
--includes listener calls for before and after actions
63-
l_completed_without_errors := self.before_test.do_execute(self, a_listener);
64-
69+
l_completed_without_errors := self.before_each.do_execute(self, a_listener);
70+
6571
if l_completed_without_errors then
66-
-- execute the test
67-
self.item.do_execute(self, a_listener);
72+
l_completed_without_errors := self.before_test.do_execute(self, a_listener);
6873

69-
end if;
70-
-- perform cleanup regardless of the test or setup failure
71-
self.after_test.do_execute(self, a_listener);
74+
if l_completed_without_errors then
75+
-- execute the test
76+
self.item.do_execute(self, a_listener);
7277

78+
end if;
79+
-- perform cleanup regardless of the test or setup failure
80+
self.after_test.do_execute(self, a_listener);
81+
end if;
82+
83+
self.after_each.do_execute(self, a_listener);
7384
self.rollback_to_savepoint(l_savepoint);
74-
7585
end if;
86+
7687
self.calc_execution_result();
7788
self.end_time := current_timestamp;
7889
end if;

source/core/types/ut_test.tps

Lines changed: 13 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -15,6 +15,11 @@ create or replace type ut_test under ut_suite_item (
1515
See the License for the specific language governing permissions and
1616
limitations under the License.
1717
*/
18+
/*
19+
* The procedure to be invoked before invoking the test and before_test procedure.
20+
* Procedure exists within the same package as the test itself and is similar for all tests in the suite
21+
*/
22+
before_each ut_executable,
1823
/**
1924
* The procedure to be invoked before invoking the test
2025
* Procedure exists within the same package as the test itself
@@ -29,14 +34,21 @@ create or replace type ut_test under ut_suite_item (
2934
* Procedure exists within the same package as the test itself
3035
*/
3136
after_test ut_executable,
37+
/*
38+
* The procedure to be invoked after invoking the test and after_test procedure.
39+
* Procedure exists within the same package as the test itself and is similar for all tests in the suite
40+
*/
41+
after_each ut_executable,
3242
/**
3343
* The list of assert results as well as database errors encountered while invoking
3444
* The test procedure and the before_test/after_test blocks
3545
*/
3646
results ut_assert_results,
3747
constructor function ut_test(
3848
self in out nocopy ut_test, a_object_owner varchar2 := null, a_object_name varchar2, a_name varchar2, a_description varchar2 := null,
39-
a_path varchar2 := null, a_rollback_type integer := null, a_ignore_flag boolean := false, a_before_test_proc_name varchar2 := null, a_after_test_proc_name varchar2 := null
49+
a_path varchar2 := null, a_rollback_type integer := null, a_ignore_flag boolean := false,
50+
a_before_each_proc_name varchar2 := null, a_before_test_proc_name varchar2 := null,
51+
a_after_test_proc_name varchar2 := null, a_after_each_proc_name varchar2 := null
4052
) return self as result,
4153
member function is_valid return boolean,
4254
overriding member function do_execute(self in out nocopy ut_test, a_listener in out nocopy ut_event_listener_base) return boolean,

source/core/ut_suite_manager.pkb

Lines changed: 6 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -120,9 +120,7 @@ create or replace package body ut_suite_manager is
120120
a_rollback_type => l_suite_rollback,
121121
a_ignore_flag => l_annotation_data.package_annotations.exists('disabled'),
122122
a_before_all_proc_name => l_suite_setup_proc,
123-
a_after_all_proc_name => l_suite_teardown_proc,
124-
a_before_each_proc_name => l_default_setup_proc,
125-
a_after_each_proc_name => l_default_teardown_proc
123+
a_after_all_proc_name => l_suite_teardown_proc
126124
);
127125

128126

@@ -174,7 +172,9 @@ create or replace package body ut_suite_manager is
174172
a_rollback_type => l_rollback_type,
175173
a_ignore_flag => l_proc_annotations.exists('disabled'),
176174
a_before_test_proc_name => l_setup_procedure,
177-
a_after_test_proc_name => l_teardown_procedure
175+
a_after_test_proc_name => l_teardown_procedure,
176+
a_before_each_proc_name => l_default_setup_proc,
177+
a_after_each_proc_name => l_default_teardown_proc
178178
);
179179

180180
l_suite.add_item(l_test);
@@ -418,13 +418,13 @@ create or replace package body ut_suite_manager is
418418
end if;
419419
end skip_by_path;
420420

421-
function package_exists_in_cur_schema(p_package_name varchar2) return boolean is
421+
function package_exists_in_cur_schema(a_package_name varchar2) return boolean is
422422
l_cnt number;
423423
begin
424424
select count(*)
425425
into l_cnt
426426
from all_objects t
427-
where t.object_name = upper(p_package_name)
427+
where t.object_name = upper(a_package_name)
428428
and t.object_type = 'PACKAGE'
429429
and t.owner = c_current_schema;
430430
return l_cnt > 0;

source/reporters/ut_teamcity_reporter.tpb

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -44,7 +44,7 @@ create or replace type body ut_teamcity_reporter is
4444

4545
l_test_full_name := lower(a_test.item.owner_name)||'.'||lower(a_test.item.object_name)||'.'||lower(a_test.item.procedure_name);
4646

47-
self.print_text(ut_teamcity_reporter_helper.test_started(a_test_name => l_test_full_name));
47+
self.print_text(ut_teamcity_reporter_helper.test_started(a_test_name => l_test_full_name,a_capture_standard_output => true));
4848

4949
end;
5050

0 commit comments

Comments
 (0)