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)