8000 The line-rate is not recorded for packages and classes in cobertura coverage reporter by lwasylow · Pull Request #1269 · utPLSQL/utPLSQL · GitHub
[go: up one dir, main page]

Skip to content

The line-rate is not recorded for packages and classes in cobertura coverage reporter #1269

New issue 8000

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Merged
merged 2 commits into from
Sep 23, 2023
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
37 changes: 29 additions & 8 deletions source/reporters/ut_coverage_cobertura_reporter.tpb
Original file line number Diff line number Diff line change
Expand Up @@ -29,23 +29,34 @@ create or replace type body ut_coverage_cobertura_reporter is
l_report_lines ut_varchar2_list;
l_coverage_data ut_coverage.t_coverage;

function get_lines_xml(a_unit_coverage ut_coverage.t_unit_coverage) return clob is
function get_line_rate(a_lines_covered in integer, a_lines_hit in integer) return varchar2 is
begin
return to_char(round((case a_lines_covered when 0 then 0 else a_lines_covered/a_lines_hit end), 17), rpad('FM0.0',20,'9') , 'NLS_NUMERIC_CHARACTERS=''. ''');
end;

procedure get_lines_xml(a_unit_coverage ut_coverage.t_unit_coverage,
a_lines_result in out nocopy clob, a_lines_hits out number, a_lines_total out number) is
l_file_part varchar2(32767);
l_result clob;
l_line_no binary_integer;
l_pct integer;
l_lines_hits integer := 0;
l_lines_total integer := 0;
begin
dbms_lob.createtemporary(l_result, true);
l_line_no := a_unit_coverage.lines.first;
if l_line_no is null then
for i in 1 .. a_unit_coverage.total_lines loop
ut_utils.append_to_clob(l_result, '<line number="'||i||'" hits="0" branch="false"/>'||chr(10));
end loop;
l_lines_hits:=0;
l_lines_total:= a_unit_coverage.total_lines;
else
while l_line_no is not null loop
if a_unit_coverage.lines(l_line_no).executions = 0 then
l_file_part := '<line number="'||l_line_no||'" hits="0" branch="false"/>'||chr(10);
else
l_lines_hits:= l_lines_hits+1;
l_file_part := '<line number="'||l_line_no||'" hits="'||a_unit_coverage.lines(l_line_no).executions||'"';
if a_unit_coverage.lines(l_line_no).covered_blocks < a_unit_coverage.lines(l_line_no).no_blocks then
l_file_part := l_file_part || ' branch="true"';
Expand All @@ -59,16 +70,21 @@ create or replace type body ut_coverage_cobertura_reporter is
end if;
ut_utils.append_to_clob(l_result, l_file_part);
l_line_no := a_unit_coverage.lines.next(l_line_no);
l_lines_total := l_lines_total + 1;
end loop;
end if;
return l_result;
a_lines_result := l_result;
a_lines_hits :=l_lines_hits;
a_lines_total := l_lines_total;
end;

function get_coverage_xml(
a_coverage_data ut_coverage.t_coverage,
a_run ut_run
) return ut_varchar2_rows is

l_file_part varchar2(32767);
l_lines_xml clob;
l_result ut_varchar2_rows := ut_varchar2_rows();
l_unit ut_coverage.t_object_name;
l_obj_name ut_coverage.t_object_name;
Expand All @@ -83,6 +99,8 @@ create or replace type body ut_coverage_cobertura_reporter is
c_lines_footer constant varchar2(30) := '</lines>';
l_epoch varchar2(50) := (sysdate - to_date('01-01-1970 00:00:00', 'dd-mm-yyyy hh24:mi:ss')) * 24 * 60 * 60;
l_lines_valid integer := a_coverage_data.covered_lines + a_coverage_data.uncovered_lines;
l_line_hits integer;
l_line_total integer;
begin

ut_utils.append_to_list( l_result, ut_utils.get_xml_header(a_run.client_character_set) );
Expand All @@ -92,7 +110,7 @@ create or replace type body ut_coverage_cobertura_reporter is
ut_utils.append_to_list(
l_result,
'<coverage line-rate="'
||to_char(round((case l_lines_valid when 0 then 0 else a_coverage_data.covered_lines/(l_lines_valid) end), 17), rpad('FM0.0',20,'9') , 'NLS_NUMERIC_CHARACTERS=''. ''')
||get_line_ 8000 rate(a_coverage_data.covered_lines,l_lines_valid)
||'" branch-rate="0.0" lines-covered="'
||a_coverage_data.covered_lines||'" lines-valid="'
||to_char(l_lines_valid)
Expand All @@ -116,9 +134,12 @@ create or replace type body ut_coverage_cobertura_reporter is

while l_unit is not null loop
l_obj_name := a_coverage_data.objects(l_unit).name;
dbms_lob.createtemporary(l_lines_xml, true);
get_lines_xml(a_coverage_data.objects(l_unit),l_lines_xml,l_line_hits,l_line_total);

ut_utils.append_to_list(
l_result,
'<package name="'||dbms_xmlgen.convert(l_obj_name)||'" line-rate="0.0" branch-rate="0.0" complexity="0.0">'
'<package name="'||dbms_xmlgen.convert(l_obj_name)||'" line-rate="'||get_line_rate(l_line_hits,l_line_total)||'" branch-rate="0.0" complexity="0.0">'
);

ut_utils.append_to_list(
Expand All @@ -129,13 +150,13 @@ create or replace type body ut_coverage_cobertura_reporter is
ut_utils.append_to_list(
l_result,
'<class name="'||dbms_xmlgen.convert(l_obj_name)||'" filename="'
||dbms_xmlgen.convert(l_unit)||'" line-rate="0.0" branch-rate="0.0" complexity="0.0">'
||dbms_xmlgen.convert(l_unit)||'" line-rate="'||get_line_rate(l_line_hits,l_line_total)||'" branch-rate="0.0" complexity="0.0">'
);

ut_utils.append_to_list(l_result, '<lines>');

ut_utils.append_to_list( l_result, get_lines_xml(a_coverage_data.objects(l_unit)) );

ut_utils.append_to_list( l_result,l_lines_xml);
dbms_lob.freetemporary(l_lines_xml);
ut_utils.append_to_list(l_result, c_lines_footer);
ut_utils.append_to_list(l_result, c_class_footer);
ut_utils.append_to_list(l_result, c_classes_footer);
Expand Down
4 changes: 2 additions & 2 deletions test/ut3_user/reporters/test_coverage/test_cov_cobertura_reporter.pkb
Original file line number Diff line number Diff line change
Expand Up @@ -25,9 +25,9 @@ create or replace package body test_cov_cobertura_reporter is
<source>]'||l_file_path||q'[</source>
</sources>
<packages>
<package name="]'||upper(l_name)||q'[" line-rate="0.0" branch-rate="0.0" complexity="0.0">
<package name="]'||upper(l_name)||q'[" line-rate="0.5" branch-rate="0.0" complexity="0.0">
<classes>
<class name="]'||upper(l_name)||q'[" filename="]'||l_file_path||q'[" line-rate="0.0" branch-rate="0.0" complexity="0.0">
<class name="]'||upper(l_name)||q'[" filename="]'||l_file_path||q'[" line-rate="0.5" branch-rate="0.0" complexity="0.0">
<lines>
]'||l_block_cov||q'[
<line number="6" hits="0" branch="false"/>
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -20,9 +20,9 @@ create or replace package body test_coverage_standalone is
<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">
<package name="]'||upper(a_object_name)||q'[" line-rate="1.0" branch-rate="0.0" complexity="0.0">
<classes>
<class name="]'||upper(a_object_name)||q'[" filename="]'||l_file_path||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="1.0" branch-rate="0.0" complexity="0.0">
<lines>
]'||l_block_cov||q'[
<line number="6" hits="1" branch="false"/>
Expand Down
0