Skip to content

Commit e1f1eec

Browse files
committed
Renamed get_unit_test_info to get_suites_info - the latter one was not used uin prior versions.
Added functions `is_test`, `is_suite`, `has_suite` to perform checks for test/suite existance at prcedure, package, schema level.
1 parent d002d18 commit e1f1eec

7 files changed

Lines changed: 231 additions & 10 deletions

File tree

source/api/ut_runner.pkb

Lines changed: 37 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -165,7 +165,7 @@ create or replace package body ut_runner is
165165
ut_annotation_manager.purge_cache(a_object_owner, a_object_type);
166166
end;
167167

168-
function get_unit_test_info(a_owner varchar2, a_package_name varchar2 ) return ut_suite_items_info pipelined is
168+
function get_suites_info(a_owner varchar2, a_package_name varchar2 := null) return ut_suite_items_info pipelined is
169169
l_cursor sys_refcursor;
170170
l_results ut_suite_items_info;
171171
c_bulk_limit constant integer := 10;
@@ -182,6 +182,42 @@ create or replace package body ut_runner is
182182
return;
183183
end;
184184

185+
function is_test(a_owner varchar2, a_package_name varchar2, a_procedure_name varchar2) return boolean is
186+
l_result boolean := false;
187+
begin
188+
if a_owner is not null and a_package_name is not null and a_procedure_name is not null then
189+
190+
l_result := ut_suite_manager.suite_item_exists( a_owner, a_package_name, a_procedure_name );
191+
192+
end if;
193+
194+
return l_result;
195+
end;
196+
197+
function is_suite(a_owner varchar2, a_package_name varchar2) return boolean is
198+
l_result boolean := false;
199+
begin
200+
if a_owner is not null and a_package_name is not null then
201+
202+
l_result := ut_suite_manager.suite_item_exists( a_owner, a_package_name );
203+
204+
end if;
205+
206+
return l_result;
207+
end;
208+
209+
function has_suites(a_owner varchar2) return boolean is
210+
l_result boolean := false;
211+
begin
212+
if a_owner is not null then
213+
214+
l_result := ut_suite_manager.suite_item_exists( a_owner );
215+
216+
end if;
217+
218+
return l_result;
219+
end;
220+
185221
function get_reporters_list return tt_reporters_info pipelined is
186222
l_cursor sys_refcursor;
187223
l_owner varchar2(128) := upper(ut_utils.ut_owner());

source/api/ut_runner.pks

Lines changed: 27 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -94,7 +94,33 @@ create or replace package ut_runner authid current_user is
9494
* @param a_package_name optional name of unit test package to retrieve, if NULLm all unit test packages are returned
9595
* @return ut_suite_items_info table of objects
9696
*/
97-
function get_unit_test_info(a_owner varchar2, a_package_name varchar2) return ut_suite_items_info pipelined;
97+
function get_suites_info(a_owner varchar2, a_package_name varchar2 := null) return ut_suite_items_info pipelined;
98+
99+
100+
/**
101+
* Returns true if given procedure is a test in a test suite, false otherwise
102+
*
103+
* @param a_owner owner of test package
104+
* @param a_package_name name of test package
105+
* @param a_procedure_name name of test procedure
106+
*/
107+
function is_test(a_owner varchar2, a_package_name varchar2, a_procedure_name varchar2) return boolean;
108+
109+
/**
110+
* Returns true if given package is a test suite, false otherwise
111+
*
112+
* @param a_owner owner of test package
113+
* @param a_package_name name of test package
114+
*/
115+
function is_suite(a_owner varchar2, a_package_name varchar2) return boolean;
116+
117+
/**
118+
* Returns true if given schema contains test suites, false otherwise
119+
*
120+
* @param a_owner owner of test package
121+
*/
122+
function has_suites(a_owner varchar2) return boolean;
123+
98124

99125
type t_reporter_rec is record (
100126
reporter_object_name varchar2(250),

source/core/ut_suite_cache_manager.pkb

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -37,7 +37,7 @@ create or replace package body ut_suite_cache_manager is
3737
l_object_owner varchar2(250) := upper(a_object_owner);
3838
l_object_name varchar2(250) := upper(a_object_name);
3939
begin
40-
if a_suite_items.count = 0 then
40+
if a_suite_items is not null and a_suite_items.count = 0 then
4141

4242
delete from ut_suite_cache t
4343
where t.object_owner = l_object_owner

source/core/ut_suite_manager.pkb

Lines changed: 50 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -674,7 +674,10 @@ create or replace package body ut_suite_manager is
674674

675675
end configure_execution_by_path;
676676

677-
function get_suites_info(a_owner_name varchar2, a_package_name varchar2) return sys_refcursor is
677+
function get_suites_info(
678+
a_owner_name varchar2,
679+
a_package_name varchar2 := null
680+
) return sys_refcursor is
678681
l_result sys_refcursor;
679682
l_ut_owner varchar2(250) := ut_utils.ut_owner;
680683
begin
@@ -750,5 +753,51 @@ create or replace package body ut_suite_manager is
750753
return l_result;
751754
end;
752755

756+
function suite_item_exists(
757+
a_owner_name varchar2,
758+
a_package_name varchar2 := null,
759+
a_procedure_name varchar2 := null,
760+
a_item_type varchar2 := null
761+
) return boolean is
762+
l_result integer;
763+
l_ut_owner varchar2(250) := ut_utils.ut_owner;
764+
begin
765+
refresh_cache(a_owner_name);
766+
767+
execute immediate q'[
768+
select count(1) from dual
769+
where exists (
770+
select 1
771+
from ]'||l_ut_owner||q'[.ut_suite_cache c
772+
where 1 = 1 ]'||case when can_skip_all_objects_scan(a_owner_name) then q'[
773+
and exists
774+
( select 1
775+
from all_objects a
776+
where a.object_name = c.object_name
777+
and a.owner = :a_owner_name
778+
and a.owner = c.object_owner
779+
and a.object_type = 'PACKAGE'
780+
)]' else q'[
781+
and :a_owner_name is not null ]' end ||q'[
782+
and c.object_owner = :a_owner_name
783+
and ]'
784+
|| case when a_package_name is not null
785+
then 'c.object_name = :a_package_name'
786+
else ':a_package_name is null' end
787+
|| q'[
788+
and ]'
789+
|| case when a_procedure_name is not null
790+
then 'c.name = :a_procedure_name'
791+
else ':a_procedure_name is null' end
792+
|| q'[
793+
)]'
794+
into l_result
795+
using
796+
upper(a_owner_name), upper(a_owner_name),
797+
upper(a_package_name), upper(a_procedure_name);
798+
799+
return l_result > 0;
800+
end;
801+
753802
end ut_suite_manager;
754803
/

source/core/ut_suite_manager.pks

Lines changed: 23 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -72,10 +72,31 @@ create or replace package ut_suite_manager authid current_user is
7272
/**
7373
* Returns a ref cursor containing information about unit test suites and the tests contained in them
7474
*
75-
* @param a_owner owner of unit tests to retrieve
75+
* @param a_owner owner of unit tests to retrieve
76+
* @param a_package_name name of test package (optional)
77+
* @param a_procedure_name name of test procedure (optional)
7678
* @return ut_suite_items_info table of objects
7779
*/
78-
function get_suites_info(a_owner_name varchar2, a_package_name varchar2) return sys_refcursor;
80+
function get_suites_info(
81+
a_owner_name varchar2,
82+
a_package_name varchar2 := null
83+
) return sys_refcursor;
84+
85+
/**
86+
* Returns true if given suite item exists
87+
*
88+
* @param a_owner owner of items to retrieve
89+
* @param a_package_name name of suite package (optional)
90+
* @param a_procedure_name name of suite item (optional)
91+
* @param a_item_type suite_item type (optional)
92+
* @return ut_suite_items_info table of objects
93+
*/
94+
function suite_item_exists(
95+
a_owner_name varchar2,
96+
a_package_name varchar2 := null,
97+
a_procedure_name varchar2 := null,
98+
a_item_type varchar2 := null
99+
) return boolean;
79100

80101

81102
end ut_suite_manager;

test/api/test_ut_runner.pkb

Lines changed: 55 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -267,7 +267,7 @@ end;';
267267
ut.expect(l_actual).to_equal(0);
268268
end;
269269

270-
procedure test_get_unit_test_info is
270+
procedure test_get_suites_info is
271271
l_expected sys_refcursor;
272272
l_actual sys_refcursor;
273273
begin
@@ -284,7 +284,7 @@ end;';
284284
'dummy_test_package.some_dummy_test_procedure' path, 0 disabled_flag
285285
from dual;
286286
--Act
287-
open l_actual for select * from table(ut3.ut_runner.get_unit_test_info('UT3_TESTER','DUMMY_TEST_PACKAGE'));
287+
open l_actual for select * from table(ut3.ut_runner.get_suites_info('UT3_TESTER','DUMMY_TEST_PACKAGE'));
288288
--Assert
289289
ut.expect(l_actual).to_equal(l_expected);
290290
end;
@@ -534,6 +534,59 @@ end;';
534534
ut.expect(l_actual).to_be_like('%Finished in % seconds
535535
%2 tests, 0 failed, 0 errored, 0 disabled, 0 warning(s)%');
536536
end;
537+
538+
procedure is_test_true is
539+
begin
540+
ut.expect(
541+
ut3.ut_runner.is_test(
542+
a_owner => 'UT3_TESTER',
543+
a_package_name => 'DUMMY_TEST_PACKAGE',
544+
a_procedure_name => 'SOME_DUMMY_TEST_PROCEDURE'
545+
)
546+
).to_be_true();
547+
ut.expect( ut3.ut_runner.is_test( 'ut3_tester','dummy_test_package','some_dummy_test_procedure' ) ).to_be_true();
548+
end;
549+
550+
procedure is_test_false is
551+
begin
552+
ut.expect( ut3.ut_runner.is_test( 'UT3_TESTER','DUMMY_TEST_PACKAGE', 'BAD' ) ).to_be_false();
553+
ut.expect( ut3.ut_runner.is_test( 'UT3_TESTER','DUMMY_TEST_PACKAGE', null ) ).to_be_false();
554+
ut.expect( ut3.ut_runner.is_test( 'UT3_TESTER',null,'some_dummy_test_procedure' ) ).to_be_false();
555+
ut.expect( ut3.ut_runner.is_test( null,'DUMMY_TEST_PACKAGE','some_dummy_test_procedure' ) ).to_be_false();
556+
end;
557+
558+
procedure is_suite_true is
559+
begin
560+
ut.expect(
561+
ut3.ut_runner.is_suite(
562+
a_owner => 'UT3_TESTER',
563+
a_package_name => 'DUMMY_TEST_PACKAGE'
564+
)
565+
).to_be_true();
566+
567+
ut.expect( ut3.ut_runner.is_suite( 'ut3_tester','dummy_test_package' ) ).to_be_true();
568+
end;
569+
570+
procedure is_suite_false is
571+
begin
572+
ut.expect( ut3.ut_runner.is_suite( 'UT3_TESTER','BAD' ) ).to_be_false();
573+
ut.expect( ut3.ut_runner.is_suite( 'UT3_TESTER', null ) ).to_be_false();
574+
ut.expect( ut3.ut_runner.is_suite( null,'DUMMY_TEST_PACKAGE' ) ).to_be_false();
575+
end;
576+
577+
procedure has_suites_true is
578+
begin
579+
ut.expect( ut3.ut_runner.has_suites( a_owner => 'UT3_TESTER' ) ).to_be_true();
580+
581+
ut.expect( ut3.ut_runner.has_suites( 'ut3_tester' ) ).to_be_true();
582+
end;
583+
584+
procedure has_suites_false is
585+
begin
586+
ut.expect( ut3.ut_runner.has_suites( 'UT3' ) ).to_be_false();
587+
ut.expect( ut3.ut_runner.has_suites( 'BAD' ) ).to_be_false();
588+
ut.expect( ut3.ut_runner.has_suites( null ) ).to_be_false();
589+
end;
537590

538591
end;
539592
/

test/api/test_ut_runner.pks

Lines changed: 38 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -43,10 +43,10 @@ create or replace package test_ut_runner is
4343
--%aftertest(cleanup_cache)
4444
procedure test_rebuild_cache_schema_type;
4545

46-
--%test(get_unit_tests_info returns a cursor containing records for a newly created test)
46+
--%test(get_suites_info returns a cursor containing records for a newly created test)
4747
--%beforetest(setup_cache_objects)
4848
--%aftertest(cleanup_cache)
49-
procedure test_get_unit_test_info;
49+
procedure test_get_suites_info;
5050

5151
--%test(get_reporters_list returns a cursor containing all built-in reporters and information about output-reporter)
5252
--%beforetest(setup_cache_objects)
@@ -91,5 +91,41 @@ create or replace package test_ut_runner is
9191

9292
--%endcontext
9393

94+
--%context(is_test)
95+
--%beforeall(setup_cache_objects)
96+
--%afterall(cleanup_cache)
97+
98+
--%test(Returns true when procedure is a test)
99+
procedure is_test_true;
100+
101+
--%test(Returns false when procedure is not a test)
102+
procedure is_test_false;
103+
104+
--%endcontext
105+
106+
--%context(is_suite)
107+
--%beforeall(setup_cache_objects)
108+
--%afterall(cleanup_cache)
109+
110+
--%test(Returns true when package is a test suite)
111+
procedure is_suite_true;
112+
113+
--%test(Returns false when package is not a test suite)
114+
procedure is_suite_false;
115+
116+
--%endcontext
117+
118+
--%context(has_suites)
119+
--%beforeall(setup_cache_objects)
120+
--%afterall(cleanup_cache)
121+
122+
--%test(Returns true when schema contains test suites)
123+
procedure has_suites_true;
124+
125+
--%test(Returns false when schema does not contain test suites)
126+
procedure has_suites_false;
127+
128+
--%endcontext
129+
94130
end;
95131
/

0 commit comments

Comments
 (0)