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

Skip to content

Commit 9abe809

Browse files
committed
Implemented the runner to execute suites/tests by path
The path supports several formats: * <schema> * <schema>:<suitepath>[.<test_proc_name>] * <schema>.<suite_package>[.<test_proc_name>] The user-freandly interface is located in `ut` package Also made some refactoring with ut_test objects, put object_path property there to store fully qualified path to suite/test object name now contains only the name of the object (package/procedure)
1 parent 9a8fb25 commit 9abe809

11 files changed

Lines changed: 313 additions & 85 deletions

File tree

source/core/types/ut_test.tpb

Lines changed: 8 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -1,11 +1,16 @@
11
create or replace type body ut_test is
22

3-
constructor function ut_test(self in out nocopy ut_test,a_object_name varchar2, a_test_procedure varchar2, a_test_name in varchar2 default null, a_owner_name varchar2 default null, a_setup_procedure varchar2 default null, a_teardown_procedure varchar2 default null, a_rollback_type integer default null)
3+
constructor function ut_test(self in out nocopy ut_test,a_object_name varchar2,a_object_path varchar2 default null, a_test_procedure varchar2, a_test_name in varchar2 default null, a_owner_name varchar2 default null, a_setup_procedure varchar2 default null, a_teardown_procedure varchar2 default null, a_rollback_type integer default null)
44
return self as result is
55
begin
6-
self.name := a_test_name;
6+
7+
self.init(a_desc_name => a_test_name
8+
,a_object_name => a_test_procedure
9+
,a_object_type => 1
10+
,a_object_path => a_object_path
11+
,a_rollback_type => a_rollback_type);
12+
713
self.object_type := 1;
8-
self.object_name := lower(trim(a_test_procedure));
914
self.test := ut_executable(object_name => trim(a_object_name)
1015
,procedure_name => trim(a_test_procedure)
1116
,owner_name => trim(a_owner_name));
@@ -22,12 +27,6 @@ create or replace type body ut_test is
2227
,owner_name => trim(a_owner_name));
2328
end if;
2429

25-
if a_rollback_type is not null then
26-
ut_utils.validate_rollback_type(a_rollback_type);
27-
self.rollback_type := a_rollback_type;
28-
else
29-
self.rollback_type := ut_utils.gc_rollback_auto;
30-
end if;
3130
return;
3231
end ut_test;
3332

source/core/types/ut_test.tps

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -4,7 +4,7 @@ create or replace type ut_test force under ut_test_object
44
test ut_executable,
55
teardown ut_executable,
66

7-
constructor function ut_test(self in out nocopy ut_test,a_object_name varchar2, a_test_procedure varchar2, a_test_name in varchar2 default null, a_owner_name varchar2 default null, a_setup_procedure varchar2 default null, a_teardown_procedure varchar2 default null, a_rollback_type integer default null)
7+
constructor function ut_test(self in out nocopy ut_test,a_object_name varchar2,a_object_path varchar2 default null, a_test_procedure varchar2, a_test_name in varchar2 default null, a_owner_name varchar2 default null, a_setup_procedure varchar2 default null, a_teardown_procedure varchar2 default null, a_rollback_type integer default null)
88
return self as result,
99

1010
member function is_valid return boolean,

source/core/types/ut_test_object.tpb

Lines changed: 24 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,8 +1,23 @@
11
create or replace type body ut_test_object is
2+
3+
member procedure init(self in out nocopy ut_test_object, a_desc_name varchar2, a_object_name varchar2, a_object_type integer, a_object_path varchar2 default null, a_rollback_type integer default null) is
4+
begin
5+
self.name := a_desc_name;
6+
self.object_type := a_object_type;
7+
self.object_name := lower(trim(a_object_name));
8+
self.object_path := nvl(lower(trim(a_object_path)), self.object_name);
9+
10+
if a_rollback_type is not null then
11+
ut_utils.validate_rollback_type(a_rollback_type);
12+
self.rollback_type := a_rollback_type;
13+
else
14+
self.rollback_type := ut_utils.gc_rollback_auto;
15+
end if;
16+
return;
17+
end;
218

319
member procedure set_ignore_flag(self in out nocopy ut_test_object, a_ignore_flag boolean) is
420
begin
5-
621
self.ignore_flag := case a_ignore_flag when true then 1 else 0 end;
722
end;
823
member procedure set_rollback_type(self in out nocopy ut_test_object, a_rollback_type integer) is
@@ -11,6 +26,14 @@ create or replace type body ut_test_object is
1126

1227
self.rollback_type := a_rollback_type;
1328
end;
29+
30+
member procedure set_object_path(self in out nocopy ut_test_object, a_path varchar2) is
31+
begin
32+
if lower(a_path) not like lower('%'||self.object_name) then
33+
raise_application_error(-20200,'Incorrect object path');
34+
end if;
35+
self.object_path := a_path;
36+
end;
1437

1538
member function execution_time return number is
1639
l_sec number;

source/core/types/ut_test_object.tps

Lines changed: 7 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,16 +1,21 @@
11
create or replace type ut_test_object force under ut_composite_object
22
(
3-
start_time timestamp with time zone,
4-
end_time timestamp with time zone,
3+
54
object_name varchar2(4000),
5+
object_path varchar2(4000),
66
rollback_type integer(1), -- ut_utils:gc_rollback_% constants
77
ignore_flag integer(1),
8+
start_time timestamp with time zone,
9+
end_time timestamp with time zone,
10+
11+
member procedure init(self in out nocopy ut_test_object, a_desc_name varchar2, a_object_name varchar2, a_object_type integer, a_object_path varchar2 default null, a_rollback_type integer default null),
812

913
not instantiable member procedure do_execute(self in out nocopy ut_test_object, a_reporter in out nocopy ut_reporter),
1014
final member procedure do_execute(self in out nocopy ut_test_object),
1115

1216
member procedure set_ignore_flag(self in out nocopy ut_test_object, a_ignore_flag boolean),
1317
member procedure set_rollback_type(self in out nocopy ut_test_object, a_rollback_type integer),
18+
member procedure set_object_path(self in out nocopy ut_test_object, a_path varchar2),
1419

1520
member function execution_time return number
1621
)

source/core/types/ut_test_suite.tpb

Lines changed: 19 additions & 22 deletions
Original file line numberDiff line numberDiff line change
@@ -1,20 +1,17 @@
11
create or replace type body ut_test_suite is
22

3-
constructor function ut_test_suite(self in out nocopy ut_test_suite,a_suite_name varchar2, a_object_name varchar2 default null, a_items ut_objects_list default ut_objects_list(), a_rollback_type number default null)
3+
constructor function ut_test_suite (self in out nocopy ut_test_suite, a_suite_name varchar2, a_object_name varchar2, a_object_path varchar2 default null, a_items ut_objects_list default ut_objects_list(), a_rollback_type number default null)
44
return self as result is
55
begin
6-
self.name := a_suite_name;
7-
self.object_type := 2;
8-
self.items := a_items;
9-
self.object_name := lower(trim(a_object_name));
10-
11-
if a_rollback_type is not null then
12-
ut_utils.validate_rollback_type(a_rollback_type);
13-
self.rollback_type := a_rollback_type;
14-
else
15-
self.rollback_type := ut_utils.gc_rollback_auto;
16-
end if;
176

7+
self.init(a_desc_name => a_suite_name
8+
,a_object_name => a_object_name
9+
,a_object_type => 2
10+
,a_object_path => a_object_path
11+
,a_rollback_type => a_rollback_type);
12+
13+
self.items := a_items;
14+
1815
return;
1916
end ut_test_suite;
2017

@@ -43,37 +40,37 @@ create or replace type body ut_test_suite is
4340

4441
overriding member procedure do_execute(self in out nocopy ut_test_suite, a_reporter in out nocopy ut_reporter) is
4542
l_test_object ut_test_object;
46-
l_savepoint varchar2(30);
43+
l_savepoint varchar2(30);
4744
begin
4845
a_reporter.before_suite(self);
4946

5047
ut_utils.debug_log('ut_test_suite.execute');
51-
48+
5249
self.start_time := current_timestamp;
53-
50+
5451
if self.ignore_flag = 1 then
5552
self.result := ut_utils.tr_ignore;
5653
elsif self.is_valid() then
57-
54+
5855
if self.rollback_type = ut_utils.gc_rollback_auto then
5956
l_savepoint := ut_utils.gen_savepoint_name;
6057
execute immediate 'savepoint ' || l_savepoint;
6158
end if;
6259

6360
if self.setup is not null then
64-
a_reporter.before_suite_setup(self);
61+
a_reporter.before_suite_setup(self);
6562
self.setup.do_execute;
6663
a_reporter.after_suite_setup(self);
6764
end if;
6865

6966
for i in self.items.first .. self.items.last loop
70-
a_reporter.before_suite_item(a_suite => self,a_item_index => i);
71-
67+
a_reporter.before_suite_item(a_suite => self, a_item_index => i);
68+
7269
l_test_object := treat(self.items(i) as ut_test_object);
7370
l_test_object.do_execute(a_reporter => a_reporter);
7471
self.items(i) := l_test_object;
75-
76-
a_reporter.after_suite_item(a_suite => self,a_item_index => i);
72+
73+
a_reporter.after_suite_item(a_suite => self, a_item_index => i);
7774
end loop;
7875

7976
if self.teardown is not null then
@@ -83,7 +80,7 @@ create or replace type body ut_test_suite is
8380
end if;
8481

8582
self.calc_execution_result;
86-
83+
8784
if self.rollback_type = ut_utils.gc_rollback_auto then
8885
execute immediate 'rollback to ' || l_savepoint;
8986
end if;

source/core/types/ut_test_suite.tps

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -4,7 +4,7 @@ create or replace type ut_test_suite force under ut_test_object
44
setup ut_executable,
55
teardown ut_executable,
66

7-
constructor function ut_test_suite(self in out nocopy ut_test_suite,a_suite_name varchar2, a_object_name varchar2 default null, a_items ut_objects_list default ut_objects_list(), a_rollback_type number default null)
7+
constructor function ut_test_suite(self in out nocopy ut_test_suite,a_suite_name varchar2, a_object_name varchar2, a_object_path varchar2 default null, a_items ut_objects_list default ut_objects_list(), a_rollback_type number default null)
88
return self as result,
99

1010
member procedure set_suite_setup (self in out nocopy ut_test_suite, a_object_name in varchar2, a_proc_name in varchar2, a_owner_name varchar2 default null),

0 commit comments

Comments
 (0)