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

Skip to content

Commit 881f8ad

Browse files
committed
Coverage tmp table is now cleaned up after each run.
Resolves #562
1 parent 2a953de commit 881f8ad

3 files changed

Lines changed: 86 additions & 6 deletions

File tree

source/api/ut_runner.pkb

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -39,6 +39,7 @@ create or replace package body ut_runner is
3939
ut_output_buffer.close(a_reporters);
4040
ut_metadata.reset_source_definition_cache;
4141
ut_utils.read_cache_to_dbms_output();
42+
ut_coverage_helper.cleanup_tmp_table();
4243
end;
4344

4445

test/core/reporters/test_coverage.pkb

Lines changed: 79 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -11,8 +11,8 @@ create or replace package body test_coverage is
1111
end;
1212

1313
procedure create_dummy_coverage_package is
14+
pragma autonomous_transaction;
1415
begin
15-
dbms_output.put_line('creating UT3.DUMMY_COVERAGE');
1616
execute immediate q'[create or replace package UT3.DUMMY_COVERAGE is
1717
procedure do_stuff;
1818
end;]';
@@ -29,10 +29,11 @@ create or replace package body test_coverage is
2929
end;
3030

3131
procedure create_dummy_coverage_test is
32+
pragma autonomous_transaction;
3233
begin
33-
dbms_output.put_line('creating UT3.TEST_DUMMY_COVERAGE');
3434
execute immediate q'[create or replace package UT3.TEST_DUMMY_COVERAGE is
3535
--%suite(dummy coverage test)
36+
--%suitepath(coverage_testing)
3637

3738
--%test
3839
procedure test_do_stuff;
@@ -45,6 +46,45 @@ create or replace package body test_coverage is
4546
end;]';
4647
end;
4748

49+
procedure create_dummy_coverage_test_1 is
50+
pragma autonomous_transaction;
51+
begin
52+
execute immediate q'[create or replace package UT3.DUMMY_COVERAGE_1 is
53+
procedure do_stuff;
54+
end;]';
55+
execute immediate q'[create or replace package body UT3.DUMMY_COVERAGE_1 is
56+
procedure do_stuff is
57+
begin
58+
if 1 = 2 then
59+
dbms_output.put_line('should not get here');
60+
else
61+
dbms_output.put_line('should get here');
62+
end if;
63+
end;
64+
end;]';
65+
execute immediate q'[create or replace package UT3.TEST_DUMMY_COVERAGE_1 is
66+
--%suite(dummy coverage test 1)
67+
--%suitepath(coverage_testing)
68+
69+
--%test
70+
procedure test_do_stuff;
71+
end;]';
72+
execute immediate q'[create or replace package body UT3.TEST_DUMMY_COVERAGE_1 is
73+
procedure test_do_stuff is
74+
begin
75+
dummy_coverage_1.do_stuff;
76+
end;
77+
end;]';
78+
end;
79+
80+
procedure drop_dummy_coverage_test_1 is
81+
pragma autonomous_transaction;
82+
begin
83+
execute immediate q'[drop package UT3.DUMMY_COVERAGE_1]';
84+
execute immediate q'[drop package UT3.TEST_DUMMY_COVERAGE_1]';
85+
end;
86+
87+
4888
procedure mock_coverage_data(a_run_id integer) is
4989
c_unit_id constant integer := 1;
5090
begin
@@ -74,10 +114,8 @@ create or replace package body test_coverage is
74114
procedure cleanup_dummy_coverage is
75115
pragma autonomous_transaction;
76116
begin
77-
dbms_output.put_line('dopping UT3.TEST_DUMMY_COVERAGE');
78-
execute immediate q'[drop package ut3.test_dummy_coverage]';
79-
dbms_output.put_line('dopping UT3.DUMMY_COVERAGE');
80-
execute immediate q'[drop package ut3.dummy_coverage]';
117+
begin execute immediate q'[drop package ut3.test_dummy_coverage]'; exception when others then null; end;
118+
begin execute immediate q'[drop package ut3.dummy_coverage]'; exception when others then null; end;
81119
delete from ut3.plsql_profiler_data where runid = g_run_id;
82120
delete from ut3.plsql_profiler_units where runid = g_run_id;
83121
delete from ut3.plsql_profiler_runs where runid = g_run_id;
@@ -154,5 +192,40 @@ create or replace package body test_coverage is
154192
ut.expect(l_actual).to_be_like(l_expected);
155193
end;
156194

195+
procedure coverage_tmp_data_refresh is
196+
l_actual clob;
197+
l_results ut3.ut_varchar2_list;
198+
begin
199+
--Arrange
200+
select *
201+
bulk collect into l_results
202+
from table(
203+
ut3.ut.run(
204+
a_path => 'ut3:coverage_testing',
205+
a_reporter=> ut3.ut_coverage_sonar_reporter( ),
206+
a_include_objects => ut3.ut_varchar2_list( 'ut3.dummy_coverage' )
207+
)
208+
);
209+
cleanup_dummy_coverage();
210+
create_dummy_coverage_test_1;
211+
212+
--Act
213+
select *
214+
bulk collect into l_results
215+
from table(
216+
ut3.ut.run(
217+
a_path => 'ut3:coverage_testing',
218+
a_reporter=> ut3.ut_coverage_sonar_reporter( ),
219+
a_include_objects => ut3.ut_varchar2_list( 'ut3.dummy_coverage' )
220+
)
221+
);
222+
223+
--Assert
224+
l_actual := ut3.ut_utils.table_to_clob(l_results);
225+
ut.expect(l_actual).to_equal(to_clob('<coverage version="1">
226+
</coverage>'));
227+
drop_dummy_coverage_test_1;
228+
end;
229+
157230
end;
158231
/

test/core/reporters/test_coverage.pks

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -9,6 +9,7 @@ create or replace package test_coverage is
99
--%afterall
1010
procedure cleanup_dummy_coverage;
1111

12+
1213
--%test(Coverage is gathered for specified object)
1314
procedure coverage_for_object;
1415

@@ -17,5 +18,10 @@ create or replace package test_coverage is
1718

1819
--%test(Coverage is gathered for specified file)
1920
procedure coverage_for_file;
21+
22+
--%test(Coverage data is not cached between runs - issue #562 )
23+
--%aftertest(setup_dummy_coverage)
24+
procedure coverage_tmp_data_refresh;
25+
2026
end;
2127
/

0 commit comments

Comments
 (0)