Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
2 changes: 1 addition & 1 deletion source/core/coverage/ut_coverage.pkb
Original file line number Diff line number Diff line change
Expand Up @@ -167,7 +167,7 @@ create or replace package body ut_coverage is
begin
if not is_develop_mode() then
--skip all the utplsql framework objects and all the unit test packages that could potentially be reported by coverage.
l_skip_objects := coalesce(ut_utils.get_utplsql_objects_list(),ut_object_names());
l_skip_objects := coalesce( ut_utils.get_utplsql_objects_list() multiset union all ut_suite_manager.get_schema_ut_packages(a_coverage_options.schema_names, a_coverage_options.include_schema_expr) , ut_object_names() );
end if;

--Regex exclusion override the standard exclusion objects.
Expand Down
16 changes: 12 additions & 4 deletions source/core/ut_suite_manager.pkb
Original file line number Diff line number Diff line change
Expand Up @@ -493,13 +493,21 @@ create or replace package body ut_suite_manager is
return l_suites;
end;

function get_schema_ut_packages(a_schema_names ut_varchar2_rows) return ut_object_names is
function get_schema_ut_packages(a_schema_names ut_varchar2_rows, a_schema_name_expr varchar2) return ut_object_names is
l_schema_names ut_varchar2_rows := a_schema_names;
begin
for i in 1 .. a_schema_names.count loop
refresh_cache(a_schema_names(i));
if a_schema_name_expr is not null then
select username
bulk collect into l_schema_names
from all_users
where regexp_like(username,a_schema_name_expr,'i');
end if;

for i in 1 .. l_schema_names.count loop
refresh_cache(l_schema_names(i));
end loop;

return ut_suite_cache_manager.get_cached_packages( a_schema_names );
return ut_suite_cache_manager.get_cached_packages( l_schema_names );
end;

function get_schema_names(a_paths ut_varchar2_list) return ut_varchar2_rows is
Expand Down
2 changes: 1 addition & 1 deletion source/core/ut_suite_manager.pks
Original file line number Diff line number Diff line change
Expand Up @@ -30,7 +30,7 @@ create or replace package ut_suite_manager authid current_user is
* @param a_schema_names list of schemas to return the information for
* @return array containing unit test schema and object names
*/
function get_schema_ut_packages(a_schema_names ut_varchar2_rows) return ut_object_names;
function get_schema_ut_packages(a_schema_names ut_varchar2_rows, a_schema_name_expr varchar2) return ut_object_names;

/**
* Builds a hierarchical suites based on given suite-paths
Expand Down
15 changes: 15 additions & 0 deletions test/ut3_tester_helper/coverage_helper.pkb
Original file line number Diff line number Diff line change
Expand Up @@ -48,6 +48,20 @@ create or replace package body coverage_helper is
end;
end;]';

execute immediate q'[create or replace package ut3_develop.some_other_package is
procedure do_stuff(i_input in number);
end;]';

execute immediate q'[create or replace package body ut3_develop.some_other_package is
procedure do_stuff(i_input in number) is
begin
if i_input = 2 then dbms_output.put_line('should not get here'); elsif i_input = 1 then dbms_output.put_line('should get here');
else
dbms_output.put_line('should not get here');
end if;
end;
end;]';

execute immediate q'[create or replace package ut3_develop.test_dummy_coverage is
--%suite(dummy coverage test)
--%suitepath(coverage_testing)
Expand Down Expand Up @@ -77,6 +91,7 @@ create or replace package body coverage_helper is
pragma autonomous_transaction;
begin
begin execute immediate q'[drop package ut3_develop.test_dummy_coverage]'; exception when others then null; end;
begin execute immediate q'[drop package ut3_develop.some_other_package]'; exception when others then null; end;
begin execute immediate q'[drop package ut3_develop.]'||covered_package_name; exception when others then null; end;
end;

Expand Down
2 changes: 1 addition & 1 deletion test/ut3_tester_helper/run_helper.pkb
Original file line number Diff line number Diff line change
Expand Up @@ -616,7 +616,7 @@ create or replace package body run_helper is

function get_schema_ut_packages(a_owner in varchar2) return ut3_develop.ut_object_names is
begin
return ut3_develop.ut_suite_manager.get_schema_ut_packages(ut3_develop.ut_varchar2_rows(a_owner));
return ut3_develop.ut_suite_manager.get_schema_ut_packages(ut3_develop.ut_varchar2_rows(a_owner), null);
end;

function ut_output_buffer_tmp return t_out_buff_tab pipelined is
Expand Down
29 changes: 16 additions & 13 deletions test/ut3_user/reporters/test_coverage/test_extended_coverage.pkb
Original file line number Diff line number Diff line change
Expand Up @@ -112,25 +112,28 @@ create or replace package body test_extended_coverage is
l_actual clob;
begin
--Arrange
l_expected := '%<file path="package body ut3_develop.regex_dummy_cov">' ||
'%<lineToCover lineNumber="4" covered="true"/>%';
l_not_expected := '%<file path="package body ut3_tester_helper.regex_dummy_cov">' ||
'%<lineToCover lineNumber="4" covered="true"/>%';
l_expected := '%<file path="package body ut3_tester_helper.regex_dummy_cov">' ||
'%<lineToCover lineNumber="4" covered="true"%/>%';
l_not_expected := '%<file path="package body ut3_develop.regex_dummy_cov">' ||
'%<lineToCover lineNumber="4" covered="true"%/>%';
--Act
l_actual :=
ut3_tester_helper.coverage_helper.run_tests_as_job(
q'[
ut3_develop.ut.run(
a_paths => ut3_develop.ut_varchar2_list('ut3_develop.test_regex_dummy_cov', 'ut3_tester_helper.test_regex_dummy_cov'),
a_reporter=> ut3_develop.ut_coverage_sonar_reporter( ),
a_include_schema_expr => '^ut3_develop',
a_include_objects => ut3_develop.ut_varchar2_list( 'ut3_tester_helper.regex_dummy_cov' )
a_include_schema_expr => '^ut3_tester_hel.*',
a_include_objects => ut3_develop.ut_varchar2_list( 'ut3_develop.regex_dummy_cov' )
)
]'
);

--Assert
ut.expect(l_actual).to_be_like(l_expected);
--The below is a workaround for problem with large CLOB like comparison on 11g XE db.
ut.expect(to_char(substr(l_actual,instr(l_actual,'<file path="package body ut3_tester_helper.regex_dummy_cov">'),2000))).to_be_like(l_expected);
ut.expect(l_actual).not_to_be_like(l_not_expected);
ut.expect(l_actual).not_to_be_like('%ut3_tester_helper.test_regex_dummy_cov%');
end;

procedure coverage_regex_include_object is
Expand All @@ -140,9 +143,9 @@ create or replace package body test_extended_coverage is
begin
--Arrange
l_expected := '%<file path="package body ut3_develop.regex123_dummy_cov">' ||
'%<lineToCover lineNumber="4" covered="true"/>%';
'%<lineToCover lineNumber="4" covered="true"%/>%';
l_not_expected := '%<file path="package body ut3_develop.regex_dummy_cov">' ||
'%<lineToCover lineNumber="4" covered="true"/>%';
'%<lineToCover lineNumber="4" covered="true"%/>%';
--Act
l_actual :=
ut3_tester_helper.coverage_helper.run_tests_as_job(
Expand All @@ -167,9 +170,9 @@ create or replace package body test_extended_coverage is
begin
--Arrange
l_expected := '%<file path="package body ut3_develop.regex_dummy_cov">' ||
'%<lineToCover lineNumber="4" covered="true"/>%';
'%<lineToCover lineNumber="4" covered="true"%/>%';
l_not_expected := '%<file path="package body ut3_tester_helper.regex_dummy_cov">' ||
'%<lineToCover lineNumber="4" covered="true"/>%';
'%<lineToCover lineNumber="4" covered="true"%/>%';
--Act
l_actual :=
ut3_tester_helper.coverage_helper.run_tests_as_job(
Expand All @@ -194,9 +197,9 @@ create or replace package body test_extended_coverage is
begin
--Arrange
l_expected := '%<file path="package body ut3_develop.regex_dummy_cov">' ||
'%<lineToCover lineNumber="4" covered="true"/>%';
'%<lineToCover lineNumber="4" covered="true"%/>%';
l_not_expected := '%<file path="package body ut3_develop.regex123_dummy_cov">' ||
'%<lineToCover lineNumber="4" covered="true"/>%';
'%<lineToCover lineNumber="4" covered="true"%/>%';
--Act
l_actual :=
ut3_tester_helper.coverage_helper.run_tests_as_job(
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -66,6 +66,7 @@ create or replace package body test_proftab_coverage is
);
--Assert
ut.expect(l_actual).to_be_like(l_expected);
ut.expect(l_actual).not_to_be_like('%<file path="package body ut3_develop.test_dummy_coverage%">%');
end;

procedure coverage_for_file is
Expand Down