Skip to content

Commit

Permalink
Renamed get_unit_test_info to get_suites_info - the latter one wa…
Browse files Browse the repository at this point in the history
…s 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.
  • Loading branch information
jgebal committed Nov 16, 2018
1 parent d002d18 commit e1f1eec
Show file tree
Hide file tree
Showing 7 changed files with 231 additions and 10 deletions.
38 changes: 37 additions & 1 deletion source/api/ut_runner.pkb
Original file line number Diff line number Diff line change
Expand Up @@ -165,7 +165,7 @@ create or replace package body ut_runner is
ut_annotation_manager.purge_cache(a_object_owner, a_object_type);
end;

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

function is_test(a_owner varchar2, a_package_name varchar2, a_procedure_name varchar2) return boolean is
l_result boolean := false;
begin
if a_owner is not null and a_package_name is not null and a_procedure_name is not null then

l_result := ut_suite_manager.suite_item_exists( a_owner, a_package_name, a_procedure_name );

end if;

return l_result;
end;

function is_suite(a_owner varchar2, a_package_name varchar2) return boolean is
l_result boolean := false;
begin
if a_owner is not null and a_package_name is not null then

l_result := ut_suite_manager.suite_item_exists( a_owner, a_package_name );

end if;

return l_result;
end;

function has_suites(a_owner varchar2) return boolean is
l_result boolean := false;
begin
if a_owner is not null then

l_result := ut_suite_manager.suite_item_exists( a_owner );

end if;

return l_result;
end;

function get_reporters_list return tt_reporters_info pipelined is
l_cursor sys_refcursor;
l_owner varchar2(128) := upper(ut_utils.ut_owner());
Expand Down
28 changes: 27 additions & 1 deletion source/api/ut_runner.pks
Original file line number Diff line number Diff line change
Expand Up @@ -94,7 +94,33 @@ create or replace package ut_runner authid current_user is
* @param a_package_name optional name of unit test package to retrieve, if NULLm all unit test packages are returned
* @return ut_suite_items_info table of objects
*/
function get_unit_test_info(a_owner varchar2, a_package_name varchar2) return ut_suite_items_info pipelined;
function get_suites_info(a_owner varchar2, a_package_name varchar2 := null) return ut_suite_items_info pipelined;


/**
* Returns true if given procedure is a test in a test suite, false otherwise
*
* @param a_owner owner of test package
* @param a_package_name name of test package
* @param a_procedure_name name of test procedure
*/
function is_test(a_owner varchar2, a_package_name varchar2, a_procedure_name varchar2) return boolean;

/**
* Returns true if given package is a test suite, false otherwise
*
* @param a_owner owner of test package
* @param a_package_name name of test package
*/
function is_suite(a_owner varchar2, a_package_name varchar2) return boolean;

/**
* Returns true if given schema contains test suites, false otherwise
*
* @param a_owner owner of test package
*/
function has_suites(a_owner varchar2) return boolean;


type t_reporter_rec is record (
reporter_object_name varchar2(250),
Expand Down
2 changes: 1 addition & 1 deletion source/core/ut_suite_cache_manager.pkb
Original file line number Diff line number Diff line change
Expand Up @@ -37,7 +37,7 @@ create or replace package body ut_suite_cache_manager is
l_object_owner varchar2(250) := upper(a_object_owner);
l_object_name varchar2(250) := upper(a_object_name);
begin
if a_suite_items.count = 0 then
if a_suite_items is not null and a_suite_items.count = 0 then

delete from ut_suite_cache t
where t.object_owner = l_object_owner
Expand Down
51 changes: 50 additions & 1 deletion source/core/ut_suite_manager.pkb
Original file line number Diff line number Diff line change
Expand Up @@ -674,7 +674,10 @@ create or replace package body ut_suite_manager is

end configure_execution_by_path;

function get_suites_info(a_owner_name varchar2, a_package_name varchar2) return sys_refcursor is
function get_suites_info(
a_owner_name varchar2,
a_package_name varchar2 := null
) return sys_refcursor is
l_result sys_refcursor;
l_ut_owner varchar2(250) := ut_utils.ut_owner;
begin
Expand Down Expand Up @@ -750,5 +753,51 @@ create or replace package body ut_suite_manager is
return l_result;
end;

function suite_item_exists(
a_owner_name varchar2,
a_package_name varchar2 := null,
a_procedure_name varchar2 := null,
a_item_type varchar2 := null
) return boolean is
l_result integer;
l_ut_owner varchar2(250) := ut_utils.ut_owner;
begin
refresh_cache(a_owner_name);

execute immediate q'[
select count(1) from dual
where exists (
select 1
from ]'||l_ut_owner||q'[.ut_suite_cache c
where 1 = 1 ]'||case when can_skip_all_objects_scan(a_owner_name) then q'[
and exists
( select 1
from all_objects a
where a.object_name = c.object_name
and a.owner = :a_owner_name
and a.owner = c.object_owner
and a.object_type = 'PACKAGE'
)]' else q'[
and :a_owner_name is not null ]' end ||q'[
and c.object_owner = :a_owner_name
and ]'
|| case when a_package_name is not null
then 'c.object_name = :a_package_name'
else ':a_package_name is null' end
|| q'[
and ]'
|| case when a_procedure_name is not null
then 'c.name = :a_procedure_name'
else ':a_procedure_name is null' end
|| q'[
)]'
into l_result
using
upper(a_owner_name), upper(a_owner_name),
upper(a_package_name), upper(a_procedure_name);

return l_result > 0;
end;

end ut_suite_manager;
/
25 changes: 23 additions & 2 deletions source/core/ut_suite_manager.pks
Original file line number Diff line number Diff line change
Expand Up @@ -72,10 +72,31 @@ create or replace package ut_suite_manager authid current_user is
/**
* Returns a ref cursor containing information about unit test suites and the tests contained in them
*
* @param a_owner owner of unit tests to retrieve
* @param a_owner owner of unit tests to retrieve
* @param a_package_name name of test package (optional)
* @param a_procedure_name name of test procedure (optional)
* @return ut_suite_items_info table of objects
*/
function get_suites_info(a_owner_name varchar2, a_package_name varchar2) return sys_refcursor;
function get_suites_info(
a_owner_name varchar2,
a_package_name varchar2 := null
) return sys_refcursor;

/**
* Returns true if given suite item exists
*
* @param a_owner owner of items to retrieve
* @param a_package_name name of suite package (optional)
* @param a_procedure_name name of suite item (optional)
* @param a_item_type suite_item type (optional)
* @return ut_suite_items_info table of objects
*/
function suite_item_exists(
a_owner_name varchar2,
a_package_name varchar2 := null,
a_procedure_name varchar2 := null,
a_item_type varchar2 := null
) return boolean;


end ut_suite_manager;
Expand Down
57 changes: 55 additions & 2 deletions test/api/test_ut_runner.pkb
Original file line number Diff line number Diff line change
Expand Up @@ -267,7 +267,7 @@ end;';
ut.expect(l_actual).to_equal(0);
end;

procedure test_get_unit_test_info is
procedure test_get_suites_info is
l_expected sys_refcursor;
l_actual sys_refcursor;
begin
Expand All @@ -284,7 +284,7 @@ end;';
'dummy_test_package.some_dummy_test_procedure' path, 0 disabled_flag
from dual;
--Act
open l_actual for select * from table(ut3.ut_runner.get_unit_test_info('UT3_TESTER','DUMMY_TEST_PACKAGE'));
open l_actual for select * from table(ut3.ut_runner.get_suites_info('UT3_TESTER','DUMMY_TEST_PACKAGE'));
--Assert
ut.expect(l_actual).to_equal(l_expected);
end;
Expand Down Expand Up @@ -534,6 +534,59 @@ end;';
ut.expect(l_actual).to_be_like('%Finished in % seconds
%2 tests, 0 failed, 0 errored, 0 disabled, 0 warning(s)%');
end;

procedure is_test_true is
begin
ut.expect(
ut3.ut_runner.is_test(
a_owner => 'UT3_TESTER',
a_package_name => 'DUMMY_TEST_PACKAGE',
a_procedure_name => 'SOME_DUMMY_TEST_PROCEDURE'
)
).to_be_true();
ut.expect( ut3.ut_runner.is_test( 'ut3_tester','dummy_test_package','some_dummy_test_procedure' ) ).to_be_true();
end;

procedure is_test_false is
begin
ut.expect( ut3.ut_runner.is_test( 'UT3_TESTER','DUMMY_TEST_PACKAGE', 'BAD' ) ).to_be_false();
ut.expect( ut3.ut_runner.is_test( 'UT3_TESTER','DUMMY_TEST_PACKAGE', null ) ).to_be_false();
ut.expect( ut3.ut_runner.is_test( 'UT3_TESTER',null,'some_dummy_test_procedure' ) ).to_be_false();
ut.expect( ut3.ut_runner.is_test( null,'DUMMY_TEST_PACKAGE','some_dummy_test_procedure' ) ).to_be_false();
end;

procedure is_suite_true is
begin
ut.expect(
ut3.ut_runner.is_suite(
a_owner => 'UT3_TESTER',
a_package_name => 'DUMMY_TEST_PACKAGE'
)
).to_be_true();

ut.expect( ut3.ut_runner.is_suite( 'ut3_tester','dummy_test_package' ) ).to_be_true();
end;

procedure is_suite_false is
begin
ut.expect( ut3.ut_runner.is_suite( 'UT3_TESTER','BAD' ) ).to_be_false();
ut.expect( ut3.ut_runner.is_suite( 'UT3_TESTER', null ) ).to_be_false();
ut.expect( ut3.ut_runner.is_suite( null,'DUMMY_TEST_PACKAGE' ) ).to_be_false();
end;

procedure has_suites_true is
begin
ut.expect( ut3.ut_runner.has_suites( a_owner => 'UT3_TESTER' ) ).to_be_true();

ut.expect( ut3.ut_runner.has_suites( 'ut3_tester' ) ).to_be_true();
end;

procedure has_suites_false is
begin
ut.expect( ut3.ut_runner.has_suites( 'UT3' ) ).to_be_false();
ut.expect( ut3.ut_runner.has_suites( 'BAD' ) ).to_be_false();
ut.expect( ut3.ut_runner.has_suites( null ) ).to_be_false();
end;

end;
/
40 changes: 38 additions & 2 deletions test/api/test_ut_runner.pks
Original file line number Diff line number Diff line change
Expand Up @@ -43,10 +43,10 @@ create or replace package test_ut_runner is
--%aftertest(cleanup_cache)
procedure test_rebuild_cache_schema_type;

--%test(get_unit_tests_info returns a cursor containing records for a newly created test)
--%test(get_suites_info returns a cursor containing records for a newly created test)
--%beforetest(setup_cache_objects)
--%aftertest(cleanup_cache)
procedure test_get_unit_test_info;
procedure test_get_suites_info;

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

--%endcontext

--%context(is_test)
--%beforeall(setup_cache_objects)
--%afterall(cleanup_cache)

--%test(Returns true when procedure is a test)
procedure is_test_true;

--%test(Returns false when procedure is not a test)
procedure is_test_false;

--%endcontext

--%context(is_suite)
--%beforeall(setup_cache_objects)
--%afterall(cleanup_cache)

--%test(Returns true when package is a test suite)
procedure is_suite_true;

--%test(Returns false when package is not a test suite)
procedure is_suite_false;

--%endcontext

--%context(has_suites)
--%beforeall(setup_cache_objects)
--%afterall(cleanup_cache)

--%test(Returns true when schema contains test suites)
procedure has_suites_true;

--%test(Returns false when schema does not contain test suites)
procedure has_suites_false;

--%endcontext

end;
/

0 comments on commit e1f1eec

Please sign in to comment.