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

Skip to content

Commit 5a5ae8d

Browse files
committed
step...
1 parent 2660ab1 commit 5a5ae8d

3 files changed

Lines changed: 171 additions & 24 deletions

File tree

source/core/ut_suite_manager.pkb

Lines changed: 33 additions & 24 deletions
Original file line numberDiff line numberDiff line change
@@ -338,9 +338,11 @@ create or replace package body ut_suite_manager is
338338

339339
function get_schema_suites(a_schema_name in varchar2) return tt_schema_suits is
340340
begin
341-
if not g_schema_suites.exists(a_schema_name) then
342-
config_schema(a_schema_name);
343-
end if;
341+
-- Currently cache invalidation on DDL is not implemented so schema is rescaned each time
342+
--if not g_schema_suites.exists(a_schema_name) then
343+
-- config_schema(a_schema_name);
344+
--end if;
345+
config_schema(a_schema_name);
344346

345347
return g_schema_suites(a_schema_name);
346348
end get_schema_suites;
@@ -360,19 +362,17 @@ create or replace package body ut_suite_manager is
360362
end loop;
361363
end if;
362364
end validate_paths;
363-
364-
procedure run(a_paths in ut_varchar2_list, a_reporter in ut_reporter) is
365+
366+
procedure configure_execution_by_path(a_paths in ut_varchar2_list, a_objects_to_run out nocopy ut_objects_list) is
365367
l_paths ut_varchar2_list;
366368
l_path varchar2(32767);
367369
l_schema varchar2(4000);
368-
l_objects_to_run ut_objects_list := ut_objects_list();
369370
l_schema_suites tt_schema_suits;
370371
l_index varchar2(4000 char);
371372
l_suite ut_test_suite;
372373
l_suite_path varchar2(4000);
373374
l_root_suite_name varchar2(4000);
374-
l_reporter ut_reporter := a_reporter;
375-
375+
376376
function clean_paths(a_paths ut_varchar2_list) return ut_varchar2_list is
377377
l_paths ut_varchar2_list := ut_varchar2_list();
378378
begin
@@ -383,8 +383,8 @@ create or replace package body ut_suite_manager is
383383
l_paths := set(l_paths);
384384
return l_paths;
385385
end clean_paths;
386-
387-
procedure set_skipped_flag(a_suite in out nocopy ut_test_object, a_path varchar2) is
386+
387+
procedure skip_by_path(a_suite in out nocopy ut_test_object, a_path varchar2) is
388388
l_root constant varchar2(32767) := regexp_substr(a_path, '\w+');
389389
l_rest_path constant varchar2(32767) := regexp_substr(a_path, '\.(.+)', subexpression => 1);
390390
l_item ut_test_object;
@@ -404,7 +404,7 @@ create or replace package body ut_suite_manager is
404404
--l_object_name := regexp_substr(l_object_name,'\w+$'); -- temporary fix. seems like suite have suitepath in object_name
405405
if regexp_like(l_object_name, l_root, modifier => 'i') then
406406

407-
set_skipped_flag(l_item, l_rest_path);
407+
skip_by_path(l_item, l_rest_path);
408408
l_items.extend;
409409
l_items(l_items.count) := l_item;
410410

@@ -418,12 +418,14 @@ create or replace package body ut_suite_manager is
418418
raise_application_error(-20203, 'Suite note found');
419419
end if;
420420
end if;
421-
end set_skipped_flag;
421+
end skip_by_path;
422+
422423
begin
423424
l_paths := clean_paths(a_paths);
424425

425426
validate_paths(l_paths);
426-
427+
a_objects_to_run := ut_objects_list();
428+
427429
-- current implementation operates only on a single path
428430
-- to be improved later
429431
for i in 1 .. l_paths.count loop
@@ -436,8 +438,8 @@ create or replace package body ut_suite_manager is
436438
-- run whole schema
437439
l_index := l_schema_suites.first;
438440
while l_index is not null loop
439-
l_objects_to_run.extend;
440-
l_objects_to_run(l_objects_to_run.count) := l_schema_suites(l_index);
441+
a_objects_to_run.extend;
442+
a_objects_to_run(a_objects_to_run.count) := l_schema_suites(l_index);
441443
l_index := l_schema_suites.next(l_index);
442444
end loop;
443445
else
@@ -464,24 +466,31 @@ create or replace package body ut_suite_manager is
464466

465467
l_suite := l_schema_suites(l_root_suite_name);
466468

467-
set_skipped_flag(l_suite, regexp_substr(l_suite_path, '\.(.+)', subexpression => 1));
469+
skip_by_path(l_suite, regexp_substr(l_suite_path, '\.(.+)', subexpression => 1));
468470

469-
l_objects_to_run.extend;
470-
l_objects_to_run(l_objects_to_run.count) := l_suite;
471+
a_objects_to_run.extend;
472+
a_objects_to_run(a_objects_to_run.count) := l_suite;
471473

472474
end if;
473475

474476
end loop;
477+
end configure_execution_by_path;
478+
479+
procedure run(a_paths in ut_varchar2_list, a_reporter in ut_reporter) is
480+
l_objects_to_run ut_objects_list;
481+
l_reporter ut_reporter := a_reporter;
482+
ut_running_suite ut_test_suite;
483+
begin
484+
configure_execution_by_path(a_paths,l_objects_to_run);
475485

476486
if l_objects_to_run.count > 0 then
477487
l_reporter.before_run(a_suites => l_objects_to_run);
478488
for i in 1 .. l_objects_to_run.count loop
479-
declare
480-
ut_running_suite ut_test_suite := treat(l_objects_to_run(i) as ut_test_suite);
481-
begin
482-
ut_running_suite.do_execute(l_reporter);
483-
l_objects_to_run(i) := ut_running_suite;
484-
end;
489+
490+
ut_running_suite := treat(l_objects_to_run(i) as ut_test_suite);
491+
ut_running_suite.do_execute(l_reporter);
492+
l_objects_to_run(i) := ut_running_suite;
493+
485494
end loop;
486495
l_reporter.after_run(a_suites => l_objects_to_run);
487496
end if;

tests/helpers/test_package_1.pck

Lines changed: 69 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,69 @@
1+
create or replace package test_package_1 is
2+
3+
--%suite
4+
--%suitepackage(tests)
5+
6+
gv_glob_val number;
7+
8+
--%setup
9+
procedure global_setup;
10+
11+
--%teardown
12+
procedure global_teardown;
13+
14+
--%test
15+
procedure test1;
16+
17+
--%test
18+
--%testsetup(test2_setup)
19+
--%testteardown(test2_teardown)
20+
procedure test2;
21+
22+
procedure test2_setup;
23+
24+
procedure test2_teardown;
25+
26+
end test_package_1;
27+
/
28+
create or replace package body test_package_1 is
29+
30+
gv_var_1 number;
31+
32+
gv_var_1_temp number;
33+
34+
procedure global_setup is
35+
begin
36+
gv_var_1 := 1;
37+
gv_glob_val := 1;
38+
end;
39+
40+
procedure global_teardown is
41+
begin
42+
gv_var_1 := 0;
43+
gv_glob_val := 0;
44+
end;
45+
46+
procedure test1 is
47+
begin
48+
ut.expect(gv_var_1).to_equal(1);
49+
end;
50+
51+
procedure test2 is
52+
begin
53+
ut.expect(gv_var_1).to_equal(2);
54+
end;
55+
56+
procedure test2_setup is
57+
begin
58+
gv_var_1_temp := gv_var_1;
59+
gv_var_1 := 2;
60+
end;
61+
62+
procedure test2_teardown is
63+
begin
64+
gv_var_1 := gv_var_1_temp;
65+
gv_var_1_temp := null;
66+
end;
67+
68+
end test_package_1;
69+
/

tests/helpers/test_package_2.pck

Lines changed: 69 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,69 @@
1+
create or replace package test_package_2 is
2+
3+
--%suite
4+
--%suitepackage(tests.test_package_1)
5+
6+
gv_glob_val varchar2(1);
7+
8+
--%setup
9+
procedure global_setup;
10+
11+
--%teardown
12+
procedure global_teardown;
13+
14+
--%test
15+
procedure test1;
16+
17+
--%test
18+
--%testsetup(test2_setup)
19+
--%testteardown(test2_teardown)
20+
procedure test2;
21+
22+
procedure test2_setup;
23+
24+
procedure test2_teardown;
25+
26+
end test_package_2;
27+
/
28+
create or replace package body test_package_2 is
29+
30+
gv_var_1 varchar2(1);
31+
32+
gv_var_1_temp varchar2(1);
33+
34+
procedure global_setup is
35+
begin
36+
gv_var_1 := 'a';
37+
gv_glob_val := 'z';
38+
end;
39+
40+
procedure global_teardown is
41+
begin
42+
gv_var_1 := 'n';
43+
gv_glob_val := 'n';
44+
end;
45+
46+
procedure test1 is
47+
begin
48+
ut.expect(gv_var_1).to_equal('a');
49+
end;
50+
51+
procedure test2 is
52+
begin
53+
ut.expect(gv_var_1).to_equal('b');
54+
end;
55+
56+
procedure test2_setup is
57+
begin
58+
gv_var_1_temp := gv_var_1;
59+
gv_var_1 := 'b';
60+
end;
61+
62+
procedure test2_teardown is
63+
begin
64+
gv_var_1 := gv_var_1_temp;
65+
gv_var_1_temp := null;
66+
end;
67+
68+
end test_package_2;
69+
/

0 commit comments

Comments
 (0)