@@ -16,15 +16,65 @@ create or replace package body test_before_after_annotations is
1616 execute immediate 'drop package '||a_package_name;
1717 end;
1818 begin
19+ l_dummy_utility_pkg_spec := '
20+ create or replace package dummy_utility_pkg_1 is
21+ g_executed_procedures ut_varchar2_list;
22+ g_test4_executed boolean := false;
23+ g_test5_executed boolean := false;
24+ g_beforetest_one_err_procedure boolean := false;
25+
26+ procedure insert_executed_procedure(a_procedure_name varchar2);
27+
28+ procedure test1;
29+
30+ procedure test3;
31+
32+ procedure test4;
33+
34+ procedure test5;
35+ end;
36+ ';
37+
38+ l_dummy_utility_pkg_body := '
39+ create or replace package body dummy_utility_pkg_1 is
40+ procedure insert_executed_procedure(a_procedure_name varchar2)
41+ is
42+ begin
43+ if g_executed_procedures is null then
44+ g_executed_procedures := ut_varchar2_list(a_procedure_name);
45+ else
46+ g_executed_procedures.extend;
47+ g_executed_procedures(g_executed_procedures.count) := a_procedure_name;
48+ end if;
49+ end;
50+
51+ procedure test1 is
52+ begin
53+ insert_executed_procedure(''test1'');
54+ end;
55+
56+ procedure test3 is
57+ begin
58+ insert_executed_procedure(''test3'');
59+ end;
60+
61+ procedure test4 is
62+ begin
63+ g_test4_executed := true;
64+ end;
65+
66+ procedure test5 is
67+ begin
68+ g_test4_executed := true;
69+ end;
70+ end;
71+ ';
72+
1973 l_test_package_spec := '
2074 create or replace package dummy_before_after_test is
2175 --%suite(Package to test annotations beforetest and aftertest)
2276
23- l_dummy_1 integer;
24- l_dummy_2 integer;
25- l_dummy_3 integer;
26-
27- --%beforeeach
77+ --%aftereach
2878 procedure clean_global_variables;
2979
3080 --%test(Beforetest with call to procedure external to the test package)
@@ -37,9 +87,12 @@ create or replace package body test_before_after_annotations is
3787 procedure beforetest_multi_ext_procedure;
3888
3989 --%test(Beforetest with call to multi procedures where one does not exist)
40- --%beforetest(dummy_utility_pkg_1.test1 , non_existent_procedure, ut3_tester.dummy_utility_pkg_1.test3 )
90+ --%beforetest(dummy_utility_pkg_1.test4 , non_existent_procedure, ut3_tester.dummy_utility_pkg_1.test5 )
4191 procedure beforetest_one_err_procedure;
4292
93+ --%test(Test which beforetest procedures were executed)
94+ procedure test_executed_beforetests;
95+
4396 procedure test2;
4497 end;
4598 ';
@@ -48,63 +101,47 @@ create or replace package body test_before_after_annotations is
48101 create or replace package body dummy_before_after_test is
49102 procedure clean_global_variables is
50103 begin
51- l_dummy_1 := null;
52- l_dummy_2 := null;
53- l_dummy_3 := null;
104+ dummy_utility_pkg_1.g_executed_procedures := null;
54105 end;
55106
56107 procedure beforetest_one_ext_procedure is
57108 begin
58- ut3.ut.expect(l_dummy_1) .to_equal(1 );
109+ ut3.ut.expect(dummy_utility_pkg_1.g_executed_procedures(1)) .to_equal(''test1'' );
59110 end;
60111
61112 procedure beforetest_multi_ext_procedure
62113 is
63114 begin
64- ut3.ut.expect(l_dummy_1) .to_equal(1);
65- ut3.ut.expect(l_dummy_2) .to_equal(2 );
66- ut3.ut.expect(l_dummy_3) .to_equal(3 );
115+ ut3.ut.expect(dummy_utility_pkg_1.g_executed_procedures(1)) .to_equal(''test1'');
116+ ut3.ut.expect(dummy_utility_pkg_1.g_executed_procedures(2)) .to_equal(''test2'' );
117+ ut3.ut.expect(dummy_utility_pkg_1.g_executed_procedures(3)) .to_equal(''test3'' );
67118 end;
68119
69120 procedure beforetest_one_err_procedure
70121 is
71122 begin
72- null;
123+ dummy_utility_pkg_1.g_beforetest_one_err_procedure := true;
124+ end;
125+
126+ procedure test_executed_beforetests
127+ is
128+ begin
129+ ut3.ut.expect(dummy_utility_pkg_1.g_test4_executed).to_be_true;
130+ ut3.ut.expect(dummy_utility_pkg_1.g_test5_executed).to_be_false;
131+ ut3.ut.expect(dummy_utility_pkg_1.g_beforetest_one_err_procedure).to_be_false;
73132 end;
74133
75134 procedure test2 is
76135 begin
77- l_dummy_2 := 2;
136+ dummy_utility_pkg_1.insert_executed_procedure(''test2'');
78137 end;
79138 end;
80139 ';
81140
82- l_dummy_utility_pkg_spec := '
83- create or replace package dummy_utility_pkg_1 is
84- procedure test1;
85-
86- procedure test3;
87- end;
88- ';
89-
90- l_dummy_utility_pkg_body := '
91- create or replace package body dummy_utility_pkg_1 is
92- procedure test1 is
93- begin
94- dummy_before_after_test.l_dummy_1 := 1;
95- end;
96-
97- procedure test3 is
98- begin
99- dummy_before_after_test.l_dummy_3 := 3;
100- end;
101- end;
102- ';
103-
104- execute immediate l_test_package_spec;
105- execute immediate l_test_package_body;
106141 execute immediate l_dummy_utility_pkg_spec;
107142 execute immediate l_dummy_utility_pkg_body;
143+ execute immediate l_test_package_spec;
144+ execute immediate l_test_package_body;
108145
109146 --Execute the tests and recolect the results
110147 select * bulk collect into l_test_results from table(ut3.ut.run(('dummy_before_after_test')));
@@ -125,14 +162,23 @@ create or replace package body test_before_after_annotations is
125162 procedure beforetest_multi_ext_procedure
126163 is
127164 begin
165+ --Also test the execution order of the beforetest procedures
128166 ut.expect(g_tests_results).to_match('^\s*Beforetest with call to multi procedures external and interal to the test package \[[\.0-9]+ sec\]\s*$','m');
129167 ut.expect(g_tests_results).not_to_match('beforetest_multi_ext_procedure');
130168 end;
131169
132170 procedure beforetest_one_err_procedure
133171 is
134172 begin
173+ ut.expect(g_tests_results).to_match('^\s*Call params for before_test are not valid: procedure does not exist\s*[^.]+\.DUMMY_BEFORE_AFTER_TEST\.NON_EXISTENT_PROCEDURE\s*$', 'm');
135174 ut.expect(g_tests_results).not_to_match('^\s*Beforetest with call to multi procedures where one does not exist \[[\.0-9]+ sec\]\s*$','m');
136- ut.expect(g_tests_results).to_match('beforetest_one_err_procedure');
137175 end;
138- end;
176+
177+ procedure test_executed_beforetests
178+ is
179+ begin
180+ ut.expect(g_tests_results).to_match('^\s*Test which beforetest procedures were executed \[[\.0-9]+ sec\]\s*$','m');
181+ ut.expect(g_tests_results).not_to_match('test_executed_beforetests');
182+ end;
183+ end;
184+ /
0 commit comments