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

Skip to content

Commit 327a7d5

Browse files
committed
Migrating some self-tests to utPLSQL.
1 parent da26f71 commit 327a7d5

5 files changed

Lines changed: 329 additions & 0 deletions

File tree

test/install_tests.sql

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -16,6 +16,8 @@ whenever oserror exit failure rollback
1616
@ut_expectations/test_expect_not_to_be_null.pks
1717
@@ut_runner/test_ut_runner.pks
1818
@@ut_annotation_manager/test_annotation_manager.pks
19+
@@ut_suite/test_ut_suite.pks
20+
@@ut_test/test_ut_test.pks
1921

2022
@core.pkb
2123
@ut_utils/test_ut_utils.pkb
@@ -31,6 +33,8 @@ whenever oserror exit failure rollback
3133
@ut_expectations/test_expect_not_to_be_null.pkb
3234
@@ut_runner/test_ut_runner.pkb
3335
@@ut_annotation_manager/test_annotation_manager.pkb
36+
@@ut_suite/test_ut_suite.pkb
37+
@@ut_test/test_ut_test.pkb
3438

3539
set linesize 200
3640
set define on

test/ut_suite/test_ut_suite.pkb

Lines changed: 94 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,94 @@
1+
create or replace package body test_ut_suite is
2+
3+
procedure drop_test_package is
4+
begin
5+
test_ut_test.execute_autonomous('drop package ut_test_pkg');
6+
end;
7+
8+
procedure disabled_suite is
9+
l_results clob;
10+
begin
11+
--Arrange
12+
test_ut_test.execute_autonomous(
13+
q'[create or replace package ut_test_pkg as
14+
--%suite
15+
--%disabled
16+
gv_glob_val number := 0;
17+
--%beforeall
18+
procedure before_all;
19+
--%test
20+
procedure test1;
21+
--%test
22+
procedure test2;
23+
end;]');
24+
--Act
25+
l_results := test_ut_test.run_test('ut_test_pkg');
26+
--Assert
27+
ut.expect(l_results).to_be_like('%test1 [0 sec] (IGNORED)%');
28+
ut.expect(l_results).to_be_like('%test2 [0 sec] (IGNORED)%');
29+
ut.expect(l_results).to_be_like('%2 tests, 0 failed, 0 errored, 2 disabled, 0 warning(s)%');
30+
end;
31+
32+
procedure beforeall_errors is
33+
l_results clob;
34+
begin
35+
--Arrange
36+
test_ut_test.execute_autonomous(
37+
q'[create or replace package ut_test_pkg as
38+
--%suite
39+
gv_glob_val integer := 0;
40+
--%beforeall
41+
procedure failing_procedure;
42+
--%test
43+
procedure test1;
44+
--%test
45+
procedure test2;
46+
end;]');
47+
test_ut_test.execute_autonomous(
48+
q'[create or replace package body ut_test_pkg as
49+
procedure failing_procedure is begin gv_glob_val := 1/0; end;
50+
procedure test1 is begin gv_glob_val := gv_glob_val + 1; ut3.ut.expect(1).to_equal(2); end;
51+
procedure test2 is begin gv_glob_val := gv_glob_val + 1; ut3.ut.expect(1).to_equal(2); end;
52+
end;]');
53+
--Act
54+
l_results := test_ut_test.run_test('ut_test_pkg');
55+
--Assert
56+
ut.expect(l_results).to_be_like('%test1 [% sec] (FAILED - 1)%');
57+
ut.expect(l_results).to_be_like('%test2 [% sec] (FAILED - 2)%');
58+
ut.expect(l_results).to_be_like('%2 tests, 0 failed, 2 errored, 0 disabled, 0 warning(s)%');
59+
ut.expect(test_ut_test.get_value('ut_test_pkg.gv_glob_val')).to_equal(0);
60+
end;
61+
62+
procedure aftereall_errors is
63+
l_results clob;
64+
begin
65+
--Arrange
66+
test_ut_test.execute_autonomous(
67+
q'[create or replace package ut_test_pkg as
68+
--%suite
69+
gv_glob_val integer := 0;
70+
--%afterall
71+
procedure failing_procedure;
72+
--%test
73+
procedure test1;
74+
--%test
75+
procedure test2;
76+
end;]');
77+
test_ut_test.execute_autonomous(
78+
q'[create or replace package body ut_test_pkg as
79+
procedure failing_procedure is begin gv_glob_val := 1/0; end;
80+
procedure test1 is begin gv_glob_val := gv_glob_val + 1; ut3.ut.expect(1).to_equal(1); end;
81+
procedure test2 is begin gv_glob_val := gv_glob_val + 1; ut3.ut.expect(1).to_equal(1); end;
82+
end;]');
83+
--Act
84+
l_results := test_ut_test.run_test('ut_test_pkg');
85+
--Assert
86+
ut.expect(l_results).to_be_like('%test1 [% sec]%');
87+
ut.expect(l_results).to_be_like('%test2 [% sec]%');
88+
ut.expect(l_results).not_to_be_like('%test1 [% sec] (FAILED - 1)%');
89+
ut.expect(l_results).not_to_be_like('%test2 [% sec] (FAILED - 2)%');
90+
ut.expect(l_results).to_be_like('%2 tests, 0 failed, 0 errored, 0 disabled, 1 warning(s)%');
91+
ut.expect(test_ut_test.get_value('ut_test_pkg.gv_glob_val')).to_equal(2);
92+
end;
93+
end;
94+
/

test/ut_suite/test_ut_suite.pks

Lines changed: 19 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,19 @@
1+
create or replace package test_ut_suite is
2+
3+
--%suite(ut_suite)
4+
--%suitepath(utplsql.core)
5+
6+
--%afterall
7+
procedure drop_test_package;
8+
9+
--%test(Disabled flag skips tests execution in suite)
10+
procedure disabled_suite;
11+
12+
--%test(Marks each test as errored if beforeall raises exception)
13+
procedure beforeall_errors;
14+
15+
--%test(Reports warnings for each test if afterall raises exception)
16+
procedure aftereall_errors;
17+
18+
end;
19+
/

test/ut_test/test_ut_test.pkb

Lines changed: 180 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,180 @@
1+
create or replace package body test_ut_test is
2+
3+
4+
procedure execute_autonomous(a_sql varchar2) is
5+
pragma autonomous_transaction;
6+
begin
7+
if a_sql is not null then
8+
execute immediate a_sql;
9+
end if;
10+
commit;
11+
end;
12+
13+
function run_test(a_path varchar2) return clob is
14+
l_lines ut3.ut_varchar2_list;
15+
begin
16+
select * bulk collect into l_lines from table(ut3.ut.run(a_path));
17+
return ut3.ut_utils.table_to_clob(l_lines);
18+
end;
19+
20+
function get_value(a_variable varchar2) return integer is
21+
l_glob_val integer;
22+
begin
23+
execute immediate 'begin :l_glob_val := '||a_variable||'; end;' using out l_glob_val;
24+
return l_glob_val;
25+
end;
26+
27+
procedure drop_test_package is
28+
begin
29+
execute_autonomous('drop package ut_test_pkg');
30+
end;
31+
32+
33+
procedure disabled_test is
34+
l_results clob;
35+
begin
36+
--Arrange
37+
execute_autonomous(
38+
q'[create or replace package ut_test_pkg as
39+
--%suite
40+
gv_glob_val integer := 0;
41+
--%test
42+
--%disabled
43+
procedure test1;
44+
--%test
45+
procedure test2;
46+
end;]');
47+
execute_autonomous(
48+
q'[create or replace package body ut_test_pkg as
49+
procedure test1 is begin gv_glob_val := gv_glob_val + 1; ut3.ut.expect(1).to_equal(2); end;
50+
procedure test2 is begin gv_glob_val := gv_glob_val + 1; ut3.ut.expect(1).to_equal(1); end;
51+
end;]');
52+
--Act
53+
l_results := run_test('ut_test_pkg');
54+
--Assert
55+
ut.expect(l_results).to_be_like('%test1 [0 sec] (IGNORED)%');
56+
ut.expect(l_results).to_be_like('%2 tests, 0 failed, 0 errored, 1 disabled, 0 warning(s)%');
57+
ut.expect(get_value('ut_test_pkg.gv_glob_val')).to_equal(1);
58+
end;
59+
60+
procedure aftertest_errors is
61+
l_results clob;
62+
begin
63+
--Arrange
64+
execute_autonomous(
65+
q'[create or replace package ut_test_pkg as
66+
--%suite
67+
gv_glob_val integer := 0;
68+
--%aftertest(failing_procedure)
69+
--%test
70+
procedure test1;
71+
procedure failing_procedure;
72+
--%test
73+
procedure test2;
74+
end;]');
75+
execute_autonomous(
76+
q'[create or replace package body ut_test_pkg as
77+
procedure test1 is begin gv_glob_val := gv_glob_val + 1; ut3.ut.expect(1).to_equal(2); end;
78+
procedure failing_procedure is begin gv_glob_val := 1/0; end;
79+
procedure test2 is begin gv_glob_val := gv_glob_val + 1; ut3.ut.expect(1).to_equal(1); end;
80+
end;]');
81+
--Act
82+
l_results := run_test('ut_test_pkg');
83+
--Assert
84+
ut.expect(l_results).to_be_like('%test1 [% sec] (FAILED - 1)%test2 [% sec]%');
85+
ut.expect(l_results).to_be_like('%2 tests, 0 failed, 1 errored, 0 disabled, 0 warning(s)%');
86+
ut.expect(get_value('ut_test_pkg.gv_glob_val')).to_equal(2);
87+
end;
88+
89+
procedure aftereach_errors is
90+
l_results clob;
91+
begin
92+
--Arrange
93+
execute_autonomous(
94+
q'[create or replace package ut_test_pkg as
95+
--%suite
96+
gv_glob_val integer := 0;
97+
--%aftereach
98+
procedure failing_procedure;
99+
--%test
100+
procedure test1;
101+
--%test
102+
procedure test2;
103+
end;]');
104+
execute_autonomous(
105+
q'[create or replace package body ut_test_pkg as
106+
procedure failing_procedure is begin gv_glob_val := 1/0; end;
107+
procedure test1 is begin gv_glob_val := gv_glob_val + 1; ut3.ut.expect(1).to_equal(2); end;
108+
procedure test2 is begin gv_glob_val := gv_glob_val + 1; ut3.ut.expect(1).to_equal(2); end;
109+
end;]');
110+
--Act
111+
l_results := run_test('ut_test_pkg');
112+
--Assert
113+
ut.expect(l_results).to_be_like('%test1 [% sec] (FAILED - 1)%');
114+
ut.expect(l_results).to_be_like('%test2 [% sec] (FAILED - 2)%');
115+
ut.expect(l_results).to_be_like('%2 tests, 0 failed, 2 errored, 0 disabled, 0 warning(s)%');
116+
ut.expect(get_value('ut_test_pkg.gv_glob_val')).to_equal(2);
117+
end;
118+
119+
procedure beforetest_errors is
120+
l_results clob;
121+
begin
122+
--Arrange
123+
execute_autonomous(
124+
q'[create or replace package ut_test_pkg as
125+
--%suite
126+
gv_glob_val integer := 0;
127+
procedure failing_procedure;
128+
129+
--%beforetest(failing_procedure)
130+
--%test
131+
procedure test1;
132+
--%test
133+
procedure test2;
134+
end;]');
135+
execute_autonomous(
136+
q'[create or replace package body ut_test_pkg as
137+
procedure failing_procedure is begin gv_glob_val := 1/0; end;
138+
procedure test1 is begin gv_glob_val := gv_glob_val + 1; ut3.ut.expect(1).to_equal(2); end;
139+
procedure test2 is begin gv_glob_val := gv_glob_val + 1; ut3.ut.expect(1).to_equal(1); end;
140+
end;]');
141+
--Act
142+
l_results := run_test('ut_test_pkg');
143+
--Assert
144+
ut.expect(l_results).to_be_like('%test1 [% sec] (FAILED - 1)%test2 [% sec]%');
145+
ut.expect(l_results).to_be_like('%2 tests, 0 failed, 1 errored, 0 disabled, 0 warning(s)%');
146+
ut.expect(get_value('ut_test_pkg.gv_glob_val')).to_equal(1);
147+
end;
148+
149+
procedure beforeeach_errors is
150+
l_results clob;
151+
begin
152+
--Arrange
153+
execute_autonomous(
154+
q'[create or replace package ut_test_pkg as
155+
--%suite
156+
gv_glob_val integer := 0;
157+
--%beforeeach
158+
procedure failing_procedure;
159+
--%test
160+
procedure test1;
161+
--%test
162+
procedure test2;
163+
end;]');
164+
execute_autonomous(
165+
q'[create or replace package body ut_test_pkg as
166+
procedure failing_procedure is begin gv_glob_val := 1/0; end;
167+
procedure test1 is begin gv_glob_val := gv_glob_val + 1; ut3.ut.expect(1).to_equal(2); end;
168+
procedure test2 is begin gv_glob_val := gv_glob_val + 1; ut3.ut.expect(1).to_equal(2); end;
169+
end;]');
170+
--Act
171+
l_results := run_test('ut_test_pkg');
172+
--Assert
173+
ut.expect(l_results).to_be_like('%test1 [% sec] (FAILED - 1)%');
174+
ut.expect(l_results).to_be_like('%test2 [% sec] (FAILED - 2)%');
175+
ut.expect(l_results).to_be_like('%2 tests, 0 failed, 2 errored, 0 disabled, 0 warning(s)%');
176+
ut.expect(get_value('ut_test_pkg.gv_glob_val')).to_equal(0);
177+
end;
178+
179+
end;
180+
/

test/ut_test/test_ut_test.pks

Lines changed: 32 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,32 @@
1+
create or replace package test_ut_test is
2+
3+
--%suite(ut_test)
4+
--%suitepath(utplsql.core)
5+
6+
procedure execute_autonomous(a_sql varchar2);
7+
8+
function run_test(a_path varchar2) return clob;
9+
10+
function get_value(a_variable varchar2) return integer;
11+
12+
--%afterall
13+
procedure drop_test_package;
14+
15+
--%test(Disabled flag for a test skips the tests execution in suite)
16+
procedure disabled_test;
17+
18+
--%test(Marks test as errored if aftertest raises exception)
19+
procedure aftertest_errors;
20+
21+
--%test(Marks each test as errored if aftereach raises exception)
22+
procedure aftereach_errors;
23+
24+
--%test(Marks test as errored if beforetest raises exception)
25+
procedure beforetest_errors;
26+
27+
--%test(Marks each test as errored if beforeeach raises exception)
28+
procedure beforeeach_errors;
29+
30+
31+
end;
32+
/

0 commit comments

Comments
 (0)