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

Skip to content

Commit 14175e4

Browse files
committed
Updated test info API in ut_runner to return pipelined table with columns:
OWNER, PACKAGE_NAME, PROCEDURE_NAME, ANNOTATION_POS, ANNOTATION_NAME, ANNOTATION_TEXT
1 parent c3e3f91 commit 14175e4

4 files changed

Lines changed: 42 additions & 21 deletions

File tree

source/api/ut_runner.pkb

Lines changed: 19 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -116,21 +116,30 @@ create or replace package body ut_runner is
116116
ut_annotation_manager.purge_cache(a_object_owner, coalesce(a_object_type,'PACKAGE'));
117117
end;
118118

119-
function get_unit_tests_info(a_owner varchar2, a_package_name varchar2 := null) return sys_refcursor is
120-
l_result sys_refcursor;
121-
l_filter varchar2(100);
122-
l_ut_owner varchar2(250) := ut_utils.ut_owner;
119+
function get_unit_test_info(a_owner varchar2, a_package_name varchar2 := null) return tt_annotations pipelined is
120+
l_cursor sys_refcursor;
121+
l_filter varchar2(100);
122+
l_ut_owner varchar2(250) := ut_utils.ut_owner;
123+
l_results tt_annotations;
124+
c_bulk_limit constant integer := 10;
123125
begin
124126
l_filter := case when a_package_name is null then 'is null' else '= o.object_name' end;
125-
open l_result for
126-
'select o.object_owner owner, o.object_name as package_name, upper(a.subobject_name) as procedure_name,' ||
127-
' a.name annotation, a.text annotation_text' ||
127+
open l_cursor for
128+
'select o.object_owner, o.object_name, upper(a.subobject_name),' ||
129+
' a.position, a.name, a.text' ||
128130
' from table('||l_ut_owner||'.ut_annotation_manager.get_annotated_objects(:a_owner, ''PACKAGE'')) o,' ||
129131
' table(o.annotations) a' ||
130-
' where exists (select 1 from table(o.annotations) s where s.name=''suite'') ' ||
131-
' and :a_package_name ' || l_filter
132+
' where :a_package_name ' || l_filter
132133
using a_owner, a_package_name;
133-
return l_result;
134+
loop
135+
fetch l_cursor bulk collect into l_results limit c_bulk_limit;
136+
for i in 1 .. l_results.count loop
137+
pipe row (l_results(i));
138+
end loop;
139+
exit when l_cursor%notfound;
140+
end loop;
141+
close l_cursor;
142+
return;
134143
end;
135144

136145
end ut_runner;

source/api/ut_runner.pks

Lines changed: 14 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -80,14 +80,25 @@ create or replace package ut_runner authid current_user is
8080
procedure purge_cache(a_object_owner varchar2, a_object_type varchar2 := null);
8181

8282

83+
type t_annotation_rec is record (
84+
package_owner varchar2(250),
85+
package_name varchar2(250),
86+
procedure_name varchar2(250),
87+
annotation_pos number(5,0),
88+
annotation_name varchar2(1000),
89+
annotation_text varchar2(4000)
90+
);
91+
type tt_annotations is table of t_annotation_rec;
92+
8393
/**
84-
* Returns a ref_cursor containing information about unit tests package(s) for given owner
94+
* Returns a pipelined collection containing information about unit tests package/packages for a given owner
8595
*
8696
* @param a_owner owner of unit tests to retrieve
8797
* @param a_package_name optional name of unit test package to retrieve, if NULLm all unit test packages are returned
88-
* @return sys_refcursor columns: OWNER, PACKAGE_NAME, PROCEDURE_NAME, ANNOTATION, ANNOTATION_TEXT
98+
* @return tt_annotations table of records
8999
*/
90-
function get_unit_tests_info(a_owner varchar2, a_package_name varchar2 := null) return sys_refcursor;
100+
function get_unit_test_info(a_owner varchar2, a_package_name varchar2 := null) return tt_annotations pipelined;
101+
91102

92103
end ut_runner;
93104
/

test/api/test_ut_runner.pkb

Lines changed: 8 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -258,19 +258,20 @@ end;';
258258
ut.expect(l_actual).to_equal(0);
259259
end;
260260

261-
procedure test_get_unit_tests_info is
261+
procedure test_get_unit_test_info is
262262
l_expected sys_refcursor;
263263
l_actual sys_refcursor;
264264
begin
265265
--Arrange
266266
open l_expected for
267-
select 'UT3_TESTER' owner, 'DUMMY_TEST_PACKAGE' package_name,
268-
to_char(null) procedure_name, 'suite' annotation, 'dummy_test_suite' annotation_text from dual union all
269-
select 'UT3_TESTER', 'DUMMY_TEST_PACKAGE', to_char(null), 'rollback', 'manual' from dual union all
270-
select 'UT3_TESTER', 'DUMMY_TEST_PACKAGE', 'SOME_DUMMY_TEST_PROCEDURE', 'test', 'dummy_test' from dual union all
271-
select 'UT3_TESTER', 'DUMMY_TEST_PACKAGE', 'SOME_DUMMY_TEST_PROCEDURE', 'beforetest', 'some_procedure' from dual;
267+
select 'UT3_TESTER' package_owner, 'DUMMY_TEST_PACKAGE' package_name,
268+
to_char(null) procedure_name, 1 annotation_pos, 'suite' annotation_name, 'dummy_test_suite' annotation_text
269+
from dual union all
270+
select 'UT3_TESTER', 'DUMMY_TEST_PACKAGE', to_char(null), 2, 'rollback', 'manual' from dual union all
271+
select 'UT3_TESTER', 'DUMMY_TEST_PACKAGE', 'SOME_DUMMY_TEST_PROCEDURE', 3, 'test', 'dummy_test' from dual union all
272+
select 'UT3_TESTER', 'DUMMY_TEST_PACKAGE', 'SOME_DUMMY_TEST_PROCEDURE', 4, 'beforetest', 'some_procedure' from dual;
272273
--Act
273-
l_actual := ut3.ut_runner.get_unit_tests_info('UT3_TESTER','DUMMY_TEST_PACKAGE');
274+
open l_actual for select * from table(ut3.ut_runner.get_unit_test_info('UT3_TESTER','DUMMY_TEST_PACKAGE'));
274275
--Assert
275276
ut.expect(l_actual).to_equal(l_expected);
276277
end;

test/api/test_ut_runner.pks

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -46,7 +46,7 @@ create or replace package test_ut_runner is
4646
--%test(get_unit_tests_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_tests_info;
49+
procedure test_get_unit_test_info;
5050

5151
end;
5252
/

0 commit comments

Comments
 (0)