Skip to content

Commit e4c9809

Browse files
authored
Merge pull request #1226 from utPLSQL/bugfix/exclude_ut_packages_from_coverage
Exclude Unit Test packages from coverage
2 parents 519f06b + d825156 commit e4c9809

File tree

7 files changed

+47
-20
lines changed

7 files changed

+47
-20
lines changed

source/core/coverage/ut_coverage.pkb

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -167,7 +167,7 @@ create or replace package body ut_coverage is
167167
begin
168168
if not is_develop_mode() then
169169
--skip all the utplsql framework objects and all the unit test packages that could potentially be reported by coverage.
170-
l_skip_objects := coalesce(ut_utils.get_utplsql_objects_list(),ut_object_names());
170+
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() );
171171
end if;
172172

173173
--Regex exclusion override the standard exclusion objects.

source/core/ut_suite_manager.pkb

Lines changed: 12 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -493,13 +493,21 @@ create or replace package body ut_suite_manager is
493493
return l_suites;
494494
end;
495495

496-
function get_schema_ut_packages(a_schema_names ut_varchar2_rows) return ut_object_names is
496+
function get_schema_ut_packages(a_schema_names ut_varchar2_rows, a_schema_name_expr varchar2) return ut_object_names is
497+
l_schema_names ut_varchar2_rows := a_schema_names;
497498
begin
498-
for i in 1 .. a_schema_names.count loop
499-
refresh_cache(a_schema_names(i));
499+
if a_schema_name_expr is not null then
500+
select username
501+
bulk collect into l_schema_names
502+
from all_users
503+
where regexp_like(username,a_schema_name_expr,'i');
504+
end if;
505+
506+
for i in 1 .. l_schema_names.count loop
507+
refresh_cache(l_schema_names(i));
500508
end loop;
501509

502-
return ut_suite_cache_manager.get_cached_packages( a_schema_names );
510+
return ut_suite_cache_manager.get_cached_packages( l_schema_names );
503511
end;
504512

505513
function get_schema_names(a_paths ut_varchar2_list) return ut_varchar2_rows is

source/core/ut_suite_manager.pks

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -30,7 +30,7 @@ create or replace package ut_suite_manager authid current_user is
3030
* @param a_schema_names list of schemas to return the information for
3131
* @return array containing unit test schema and object names
3232
*/
33-
function get_schema_ut_packages(a_schema_names ut_varchar2_rows) return ut_object_names;
33+
function get_schema_ut_packages(a_schema_names ut_varchar2_rows, a_schema_name_expr varchar2) return ut_object_names;
3434

3535
/**
3636
* Builds a hierarchical suites based on given suite-paths

test/ut3_tester_helper/coverage_helper.pkb

Lines changed: 15 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -48,6 +48,20 @@ create or replace package body coverage_helper is
4848
end;
4949
end;]';
5050

51+
execute immediate q'[create or replace package ut3_develop.some_other_package is
52+
procedure do_stuff(i_input in number);
53+
end;]';
54+
55+
execute immediate q'[create or replace package body ut3_develop.some_other_package is
56+
procedure do_stuff(i_input in number) is
57+
begin
58+
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');
59+
else
60+
dbms_output.put_line('should not get here');
61+
end if;
62+
end;
63+
end;]';
64+
5165
execute immediate q'[create or replace package ut3_develop.test_dummy_coverage is
5266
--%suite(dummy coverage test)
5367
--%suitepath(coverage_testing)
@@ -77,6 +91,7 @@ create or replace package body coverage_helper is
7791
pragma autonomous_transaction;
7892
begin
7993
begin execute immediate q'[drop package ut3_develop.test_dummy_coverage]'; exception when others then null; end;
94+
begin execute immediate q'[drop package ut3_develop.some_other_package]'; exception when others then null; end;
8095
begin execute immediate q'[drop package ut3_develop.]'||covered_package_name; exception when others then null; end;
8196
end;
8297

test/ut3_tester_helper/run_helper.pkb

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -616,7 +616,7 @@ create or replace package body run_helper is
616616

617617
function get_schema_ut_packages(a_owner in varchar2) return ut3_develop.ut_object_names is
618618
begin
619-
return ut3_develop.ut_suite_manager.get_schema_ut_packages(ut3_develop.ut_varchar2_rows(a_owner));
619+
return ut3_develop.ut_suite_manager.get_schema_ut_packages(ut3_develop.ut_varchar2_rows(a_owner), null);
620620
end;
621621

622622
function ut_output_buffer_tmp return t_out_buff_tab pipelined is

test/ut3_user/reporters/test_coverage/test_extended_coverage.pkb

Lines changed: 16 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -112,25 +112,28 @@ create or replace package body test_extended_coverage is
112112
l_actual clob;
113113
begin
114114
--Arrange
115-
l_expected := '%<file path="package body ut3_develop.regex_dummy_cov">' ||
116-
'%<lineToCover lineNumber="4" covered="true"/>%';
117-
l_not_expected := '%<file path="package body ut3_tester_helper.regex_dummy_cov">' ||
118-
'%<lineToCover lineNumber="4" covered="true"/>%';
115+
l_expected := '%<file path="package body ut3_tester_helper.regex_dummy_cov">' ||
116+
'%<lineToCover lineNumber="4" covered="true"%/>%';
117+
l_not_expected := '%<file path="package body ut3_develop.regex_dummy_cov">' ||
118+
'%<lineToCover lineNumber="4" covered="true"%/>%';
119119
--Act
120120
l_actual :=
121121
ut3_tester_helper.coverage_helper.run_tests_as_job(
122122
q'[
123123
ut3_develop.ut.run(
124124
a_paths => ut3_develop.ut_varchar2_list('ut3_develop.test_regex_dummy_cov', 'ut3_tester_helper.test_regex_dummy_cov'),
125125
a_reporter=> ut3_develop.ut_coverage_sonar_reporter( ),
126-
a_include_schema_expr => '^ut3_develop',
127-
a_include_objects => ut3_develop.ut_varchar2_list( 'ut3_tester_helper.regex_dummy_cov' )
126+
a_include_schema_expr => '^ut3_tester_hel.*',
127+
a_include_objects => ut3_develop.ut_varchar2_list( 'ut3_develop.regex_dummy_cov' )
128128
)
129129
]'
130130
);
131+
131132
--Assert
132-
ut.expect(l_actual).to_be_like(l_expected);
133+
--The below is a workaround for problem with large CLOB like comparison on 11g XE db.
134+
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);
133135
ut.expect(l_actual).not_to_be_like(l_not_expected);
136+
ut.expect(l_actual).not_to_be_like('%ut3_tester_helper.test_regex_dummy_cov%');
134137
end;
135138

136139
procedure coverage_regex_include_object is
@@ -140,9 +143,9 @@ create or replace package body test_extended_coverage is
140143
begin
141144
--Arrange
142145
l_expected := '%<file path="package body ut3_develop.regex123_dummy_cov">' ||
143-
'%<lineToCover lineNumber="4" covered="true"/>%';
146+
'%<lineToCover lineNumber="4" covered="true"%/>%';
144147
l_not_expected := '%<file path="package body ut3_develop.regex_dummy_cov">' ||
145-
'%<lineToCover lineNumber="4" covered="true"/>%';
148+
'%<lineToCover lineNumber="4" covered="true"%/>%';
146149
--Act
147150
l_actual :=
148151
ut3_tester_helper.coverage_helper.run_tests_as_job(
@@ -167,9 +170,9 @@ create or replace package body test_extended_coverage is
167170
begin
168171
--Arrange
169172
l_expected := '%<file path="package body ut3_develop.regex_dummy_cov">' ||
170-
'%<lineToCover lineNumber="4" covered="true"/>%';
173+
'%<lineToCover lineNumber="4" covered="true"%/>%';
171174
l_not_expected := '%<file path="package body ut3_tester_helper.regex_dummy_cov">' ||
172-
'%<lineToCover lineNumber="4" covered="true"/>%';
175+
'%<lineToCover lineNumber="4" covered="true"%/>%';
173176
--Act
174177
l_actual :=
175178
ut3_tester_helper.coverage_helper.run_tests_as_job(
@@ -194,9 +197,9 @@ create or replace package body test_extended_coverage is
194197
begin
195198
--Arrange
196199
l_expected := '%<file path="package body ut3_develop.regex_dummy_cov">' ||
197-
'%<lineToCover lineNumber="4" covered="true"/>%';
200+
'%<lineToCover lineNumber="4" covered="true"%/>%';
198201
l_not_expected := '%<file path="package body ut3_develop.regex123_dummy_cov">' ||
199-
'%<lineToCover lineNumber="4" covered="true"/>%';
202+
'%<lineToCover lineNumber="4" covered="true"%/>%';
200203
--Act
201204
l_actual :=
202205
ut3_tester_helper.coverage_helper.run_tests_as_job(

test/ut3_user/reporters/test_coverage/test_proftab_coverage.pkb

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -66,6 +66,7 @@ create or replace package body test_proftab_coverage is
6666
);
6767
--Assert
6868
ut.expect(l_actual).to_be_like(l_expected);
69+
ut.expect(l_actual).not_to_be_like('%<file path="package body ut3_develop.test_dummy_coverage%">%');
6970
end;
7071

7172
procedure coverage_for_file is

0 commit comments

Comments
 (0)