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

Skip to content

Commit 7b9e085

Browse files
committed
Making more changes
1 parent fc7bee9 commit 7b9e085

4 files changed

Lines changed: 122 additions & 20 deletions

File tree

source/core/coverage/ut_coverage.pkb

Lines changed: 21 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -55,6 +55,7 @@ create or replace package body ut_coverage is
5555
from {sources_view} s {join_file_mappings}
5656
where s.type in ('PACKAGE BODY', 'TYPE BODY', 'PROCEDURE', 'FUNCTION', 'TRIGGER')
5757
{filters}
58+
{regex_exc_filters}
5859
),
5960
coverage_sources as (
6061
select full_name, owner, name, type, line, text,
@@ -85,7 +86,6 @@ create or replace package body ut_coverage is
8586
where s.owner = el.owner and s.name = el.name
8687
)
8788
and line > 0
88-
{regex_filters}
8989
]';
9090

9191
if a_coverage_options.file_mappings is not empty then
@@ -99,11 +99,14 @@ create or replace package body ut_coverage is
9999
elsif a_coverage_options.include_schema_expr is not null or a_coverage_options.include_object_expr is not null then
100100
l_full_name := q'[lower(s.type||' '||s.owner||'.'||s.name)]';
101101
if a_coverage_options.include_schema_expr is not null then
102-
l_filters := q'[and regexp_like(s.owner,']'||a_coverage_options.include_schema_expr||q'[','i')]';
103-
end if;
104-
102+
l_filters := q'[and regexp_like(s.owner,:a_include_schema_expr,'i')]';
103+
else
104+
l_filters := 'and :a_include_schema_expr is null';
105+
end if;
105106
if a_coverage_options.include_object_expr is not null then
106-
l_filters := l_filters|| q'[ and regexp_like(s.name,']'||a_coverage_options.include_object_expr||q'[','i')]';
107+
l_filters := l_filters|| q'[ and regexp_like(s.name,:a_include_object_expr,'i')]';
108+
else
109+
l_filters := l_filters|| 'and :a_include_object_expr is null';
107110
end if;
108111
else
109112
l_full_name := q'[lower(s.type||' '||s.owner||'.'||s.name)]';
@@ -124,11 +127,15 @@ create or replace package body ut_coverage is
124127

125128

126129
if a_coverage_options.exclude_schema_expr is not null then
127-
l_regex_exc_filters := l_regex_exc_filters||q'[ and not regexp_like(s.owner,']'||a_coverage_options.exclude_schema_expr||q'[,'i')]';
130+
l_regex_exc_filters := q'[ and not regexp_like(s.owner,:a_exclude_schema_expr,'i')]';
131+
else
132+
l_regex_exc_filters := ' and :a_exclude_schema_expr is null ';
128133
end if;
129134

130135
if a_coverage_options.exclude_object_expr is not null then
131-
l_regex_exc_filters := l_regex_exc_filters||q'[ and not regexp_like(s.name,']'||a_coverage_options.exclude_object_expr||q'[,'i')]';
136+
l_regex_exc_filters := l_regex_exc_filters||q'[ and not regexp_like(s.name,:a_exclude_obj_expr:,'i')]';
137+
else
138+
l_regex_exc_filters := l_regex_exc_filters||'and :a_exclude_obj_expr is null ';
132139
end if;
133140

134141

@@ -139,7 +146,7 @@ create or replace package body ut_coverage is
139146
l_result := replace(l_result, '{filters}', l_filters);
140147
l_result := replace(l_result, '{mappings_cardinality}', l_mappings_cardinality);
141148
l_result := replace(l_result, '{skipped_objects_cardinality}', ut_utils.scale_cardinality(cardinality(a_skip_objects)));
142-
l_result := replace(l_result, '{regex_filters}', l_regex_exc_filters);
149+
l_result := replace(l_result, '{regex_exc_filters}', l_regex_exc_filters);
143150

144151
return l_result;
145152

@@ -160,13 +167,15 @@ create or replace package body ut_coverage is
160167
ut_event_manager.trigger_event(ut_event_manager.gc_debug, ut_key_anyvalues().put('l_sql',l_sql) );
161168

162169
if a_coverage_options.file_mappings is not empty then
163-
open l_cursor for l_sql using a_coverage_options.file_mappings, l_skip_objects;
170+
open l_cursor for l_sql using a_coverage_options.file_mappings,a_coverage_options.exclude_schema_expr,a_coverage_options.exclude_object_expr,l_skip_objects;
164171
elsif a_coverage_options.include_objects is not empty then
165-
open l_cursor for l_sql using a_coverage_options.include_objects, l_skip_objects;
172+
open l_cursor for l_sql using a_coverage_options.include_objects,a_coverage_options.exclude_schema_expr,a_coverage_options.exclude_object_expr,l_skip_objects;
166173
elsif a_coverage_options.include_schema_expr is not null or a_coverage_options.include_object_expr is not null then
167-
open l_cursor for l_sql using l_skip_objects;
174+
open l_cursor for l_sql using a_coverage_options.include_schema_expr,a_coverage_options.include_object_expr,
175+
a_coverage_options.exclude_schema_expr,a_coverage_options.exclude_object_expr,
176+
l_skip_objects;
168177
else
169-
open l_cursor for l_sql using a_coverage_options.schema_names, l_skip_objects;
178+
open l_cursor for l_sql using a_coverage_options.schema_names,a_coverage_options.exclude_schema_expr,a_coverage_options.exclude_object_expr,l_skip_objects;
170179
end if;
171180
return l_cursor;
172181
end;

test/ut3_tester_helper/coverage_helper.pkb

Lines changed: 15 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -200,14 +200,14 @@ create or replace package body coverage_helper is
200200
begin execute immediate q'[drop package ut3_develop.test_regex_dummy_cov]'; exception when others then null; end;
201201
end;
202202

203-
procedure create_regex_dummy_cov_schema is
203+
procedure create_regex_dummy_for_schema(p_schema in varchar2) is
204204
pragma autonomous_transaction;
205205
begin
206-
execute immediate q'[create or replace package ut3_develop.]'||covered_package_name||q'[ is
206+
execute immediate q'[create or replace package ]'||p_schema||q'[.regex_dummy_cov_schema is
207207
procedure do_stuff(i_input in number);
208208
end;]';
209209

210-
execute immediate q'[create or replace package body ut3_develop.]'||covered_package_name||q'[ is
210+
execute immediate q'[create or replace package body ]'||p_schema||q'[.regex_dummy_cov_schema is
211211
procedure do_stuff(i_input in number) is
212212
begin
213213
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');
@@ -217,7 +217,7 @@ create or replace package body coverage_helper is
217217
end;
218218
end;]';
219219

220-
execute immediate q'[create or replace package ut3_develop.test_dummy_coverage is
220+
execute immediate q'[create or replace package ]'||p_schema||q'[.test_regex_dummy_cov_schema is
221221
--%suite(dummy coverage test)
222222
--%suitepath(coverage_testing)
223223

@@ -228,10 +228,10 @@ create or replace package body coverage_helper is
228228
procedure zero_coverage;
229229
end;]';
230230

231-
execute immediate q'[create or replace package body ut3_develop.test_dummy_coverage is
231+
execute immediate q'[create or replace package body ]'||p_schema||q'[.test_regex_dummy_cov_schema is
232232
procedure test_do_stuff is
233233
begin
234-
]'||covered_package_name||q'[.do_stuff(1);
234+
regex_dummy_cov_schema.do_stuff(1);
235235
ut.expect(1).to_equal(1);
236236
end;
237237
procedure zero_coverage is
@@ -241,11 +241,19 @@ create or replace package body coverage_helper is
241241
end;]';
242242
end;
243243

244+
procedure create_regex_dummy_cov_schema is
245+
begin
246+
create_regex_dummy_for_schema('ut3_develop');
247+
create_regex_dummy_for_schema('ut3_tester_helper');
248+
end;
249+
244250
procedure drop_regex_dummy_cov_schema is
245251
pragma autonomous_transaction;
246252
begin
247-
begin execute immediate q'[drop package ut3_helper.regex_dummy_cov_schema]'; exception when others then null; end;
253+
begin execute immediate q'[drop package ut3_develop.regex_dummy_cov_schema]'; exception when others then null; end;
248254
begin execute immediate q'[drop package ut3_develop.test_regex_dummy_cov_schema]'; exception when others then null; end;
255+
begin execute immediate q'[drop package ut3_tester_helper.regex_dummy_cov_schema]'; exception when others then null; end;
256+
begin execute immediate q'[drop package ut3_tester_helper.test_regex_dummy_cov_schema]'; exception when others then null; end;
249257
end;
250258

251259

test/ut3_user/reporters/test_coverage/test_extended_coverage.pkb

Lines changed: 71 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -106,5 +106,76 @@ create or replace package body test_extended_coverage is
106106
ut.expect(l_actual).to_be_like(l_expected);
107107
end;
108108

109+
procedure coverage_regex_include_schema is
110+
l_expected_ut3 clob;
111+
l_expected_help clob;
112+
l_actual_ut3 clob;
113+
l_actual_help clob;
114+
l_actual_both clob;
115+
116+
begin
117+
--Arrange
118+
l_expected_ut3 := '%<file path="package body ut3_develop.test_regex_dummy_cov_schema">' ||
119+
'%<lineToCover lineNumber="4" covered="true"/>%';
120+
l_expected_help := '%<file path="package body ut3_tester_helper.test_regex_dummy_cov_schema">' ||
121+
'%<lineToCover lineNumber="4" covered="true"/>%';
122+
--Act
123+
l_actual_ut3 :=
124+
ut3_tester_helper.coverage_helper.run_tests_as_job(
125+
q'[
126+
ut3_develop.ut.run(
127+
a_paths => ut3_develop.ut_varchar2_list('ut3_develop.test_regex_dummy_cov_schema', 'ut3_tester_helper.test_regex_dummy_cov_schema'),
128+
a_reporter=> ut3_develop.ut_coverage_sonar_reporter( ),
129+
a_include_schema_expr => '^ut3_develop'
130+
)
131+
]'
132+
);
133+
/*
134+
l_actual_help :=
135+
ut3_tester_helper.coverage_helper.run_tests_as_job(
136+
q'[
137+
ut3_develop.ut.run(
138+
a_paths => ut3_develop.ut_varchar2_list('ut3_develop.test_regex_dummy_cov_schema', 'ut3_tester_helper.test_regex_dummy_cov_schema'),
139+
a_reporter=> ut3_develop.ut_coverage_sonar_reporter( ),
140+
a_include_schema_expr => '^ut3_tester_helper'
141+
)
142+
]'
143+
);
144+
145+
l_actual_both :=
146+
ut3_tester_helper.coverage_helper.run_tests_as_job(
147+
q'[
148+
ut3_develop.ut.run(
149+
a_paths => ut3_develop.ut_varchar2_list('ut3_develop.test_regex_dummy_cov_schema', 'ut3_tester_helper.test_regex_dummy_cov_schema'),
150+
a_reporter=> ut3_develop.ut_coverage_sonar_reporter( ),
151+
a_include_schema_expr => '^ut3_tester_helper||^ut3_tester_helper'
152+
)
153+
]'
154+
);
155+
*/
156+
--Assert
157+
ut.expect(l_actual_ut3).to_be_like(l_expected_ut3);
158+
ut.expect(l_actual_ut3).not_to_be_like(l_expected_help);
159+
--ut.expect(l_actual_help).to_be_like(l_expected_help);
160+
--ut.expect(l_actual_help).not_to_be_like(l_expected_ut3);
161+
--ut.expect(l_actual_both).to_be_like(l_expected_ut3);
162+
--ut.expect(l_actual_both).to_be_like(l_expected_help);
163+
end;
164+
165+
procedure coverage_regex_include_object is
166+
begin
167+
null;
168+
end;
169+
170+
procedure coverage_regex_exclude_schema is
171+
begin
172+
null;
173+
end;
174+
175+
procedure coverage_regex_exclude_object is
176+
begin
177+
null;
178+
end;
179+
109180
end;
110181
/

test/ut3_user/reporters/test_coverage/test_extended_coverage.pks

Lines changed: 15 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -17,6 +17,20 @@ create or replace package test_extended_coverage is
1717
--%tags(#1097,#1094)
1818
--%test(Extended coverage does not fail the test run then tested code calls DBMS_STATS)
1919
procedure coverage_with_dbms_stats;
20-
20+
21+
--%beforetest(ut3_tester_helper.coverage_helper.create_regex_dummy_cov_schema)
22+
--%aftertest(ut3_tester_helper.coverage_helper.drop_regex_dummy_cov_schema)
23+
--%test(Collect coverage for objects with schema regex include)
24+
procedure coverage_regex_include_schema;
25+
26+
--%test(Collect coverage for objects with schema regex include)
27+
procedure coverage_regex_include_object;
28+
29+
--%test(Collect coverage for objects with schema regex include)
30+
procedure coverage_regex_exclude_schema;
31+
32+
--%test(Collect coverage for objects with schema regex include)
33+
procedure coverage_regex_exclude_object;
34+
2135
end;
2236
/

0 commit comments

Comments
 (0)