Skip to content
Merged
Show file tree
Hide file tree
Changes from 1 commit
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
Prev Previous commit
Next Next commit
Reorganized and cleaned up tests to have only one package used for co…
…verage tests.
  • Loading branch information
jgebal committed Jun 21, 2020
commit e9e4b9ed3d5dd9f65f5f52dd080920ca4eefc1ff
36 changes: 2 additions & 34 deletions test/ut3_tester_helper/coverage_helper.pkb
Original file line number Diff line number Diff line change
Expand Up @@ -20,10 +20,7 @@ create or replace package body coverage_helper is
$end
end;

function substitute_covered_package(
a_text varchar2,
a_substitution varchar2
) return varchar2 is
function substitute_covered_package( a_text varchar2, a_substitution varchar2 ) return varchar2 is
begin
return replace( replace( a_text, a_substitution, covered_package_name() ), upper(a_substitution), upper(covered_package_name()) );
end;
Expand Down Expand Up @@ -126,39 +123,10 @@ create or replace package body coverage_helper is
begin execute immediate q'[drop package ut3_develop.test_dummy_coverage_1]'; exception when others then null; end;
end;

procedure create_coverage_pkg is
pragma autonomous_transaction;
begin
execute immediate 'alter session set plsql_optimize_level=0';
execute immediate q'[create or replace package coverage_pkg as
function run_some_branching_code(a_input integer) return integer;
end;]';
execute immediate q'[create or replace package body coverage_pkg as
function run_some_branching_code(a_input integer) return integer is
l_result integer;
begin
if a_input = 1 then return -1; elsif a_input = 2 then return 0;
else
return a_input;
end if;
end;
end;]';
execute immediate 'grant debug on coverage_pkg to ut3$user#';
end;

procedure drop_coverage_pkg is
pragma autonomous_transaction;
begin
execute immediate q'[drop package coverage_pkg]';
end;



procedure run_standalone_coverage(a_coverage_run_id raw, a_input integer) is
x integer;
begin
ut3_develop.ut_runner.coverage_start(a_coverage_run_id);
execute immediate 'begin :x := coverage_pkg.run_some_branching_code(:a_input); end;' using out x, in a_input;
execute immediate 'begin ut3_develop.'||covered_package_name||'.do_stuff(:a_input); end;' using in a_input;
ut3_develop.ut_runner.coverage_stop();
end;

Expand Down
8 changes: 1 addition & 7 deletions test/ut3_tester_helper/coverage_helper.pks
Original file line number Diff line number Diff line change
Expand Up @@ -4,10 +4,7 @@ create or replace package coverage_helper is

function covered_package_name return varchar2;

function substitute_covered_package(
a_text varchar2,
a_substitution varchar2 := '{p}'
) return varchar2;
function substitute_covered_package( a_text varchar2, a_substitution varchar2 := '{p}' ) return varchar2;

procedure set_develop_mode;

Expand All @@ -20,9 +17,6 @@ create or replace package coverage_helper is
procedure run_standalone_coverage(a_coverage_run_id raw, a_input integer);
procedure run_coverage_job(a_coverage_run_id raw, a_input integer);

procedure create_coverage_pkg;
procedure drop_coverage_pkg;

function run_tests_as_job( a_run_command varchar2 ) return clob;
function run_code_as_job( a_plsql_block varchar2 ) return clob;
procedure create_test_results_table;
Expand Down
88 changes: 52 additions & 36 deletions test/ut3_user/reporters/test_coverage/test_coverage_standalone.pkb
Original file line number Diff line number Diff line change
@@ -1,40 +1,66 @@
create or replace package body test_coverage_standalone is

procedure coverage_without_ut_run is
l_coverage_run_id raw(32) := sys_guid();
l_actual ut3_develop.ut_varchar2_list;
function run_coverage_twice(a_overage_run_id raw, a_object_name varchar2) return clob is
l_expected clob;
l_block_cov clob;
l_file_path varchar2(250);
begin
l_file_path := 'ut3_develop.'||a_object_name;
--Arrange
if ut3_tester_helper.coverage_helper.block_coverage_available then
l_block_cov := '%<line number="5" hits="4" branch="true" condition-coverage="67% (2/3)"/>';
l_block_cov := '<line number="4" hits="5" branch="true" condition-coverage="67% (2/3)"/>';
else
l_block_cov := '%<line number="5" hits="4" branch="false"/>';
l_block_cov := '<line number="4" hits="5" branch="false"/>';
end if;
l_expected := '%<source>ut3_tester_helper.coverage_pkg</source>' ||
'%<package name="COVERAGE_PKG" ' ||
'%<class name="COVERAGE_PKG" filename="ut3_tester_helper.coverage_pkg"' ||
'%<lines>' ||
l_block_cov ||
'%<line number="7" hits="1" branch="false"/>%';
--Act
ut3_tester_helper.coverage_helper.run_coverage_job(l_coverage_run_id, 1);
ut3_tester_helper.coverage_helper.run_coverage_job(l_coverage_run_id, 3);
l_expected :=
q'[<?xml version="1.0"?>
<!DOCTYPE coverage SYSTEM "http://cobertura.sourceforge.net/xml/coverage-04.dtd">
<coverage line-rate="0" branch-rate="0.0" lines-covered="2" lines-valid="2" branches-covered="0" branches-valid="0" complexity="0" version="1" timestamp="%">
<sources>
<source>]'||l_file_path||q'[</source>
</sources>
<packages>
<package name="]'||upper(a_object_name)||q'[" line-rate="0.0" branch-rate="0.0" complexity="0.0">
<class name="]'||upper(a_object_name)||q'[" filename="]'||l_file_path||q'[" line-rate="0.0" branch-rate="0.0" complexity="0.0">
<lines>
]'||l_block_cov||q'[
<line number="6" hits="1" branch="false"/>
</lines>
</class>
</package>
</packages>
</coverage>]';
--Act
ut3_tester_helper.coverage_helper.run_coverage_job(a_overage_run_id, 1);
ut3_tester_helper.coverage_helper.run_coverage_job(a_overage_run_id, 3);
return l_expected;
end;

procedure coverage_without_ut_run is
l_coverage_run_id raw(32) := sys_guid();
l_actual ut3_develop.ut_varchar2_list;
l_expected clob;
l_name varchar2(250);
begin
l_name := ut3_tester_helper.coverage_helper.covered_package_name;

--Arrange and Act
l_expected := run_coverage_twice(l_coverage_run_id, l_name);

--Assert
select *
bulk collect into l_actual
from
table (
ut3_develop.ut_coverage_cobertura_reporter( ).get_report(
ut3_develop.ut_coverage_options(
coverage_run_id => l_coverage_run_id,
include_objects => ut3_develop.ut_varchar2_rows('COVERAGE_PKG'),
schema_names => ut3_develop.ut_varchar2_rows('UT3_TESTER_HELPER')
include_objects => ut3_develop.ut_varchar2_rows(l_name),
schema_names => ut3_develop.ut_varchar2_rows('UT3_DEVELOP')
)
)
);

--Assert
ut.expect(ut3_tester_helper.main_helper.table_to_clob(l_actual)).to_be_like( l_expected );
end;

Expand All @@ -43,35 +69,25 @@ create or replace package body test_coverage_standalone is
l_coverage_cursor sys_refcursor;
l_actual ut3_develop.ut_varchar2_list;
l_expected clob;
l_block_cov clob;
l_name varchar2(250);
begin
--Arrange
if ut3_tester_helper.coverage_helper.block_coverage_available then
l_block_cov := '%<line number="5" hits="4" branch="true" condition-coverage="67% (2/3)"/>';
else
l_block_cov := '%<line number="5" hits="4" branch="false"/>';
end if;
l_expected := '%<source>ut3_tester_helper.coverage_pkg</source>' ||
'%<package name="COVERAGE_PKG" ' ||
'%<class name="COVERAGE_PKG" filename="ut3_tester_helper.coverage_pkg"' ||
'%<lines>' ||
l_block_cov ||
'%<line number="7" hits="1" branch="false"/>%';
--Act
ut3_tester_helper.coverage_helper.run_coverage_job(l_coverage_run_id, 1);
ut3_tester_helper.coverage_helper.run_coverage_job(l_coverage_run_id, 3);
l_name := ut3_tester_helper.coverage_helper.covered_package_name;

--Arrange and Act
l_expected := run_coverage_twice(l_coverage_run_id, l_name);

--Assert
l_coverage_cursor :=
ut3_develop.ut_coverage_cobertura_reporter( ).get_report_cursor(
ut3_develop.ut_coverage_options(
coverage_run_id => l_coverage_run_id,
include_objects => ut3_develop.ut_varchar2_rows('COVERAGE_PKG'),
schema_names => ut3_develop.ut_varchar2_rows('UT3_TESTER_HELPER')
include_objects => ut3_develop.ut_varchar2_rows(l_name),
schema_names => ut3_develop.ut_varchar2_rows('UT3_DEVELOP')
)
);
fetch l_coverage_cursor bulk collect into l_actual;
close l_coverage_cursor;

--Assert
ut.expect(ut3_tester_helper.main_helper.table_to_clob(l_actual)).to_be_like( l_expected );
end;

Expand Down
Original file line number Diff line number Diff line change
@@ -1,10 +1,7 @@
create or replace package test_coverage_standalone authid current_user is

--%suite
--%suitepath(utplsql.test_user.reporters)

--%beforeall(ut3_tester_helper.coverage_helper.create_coverage_pkg)
--%afterall(ut3_tester_helper.coverage_helper.drop_coverage_pkg)
--%suitepath(utplsql.test_user.reporters.test_coverage)

--%test(Coverage can be invoked standalone in multiple sessions and a combined report can be produced at the end)
procedure coverage_without_ut_run;
Expand Down