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

Skip to content

Commit 9e64140

Browse files
authored
Merge pull request #710 from utPLSQL/feature/coma_list
Added Support to pass comma delimited list of test names
2 parents 0e7f137 + def4e8d commit 9e64140

6 files changed

Lines changed: 229 additions & 6 deletions

File tree

docs/userguide/running-unit-tests.md

Lines changed: 18 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -93,8 +93,26 @@ end;
9393
```
9494
Executes all tests from package _hr.test_apply_bonus_ and all tests from schema _cust_.
9595

96+
```sql
97+
begin
98+
ut.run(ut_varchar2_list('hr.test_apply_bonus,cust)');
99+
end;
100+
```
101+
102+
Executes all tests from package _hr.test_apply_bonus_ and all tests from schema _cust_.
103+
104+
```sql
105+
begin
106+
ut.run('hr.test_apply_bonus,cust');
107+
end;
108+
```
109+
110+
Executes all tests from package _hr.test_apply_bonus_ and all tests from schema _cust_.
111+
96112
Using a list of items to execute allows you to execute a fine-grained set of tests.
97113

114+
List can be passed as a comma separated list or a list of *ut_varchar2_list objects* or as a list within ut_varchar2_list.
115+
98116

99117
**Note:**
100118

source/api/ut_runner.pkb

Lines changed: 8 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -89,12 +89,17 @@ create or replace package body ut_runner is
8989
l_coverage_schema_names ut_varchar2_rows;
9090
l_exclude_object_names ut_object_names := ut_object_names();
9191
l_include_object_names ut_object_names;
92+
l_paths ut_varchar2_list := ut_varchar2_list();
9293
begin
9394
ut_event_manager.initialize();
9495
begin
9596
ut_expectation_processor.reset_invalidation_exception();
9697
ut_utils.save_dbms_output_to_cache();
9798

99+
for i in 1..a_paths.COUNT loop
100+
l_paths := l_paths multiset union ut_utils.string_to_table(a_string => a_paths(i),a_delimiter => ',');
101+
end loop;
102+
98103
ut_console_reporter_base.set_color_enabled(a_color_console);
99104
if a_reporters is null or a_reporters.count = 0 then
100105
ut_event_manager.add_listener(ut_documentation_reporter());
@@ -107,7 +112,7 @@ create or replace package body ut_runner is
107112
if a_coverage_schemes is not empty then
108113
l_coverage_schema_names := ut_utils.convert_collection(a_coverage_schemes);
109114
else
110-
l_coverage_schema_names := ut_suite_manager.get_schema_names(a_paths);
115+
l_coverage_schema_names := ut_suite_manager.get_schema_names(l_paths);
111116
end if;
112117

113118
if a_exclude_objects is not empty then
@@ -119,8 +124,8 @@ create or replace package body ut_runner is
119124
l_include_object_names := to_ut_object_list(a_include_objects, l_coverage_schema_names);
120125

121126
l_run := ut_run(
122-
ut_suite_manager.configure_execution_by_path(a_paths),
123-
a_paths,
127+
ut_suite_manager.configure_execution_by_path(l_paths),
128+
l_paths,
124129
l_coverage_schema_names,
125130
l_exclude_object_names,
126131
l_include_object_names,

test/api/test_ut_run.pkb

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -202,7 +202,7 @@ end;]';
202202
begin
203203
execute immediate 'drop package invalid_pckag_that_revalidates';
204204
execute immediate 'drop package parent_specs';
205-
end;
206-
205+
end;
206+
207207
end;
208208
/

test/api/test_ut_run.pks

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -22,6 +22,6 @@ create or replace package test_ut_run is
2222
procedure run_and_revalidate_specs;
2323
procedure generate_invalid_spec;
2424
procedure drop_test_package;
25-
25+
2626
end;
2727
/

test/api/test_ut_runner.pkb

Lines changed: 170 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -361,5 +361,175 @@ end;';
361361
ut.expect(dbms_utility.format_error_stack||dbms_utility.format_error_backtrace).not_to_be_like('%ORA-02055%');
362362
end;
363363

364+
procedure create_test_csl_packages is
365+
pragma autonomous_transaction;
366+
begin
367+
execute immediate q'[
368+
create or replace package test_csl_names1 as
369+
--%suite
370+
--%suitepath(test_csl_names)
371+
372+
--%test
373+
procedure one_is_one;
374+
375+
--%test
376+
procedure two_is_two;
377+
378+
end;
379+
]';
380+
381+
execute immediate q'{
382+
create or replace package body test_csl_names1 as
383+
384+
procedure one_is_one is
385+
begin
386+
ut3.ut.expect(1).to_equal(1);
387+
end;
388+
389+
procedure two_is_two is
390+
begin
391+
ut3.ut.expect(2).to_equal(2);
392+
end;
393+
394+
end;
395+
}';
396+
397+
execute immediate q'[
398+
create or replace package test_csl_names2 as
399+
--%suite
400+
--%suitepath(test_csl_names)
401+
402+
--%test
403+
procedure one_is_one;
404+
405+
--%test
406+
procedure two_is_two;
407+
408+
end;
409+
]';
410+
411+
execute immediate q'{
412+
create or replace package body test_csl_names2 as
413+
414+
procedure one_is_one is
415+
begin
416+
ut3.ut.expect(1).to_equal(1);
417+
end;
418+
419+
procedure two_is_two is
420+
begin
421+
ut3.ut.expect(2).to_equal(2);
422+
end;
423+
424+
end;
425+
}';
426+
427+
end;
428+
429+
procedure drop_test_csl_packages is
430+
pragma autonomous_transaction;
431+
begin
432+
execute immediate 'drop package test_csl_names1';
433+
execute immediate 'drop package test_csl_names2';
434+
end;
435+
436+
procedure pass_varchar2_name_list is
437+
l_results ut3.ut_varchar2_list;
438+
l_actual clob;
439+
begin
440+
select *
441+
bulk collect into l_results
442+
from table(ut3.ut.run(ut3.ut_varchar2_list('test_csl_names1','test_csl_names2')));
443+
444+
l_actual := ut3.ut_utils.table_to_clob(l_results);
445+
ut.expect(l_actual).to_be_like('%Finished in % seconds
446+
%4 tests, 0 failed, 0 errored, 0 disabled, 0 warning(s)%');
447+
end;
448+
449+
procedure pass_varchar2_name is
450+
l_results ut3.ut_varchar2_list;
451+
l_actual clob;
452+
begin
453+
select *
454+
bulk collect into l_results
455+
from table(ut3.ut.run('test_csl_names1'));
456+
457+
l_actual := ut3.ut_utils.table_to_clob(l_results);
458+
ut.expect(l_actual).to_be_like('%Finished in % seconds
459+
%2 tests, 0 failed, 0 errored, 0 disabled, 0 warning(s)%');
460+
end;
461+
462+
procedure pass_varchar2_suite_csl is
463+
l_results ut3.ut_varchar2_list;
464+
l_actual clob;
465+
begin
466+
select *
467+
bulk collect into l_results
468+
from table(ut3.ut.run('test_csl_names1,test_csl_names2'));
469+
470+
l_actual := ut3.ut_utils.table_to_clob(l_results);
471+
ut.expect(l_actual).to_be_like('%Finished in % seconds
472+
%4 tests, 0 failed, 0 errored, 0 disabled, 0 warning(s)%');
473+
end;
474+
475+
procedure pass_varchar2_test_csl is
476+
l_results ut3.ut_varchar2_list;
477+
l_actual clob;
478+
begin
479+
select *
480+
bulk collect into l_results
481+
from table(ut3.ut.run('test_csl_names1.one_is_one,test_csl_names2.one_is_one'));
482+
483+
l_actual := ut3.ut_utils.table_to_clob(l_results);
484+
ut.expect(l_actual).to_be_like('%Finished in % seconds
485+
%2 tests, 0 failed, 0 errored, 0 disabled, 0 warning(s)%');
486+
end;
487+
488+
procedure pass_varch_test_csl_spc is
489+
l_results ut3.ut_varchar2_list;
490+
l_actual clob;
491+
begin
492+
select *
493+
bulk collect into l_results
494+
from table(ut3.ut.run('test_csl_names1.one_is_one, test_csl_names2.one_is_one'));
495+
496+
l_actual := ut3.ut_utils.table_to_clob(l_results);
497+
ut.expect(l_actual).to_be_like('%Finished in % seconds
498+
%2 tests, 0 failed, 0 errored, 0 disabled, 0 warning(s)%');
499+
end;
500+
501+
procedure pass_csl_with_srcfile is
502+
l_results ut3.ut_varchar2_list;
503+
l_actual clob;
504+
begin
505+
506+
select *
507+
bulk collect into l_results
508+
from table(
509+
ut3.ut.run(
510+
a_path => 'test_csl_names1.one_is_one,test_csl_names2.one_is_one',
511+
a_source_files => ut3.ut_varchar2_list('ut3.ut'),
512+
a_test_files => ut3.ut_varchar2_list('ut3_tester.test_csl_names2')
513+
)
514+
);
515+
516+
l_actual := ut3.ut_utils.table_to_clob(l_results);
517+
ut.expect(l_actual).to_be_like('%Finished in % seconds
518+
%2 tests, 0 failed, 0 errored, 0 disabled, 0 warning(s)%');
519+
end;
520+
521+
procedure pass_csl_within_var2list is
522+
l_results ut3.ut_varchar2_list;
523+
l_actual clob;
524+
begin
525+
select *
526+
bulk collect into l_results
527+
from table(ut3.ut.run(ut3.ut_varchar2_list('test_csl_names1.one_is_one,test_csl_names2.one_is_one')));
528+
529+
l_actual := ut3.ut_utils.table_to_clob(l_results);
530+
ut.expect(l_actual).to_be_like('%Finished in % seconds
531+
%2 tests, 0 failed, 0 errored, 0 disabled, 0 warning(s)%');
532+
end;
533+
364534
end;
365535
/

test/api/test_ut_runner.pks

Lines changed: 30 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -61,5 +61,35 @@ create or replace package test_ut_runner is
6161
--%aftertest(db_link_cleanup)
6262
procedure raises_20213_on_fail_link;
6363

64+
procedure create_test_csl_packages;
65+
procedure drop_test_csl_packages;
66+
67+
--%context(ut_run_coma_sep_list)
68+
--%beforeall(create_test_csl_packages)
69+
--%afterall(drop_test_csl_packages)
70+
71+
--%test( Pass name of tests as varchar2_list )
72+
procedure pass_varchar2_name_list;
73+
74+
--%test( Pass single test name as varchar2 )
75+
procedure pass_varchar2_name;
76+
77+
--%test( Pass coma separated list of suite names )
78+
procedure pass_varchar2_suite_csl;
79+
80+
--%test( Pass coma separated list of test names )
81+
procedure pass_varchar2_test_csl;
82+
83+
--%test( Pass coma separated list of test names with spaces )
84+
procedure pass_varch_test_csl_spc;
85+
86+
--%test( Pass coma separated list and source and test files )
87+
procedure pass_csl_with_srcfile;
88+
89+
--%test( Pass coma separated list in varchar2list )
90+
procedure pass_csl_within_var2list;
91+
92+
--%endcontext
93+
6494
end;
6595
/

0 commit comments

Comments
 (0)