From b6ea7473fc118f6008c8476c4329cbe22dfbb4b6 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Jacek=20G=C4=99bal?= Date: Sat, 23 May 2026 22:45:59 +0300 Subject: [PATCH 1/4] Fixed issue with duplicate sources from dba_source Resolves #1323 --- .../annotations/ut_annotation_manager.pkb | 2 ++ source/core/coverage/ut_coverage.pkb | 1 + .../test_coverage/test_proftab_coverage.pkb | 24 +++++++++++++++++++ .../test_coverage/test_proftab_coverage.pks | 3 +++ 4 files changed, 30 insertions(+) diff --git a/source/core/annotations/ut_annotation_manager.pkb b/source/core/annotations/ut_annotation_manager.pkb index 992af2fe0..e7d9f2719 100644 --- a/source/core/annotations/ut_annotation_manager.pkb +++ b/source/core/annotations/ut_annotation_manager.pkb @@ -121,6 +121,7 @@ create or replace package body ut_annotation_manager as and s.type = r.object_type where s.owner = ']'||ut_utils.qualified_sql_name(a_object_owner)||q'[' and s.type = ']'||ut_utils.qualified_sql_name(a_object_type)||q'[' + and s.origin_con_id = sys_context('userenv', 'con_id') ) x where x.is_annotated = 'Y' order by x.name, x.line]' @@ -268,6 +269,7 @@ create or replace package body ut_annotation_manager as where s.type = :a_object_type and s.owner = :a_object_owner and s.name = :a_object_name + and s.origin_con_id = sys_context('userenv', 'con_id') order by s.line]' using a_object_name, a_object_type, a_object_owner, a_object_name; return l_result; diff --git a/source/core/coverage/ut_coverage.pkb b/source/core/coverage/ut_coverage.pkb index e8e6ed529..df65879af 100644 --- a/source/core/coverage/ut_coverage.pkb +++ b/source/core/coverage/ut_coverage.pkb @@ -55,6 +55,7 @@ create or replace package body ut_coverage is s.text from {sources_view} s {join_file_mappings} where s.type in ('PACKAGE BODY', 'TYPE BODY', 'PROCEDURE', 'FUNCTION', 'TRIGGER') + and s.origin_con_id = sys_context('userenv', 'con_id') {filters} {regex_exc_filters} and not exists ( diff --git a/test/ut3_user/reporters/test_coverage/test_proftab_coverage.pkb b/test/ut3_user/reporters/test_coverage/test_proftab_coverage.pkb index f3aad5702..3c79f4429 100644 --- a/test/ut3_user/reporters/test_coverage/test_proftab_coverage.pkb +++ b/test/ut3_user/reporters/test_coverage/test_proftab_coverage.pkb @@ -207,5 +207,29 @@ create or replace package body test_proftab_coverage is ut.expect(l_actual).to_be_like(coverage_helper.substitute_covered_package(l_expected)); end; + procedure no_issue_with_duplicate_source is + l_expected clob; + l_actual clob; + begin + --Arrange + l_expected := '%%'; + --Act + l_actual := + ut3_tester_helper.coverage_helper.run_tests_as_job( + coverage_helper.substitute_covered_package( + q'[ + ut3_develop.ut.run( + 'ut3_develop.test_dummy_coverage.zero_coverage', + ut3_develop.ut_coverage_sonar_reporter(), + a_include_objects => ut3_develop.ut_varchar2_list('MDSYS.SDO_UTIL') + ) + ]' + ) + ); + + --Running above line is successful if there is no exception thrown due to duplicate lines in coverage + ut.expect(l_actual).to_be_like(l_expected); + end; + end; / diff --git a/test/ut3_user/reporters/test_coverage/test_proftab_coverage.pks b/test/ut3_user/reporters/test_coverage/test_proftab_coverage.pks index 740862f86..fb1d0cfe3 100644 --- a/test/ut3_user/reporters/test_coverage/test_proftab_coverage.pks +++ b/test/ut3_user/reporters/test_coverage/test_proftab_coverage.pks @@ -28,5 +28,8 @@ create or replace package test_proftab_coverage is --%test(reports zero coverage on each line of non-executed database object - Issue #917) procedure report_zero_coverage; + --%test(Allows reporting coverage on objects across SYS or MDSYS without errors - Issue #1323 ) + procedure no_issue_with_duplicate_source; + end; / From 59686d9477a59c1e9361040d5181cecd8025e981 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Jacek=20G=C4=99bal?= Date: Sat, 23 May 2026 23:57:39 +0300 Subject: [PATCH 2/4] Test improvements --- .../reporters/test_coverage/test_proftab_coverage.pkb | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/test/ut3_user/reporters/test_coverage/test_proftab_coverage.pkb b/test/ut3_user/reporters/test_coverage/test_proftab_coverage.pkb index 3c79f4429..bf6a7f41d 100644 --- a/test/ut3_user/reporters/test_coverage/test_proftab_coverage.pkb +++ b/test/ut3_user/reporters/test_coverage/test_proftab_coverage.pkb @@ -212,7 +212,7 @@ create or replace package body test_proftab_coverage is l_actual clob; begin --Arrange - l_expected := '%%'; + l_expected := '%%'; --Act l_actual := ut3_tester_helper.coverage_helper.run_tests_as_job( @@ -221,7 +221,7 @@ create or replace package body test_proftab_coverage is ut3_develop.ut.run( 'ut3_develop.test_dummy_coverage.zero_coverage', ut3_develop.ut_coverage_sonar_reporter(), - a_include_objects => ut3_develop.ut_varchar2_list('MDSYS.SDO_UTIL') + a_include_schema_expr =>'MDSYS' ) ]' ) From 534e4499ad1958f0f35e20c1c12d50f5e6d8ae02 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Jacek=20G=C4=99bal?= Date: Sun, 24 May 2026 00:41:55 +0300 Subject: [PATCH 3/4] Making the test more generic. --- .../reporters/test_coverage/test_proftab_coverage.pkb | 7 ++----- 1 file changed, 2 insertions(+), 5 deletions(-) diff --git a/test/ut3_user/reporters/test_coverage/test_proftab_coverage.pkb b/test/ut3_user/reporters/test_coverage/test_proftab_coverage.pkb index bf6a7f41d..4b06f725f 100644 --- a/test/ut3_user/reporters/test_coverage/test_proftab_coverage.pkb +++ b/test/ut3_user/reporters/test_coverage/test_proftab_coverage.pkb @@ -208,11 +208,8 @@ create or replace package body test_proftab_coverage is end; procedure no_issue_with_duplicate_source is - l_expected clob; l_actual clob; begin - --Arrange - l_expected := '%%'; --Act l_actual := ut3_tester_helper.coverage_helper.run_tests_as_job( @@ -221,14 +218,14 @@ create or replace package body test_proftab_coverage is ut3_develop.ut.run( 'ut3_develop.test_dummy_coverage.zero_coverage', ut3_develop.ut_coverage_sonar_reporter(), - a_include_schema_expr =>'MDSYS' + a_include_schema_expr =>'SYS' ) ]' ) ); --Running above line is successful if there is no exception thrown due to duplicate lines in coverage - ut.expect(l_actual).to_be_like(l_expected); + ut.expect(l_actual).not_to_be_null(); end; end; From 2cde2b61c4bc42a898fa0a8fc3db2d04803eb758 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Jacek=20G=C4=99bal?= Date: Sun, 24 May 2026 00:42:33 +0300 Subject: [PATCH 4/4] Fixing typo --- source/core/coverage/ut_coverage.pkb | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/source/core/coverage/ut_coverage.pkb b/source/core/coverage/ut_coverage.pkb index df65879af..f3181fdc7 100644 --- a/source/core/coverage/ut_coverage.pkb +++ b/source/core/coverage/ut_coverage.pkb @@ -59,7 +59,7 @@ create or replace package body ut_coverage is {filters} {regex_exc_filters} and not exists ( - select /*+ cardinality(el {excuded_objects_cardinality})*/ 1 + select /*+ cardinality(el {excluded_objects_cardinality})*/ 1 from table(:l_excluded_objects) el where s.owner = el.owner and s.name = el.name ) @@ -153,7 +153,7 @@ create or replace package body ut_coverage is l_result := replace(l_result, '{filters}', l_filters); l_result := replace(l_result, '{mappings_cardinality}', l_mappings_cardinality); l_result := replace(l_result, '{skipped_objects_cardinality}', ut_utils.scale_cardinality(cardinality(a_skip_objects))); - l_result := replace(l_result, '{excuded_objects_cardinality}', ut_utils.scale_cardinality(cardinality(coalesce(a_coverage_options.exclude_objects, ut_object_names())))); + l_result := replace(l_result, '{excluded_objects_cardinality}', ut_utils.scale_cardinality(cardinality(coalesce(a_coverage_options.exclude_objects, ut_object_names())))); l_result := replace(l_result, '{regex_exc_filters}', l_regex_exc_filters); return l_result;