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

Skip to content

Commit a42e244

Browse files
committed
Adding tests for ut.run
Change query to use regexp as instr was giving false positives.
1 parent 8ebb8b8 commit a42e244

5 files changed

Lines changed: 203 additions & 2 deletions

File tree

source/core/ut_suite_manager.pkb

Lines changed: 4 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -370,7 +370,7 @@ create or replace package body ut_suite_manager is
370370
l_ut_owner varchar2(250) := ut_utils.ut_owner;
371371
l_sql varchar2(32767);
372372
l_suite_item_name varchar2(20);
373-
l_tag_list varchar2(4000) :=a_tags;
373+
l_tag_list varchar2(4000) := a_tags;
374374
begin
375375
if a_path is null and a_object_name is not null then
376376
execute immediate 'select min(path)
@@ -384,6 +384,8 @@ create or replace package body ut_suite_manager is
384384
end if;
385385
l_suite_item_name := case when l_tag_list is not null then 'suite_items_tags' else 'suite_items' end;
386386

387+
388+
387389
/* Rewrite that as tags should be put on whats left not on full suite item cache */
388390
l_sql :=
389391
q'[with
@@ -420,7 +422,7 @@ create or replace package body ut_suite_manager is
420422
where exists
421423
( select 1
422424
from ]'||l_ut_owner||q'[.ut_suite_cache_tag ct
423-
where ct.suiteid = s.id and instr(:a_tag_list,ct.tagname) > 0 )
425+
where ct.suiteid = s.id and regexp_like(:a_tag_list,'(^|,){1}'||ct.tagname||'(,|$){1}') )
424426
),
425427
suite_items_tags as (
426428
select c.* from suite_items c

test/ut3_tester_helper/run_helper.pkb

Lines changed: 47 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -197,13 +197,16 @@ create or replace package body run_helper is
197197
begin
198198
execute immediate q'[create or replace package test_package_1 is
199199
--%suite
200+
--%tags(suite1,helper)
200201
--%suitepath(tests)
201202
--%rollback(manual)
202203

203204
--%test(Test1 from test package 1)
205+
--%tags(test1,suite1test1,subtest1)
204206
procedure test1;
205207

206208
--%test(Test2 from test package 1)
209+
--%tags(test1,suite1test1)
207210
procedure test2;
208211

209212
end test_package_1;
@@ -223,12 +226,15 @@ create or replace package body run_helper is
223226

224227
execute immediate q'[create or replace package test_package_2 is
225228
--%suite
229+
--%tags(suite2,helper)
226230
--%suitepath(tests.test_package_1)
227231

228232
--%test
233+
--%tags(test2,test1suite2,subtest2)
229234
procedure test1;
230235

231236
--%test
237+
--%tags(test2suite1)
232238
procedure test2;
233239

234240
end test_package_2;
@@ -247,12 +253,15 @@ create or replace package body run_helper is
247253

248254
execute immediate q'[create or replace package test_package_3 is
249255
--%suite
256+
--%tags(suite3,helper)
250257
--%suitepath(tests2)
251258

252259
--%test
260+
--%tags(test1suite3)
253261
procedure test1;
254262

255263
--%test
264+
--%tags(test2suite3)
256265
procedure test2;
257266

258267
end test_package_3;
@@ -431,6 +440,44 @@ create or replace package body run_helper is
431440
));
432441
return l_results;
433442
end;
443+
444+
procedure run(a_reporter ut3.ut_reporter_base := null,a_tags varchar2) is
445+
begin
446+
ut3.ut.run(a_reporter,a_tags => a_tags);
447+
end;
448+
449+
procedure run(a_path varchar2, a_reporter ut3.ut_reporter_base := null,a_tags varchar2) is
450+
begin
451+
ut3.ut.run(a_path, a_reporter,a_tags => a_tags);
452+
end;
453+
454+
procedure run(a_paths ut3.ut_varchar2_list, a_reporter ut3.ut_reporter_base := null, a_tags varchar2) is
455+
begin
456+
ut3.ut.run(a_paths, a_reporter,a_tags => a_tags);
457+
end;
458+
459+
function run(a_reporter ut3.ut_reporter_base := null,a_tags varchar2) return ut3.ut_varchar2_list is
460+
l_results ut3.ut_varchar2_list;
461+
begin
462+
select * bulk collect into l_results from table (ut3.ut.run(a_reporter, a_tags => a_tags));
463+
return l_results;
464+
end;
465+
466+
function run(a_path varchar2, a_reporter ut3.ut_reporter_base := null, a_tags varchar2)
467+
return ut3.ut_varchar2_list is
468+
l_results ut3.ut_varchar2_list;
469+
begin
470+
select * bulk collect into l_results from table (ut3.ut.run(a_path, a_reporter,a_tags => a_tags));
471+
return l_results;
472+
end;
473+
474+
function run(a_paths ut3.ut_varchar2_list, a_reporter ut3.ut_reporter_base := null, a_tags varchar2)
475+
return ut3.ut_varchar2_list is
476+
l_results ut3.ut_varchar2_list;
477+
begin
478+
select * bulk collect into l_results from table (ut3.ut.run(a_paths, a_reporter, a_tags => a_tags));
479+
return l_results;
480+
end;
434481

435482
procedure test_rollback_type(a_procedure_name varchar2, a_rollback_type integer, a_expectation ut3_latest_release.ut_matcher) is
436483
l_suite ut3.ut_suite;

test/ut3_tester_helper/run_helper.pks

Lines changed: 9 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -41,6 +41,15 @@ create or replace package run_helper is
4141
return ut3.ut_varchar2_list;
4242
function run(a_test_files ut3.ut_varchar2_list, a_reporter ut3.ut_reporter_base)
4343
return ut3.ut_varchar2_list;
44+
45+
procedure run(a_reporter ut3.ut_reporter_base := null,a_tags varchar2);
46+
procedure run(a_path varchar2, a_reporter ut3.ut_reporter_base := null,a_tags varchar2);
47+
procedure run(a_paths ut3.ut_varchar2_list, a_reporter ut3.ut_reporter_base := null, a_tags varchar2);
48+
function run(a_reporter ut3.ut_reporter_base := null,a_tags varchar2) return ut3.ut_varchar2_list;
49+
function run(a_path varchar2, a_reporter ut3.ut_reporter_base := null, a_tags varchar2)
50+
return ut3.ut_varchar2_list;
51+
function run(a_paths ut3.ut_varchar2_list, a_reporter ut3.ut_reporter_base := null, a_tags varchar2)
52+
return ut3.ut_varchar2_list;
4453

4554
procedure test_rollback_type(a_procedure_name varchar2, a_rollback_type integer, a_expectation ut3_latest_release.ut_matcher);
4655

test/ut3_user/api/test_ut_run.pkb

Lines changed: 109 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -787,5 +787,114 @@ Failures:%
787787
ut.expect(anydata.convertCollection(l_actual)).to_equal(anydata.convertCollection(l_expected));
788788
end;
789789

790+
procedure test_run_by_one_tag is
791+
l_results clob;
792+
begin
793+
ut3_tester_helper.run_helper.run(a_tags => 'suite1test1');
794+
l_results := ut3_tester_helper.main_helper.get_dbms_output_as_clob();
795+
--Assert
796+
ut.expect( l_results ).to_be_like( '%test_package_1%' );
797+
ut.expect( l_results ).not_to_be_like( '%test_package_2%' );
798+
ut.expect( l_results ).not_to_be_like( '%test_package_3%' );
799+
end;
800+
801+
procedure suite_run_by_one_tag is
802+
l_results clob;
803+
begin
804+
ut3_tester_helper.run_helper.run(a_tags => 'suite2');
805+
l_results := ut3_tester_helper.main_helper.get_dbms_output_as_clob();
806+
--Assert
807+
ut.expect( l_results ).not_to_be_like( '%test_package_1.%executed%' );
808+
ut.expect( l_results ).to_be_like( '%test_package_1%' );
809+
ut.expect( l_results ).to_be_like( '%test_package_2%' );
810+
ut.expect( l_results ).to_be_like( '%test_package_2.%executed%' );
811+
ut.expect( l_results ).not_to_be_like( '%test_package_3.%executed%' );
812+
end;
813+
814+
procedure two_test_run_by_one_tag is
815+
l_results clob;
816+
begin
817+
ut3_tester_helper.run_helper.run(a_tags => 'test2');
818+
l_results := ut3_tester_helper.main_helper.get_dbms_output_as_clob();
819+
--Assert
820+
ut.expect( l_results ).not_to_be_like( '%test_package_1.%executed%' );
821+
ut.expect( l_results ).to_be_like( '%test_package_1%' );
822+
ut.expect( l_results ).to_be_like( '%test_package_2%' );
823+
ut.expect( l_results ).to_be_like( '%test_package_2.%executed%' );
824+
ut.expect( l_results ).not_to_be_like( '%test_package_3.%executed%' );
825+
end;
826+
827+
procedure all_suites_run_by_one_tag is
828+
l_results clob;
829+
begin
830+
ut3_tester_helper.run_helper.run(a_tags => 'helper');
831+
l_results := ut3_tester_helper.main_helper.get_dbms_output_as_clob();
832+
--Assert
833+
ut.expect( l_results ).to_be_like( '%test_package_1%' );
834+
ut.expect( l_results ).to_be_like( '%test_package_2%' );
835+
ut.expect( l_results ).to_be_like( '%test_package_3%' );
836+
end;
837+
838+
procedure two_test_run_by_two_tags is
839+
l_results clob;
840+
begin
841+
ut3_tester_helper.run_helper.run(a_tags => 'subtest1,subtest2');
842+
l_results := ut3_tester_helper.main_helper.get_dbms_output_as_clob();
843+
--Assert
844+
ut.expect( l_results ).to_be_like( '%test_package_1%' );
845+
ut.expect( l_results ).to_be_like( '%test_package_2%' );
846+
ut.expect( l_results ).not_to_be_like( '%test_package_1.test2%' );
847+
ut.expect( l_results ).not_to_be_like( '%test_package_2.test2%' );
848+
ut.expect( l_results ).not_to_be_like( '%test_package_3%' );
849+
ut.expect( l_results ).not_to_be_like( '%test_package_3%' );
850+
end;
851+
852+
procedure suite_with_children_tag is
853+
l_results clob;
854+
begin
855+
ut3_tester_helper.run_helper.run(a_tags => 'suite1');
856+
l_results := ut3_tester_helper.main_helper.get_dbms_output_as_clob();
857+
--Assert
858+
ut.expect( l_results ).to_be_like( '%test_package_1%' );
859+
ut.expect( l_results ).to_be_like( '%test_package_2%' );
860+
ut.expect( l_results ).not_to_be_like( '%test_package_3%' );
861+
end;
862+
863+
procedure test_nonexists_tag is
864+
l_results clob;
865+
l_exp_message varchar2(4000);
866+
begin
867+
l_exp_message :=q'[ORA-20204: No suite packages found for tags: 'nonexisting']';
868+
ut3_tester_helper.run_helper.run(a_tags => 'nonexisting');
869+
l_results := ut3_tester_helper.main_helper.get_dbms_output_as_clob();
870+
ut.fail('Expecte test to fail');
871+
--Assert
872+
exception
873+
when others then
874+
ut.expect( sqlerrm ).to_be_like( l_exp_message );
875+
end;
876+
877+
procedure test_duplicate_tag is
878+
l_results clob;
879+
begin
880+
ut3_tester_helper.run_helper.run(a_tags => 'suite1test1,suite1test1');
881+
l_results := ut3_tester_helper.main_helper.get_dbms_output_as_clob();
882+
--Assert
883+
ut.expect( l_results ).to_be_like( '%test_package_1%' );
884+
ut.expect( l_results ).not_to_be_like( '%test_package_2%' );
885+
ut.expect( l_results ).not_to_be_like( '%test_package_3%' );
886+
end;
887+
888+
procedure suite_duplicate_tag is
889+
l_results clob;
890+
begin
891+
ut3_tester_helper.run_helper.run(a_tags => 'suite1,suite1');
892+
l_results := ut3_tester_helper.main_helper.get_dbms_output_as_clob();
893+
--Assert
894+
ut.expect( l_results ).to_be_like( '%test_package_1%' );
895+
ut.expect( l_results ).to_be_like( '%test_package_2%' );
896+
ut.expect( l_results ).not_to_be_like( '%test_package_3%' );
897+
end;
898+
790899
end;
791900
/

test/ut3_user/api/test_ut_run.pks

Lines changed: 34 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -163,6 +163,40 @@ create or replace package test_ut_run is
163163

164164
--%endcontext
165165

166+
--%context(run with tags)
167+
--%displayname(Call ut.run with #tags)
168+
--%beforeall(create_ut3$user#_tests)
169+
--%afterall(drop_ut3$user#_tests)
170+
171+
--%test(Execute test by tag)
172+
procedure test_run_by_one_tag;
173+
174+
--%test( Execute suite by one tag)
175+
procedure suite_run_by_one_tag;
176+
177+
--%test(Execute two tests by one tag)
178+
procedure two_test_run_by_one_tag;
179+
180+
--%test(Execute all suites tests with tag)
181+
procedure all_suites_run_by_one_tag;
182+
183+
--%test(Execute tests by passing two tags)
184+
procedure two_test_run_by_two_tags;
185+
186+
--%test(Execute suite and all of its children)
187+
procedure suite_with_children_tag;
188+
189+
--%test(Execute test for non existing tag)
190+
procedure test_nonexists_tag;
191+
192+
--%test(Execute test for duplicate list tags)
193+
procedure test_duplicate_tag;
194+
195+
--%test(Execute suite test for duplicate list tags)
196+
procedure suite_duplicate_tag;
197+
198+
--%endcontext
199+
166200
end;
167201
/
168202

0 commit comments

Comments
 (0)