From 35e5e1376557817cec7cd1236406ed512f736703 Mon Sep 17 00:00:00 2001 From: lwasylow Date: Tue, 3 Apr 2018 23:23:24 +0100 Subject: [PATCH] 12.2 coverage Fixes to order of new attribute. Rename package to more meaningful name Introduce an raise an error for non existing coverage type Update tests --- source/api/ut.pkb | 106 ++++++------- source/api/ut.pks | 48 +++--- source/api/ut_runner.pkb | 4 +- source/api/ut_runner.pks | 5 +- ...elper.pkb => ut_block_coverage_helper.pkb} | 2 +- ...elper.pks => ut_block_coverage_helper.pks} | 2 +- source/core/coverage/ut_coverage_block.pkb | 2 +- source/core/coverage/ut_coverage_helper.pkb | 8 +- source/core/ut_utils.pks | 5 + source/install.sql | 4 +- .../reporters/test_not_existing_block.pkb | 145 ++++++++++++++++++ .../reporters/test_not_existing_block.pks | 18 +++ test/install_below_12_2.sql | 28 ++++ test/install_tests.sql | 4 + 14 files changed, 291 insertions(+), 90 deletions(-) rename source/core/coverage/{ut_block_helper.pkb => ut_block_coverage_helper.pkb} (98%) rename source/core/coverage/{ut_block_helper.pks => ut_block_coverage_helper.pks} (92%) create mode 100644 test/core/reporters/test_not_existing_block.pkb create mode 100644 test/core/reporters/test_not_existing_block.pks create mode 100644 test/install_below_12_2.sql diff --git a/source/api/ut.pkb b/source/api/ut.pkb index 071a422bd..b085c53aa 100644 --- a/source/api/ut.pkb +++ b/source/api/ut.pkb @@ -106,40 +106,40 @@ create or replace package body ut is procedure run_autonomous( a_paths ut_varchar2_list, a_reporter ut_reporter_base, a_color_console integer, - a_coverage_schemes ut_varchar2_list := null,a_coverage_type varchar2:=null, a_source_file_mappings ut_file_mappings, a_test_file_mappings ut_file_mappings, - a_include_objects ut_varchar2_list, a_exclude_objects ut_varchar2_list + a_coverage_schemes ut_varchar2_list := null, a_source_file_mappings ut_file_mappings, a_test_file_mappings ut_file_mappings, + a_include_objects ut_varchar2_list, a_exclude_objects ut_varchar2_list, a_coverage_type varchar2:=null ) is pragma autonomous_transaction; begin ut_runner.run( a_paths, ut_reporters(coalesce(a_reporter,ut_documentation_reporter())), - ut_utils.int_to_boolean(a_color_console), a_coverage_schemes,a_coverage_type, - a_source_file_mappings, a_test_file_mappings, a_include_objects, a_exclude_objects + ut_utils.int_to_boolean(a_color_console), a_coverage_schemes, a_source_file_mappings, + a_test_file_mappings, a_include_objects, a_exclude_objects, false, a_coverage_type ); rollback; end; procedure run_autonomous( a_paths ut_varchar2_list, a_reporter ut_reporter_base, a_color_console integer, - a_coverage_schemes ut_varchar2_list := null,a_coverage_type varchar2:=null, a_source_files ut_varchar2_list, a_test_files ut_varchar2_list, - a_include_objects ut_varchar2_list, a_exclude_objects ut_varchar2_list + a_coverage_schemes ut_varchar2_list := null, a_source_files ut_varchar2_list, a_test_files ut_varchar2_list, + a_include_objects ut_varchar2_list, a_exclude_objects ut_varchar2_list, a_coverage_type varchar2:=null ) is pragma autonomous_transaction; begin ut_runner.run( a_paths, ut_reporters(coalesce(a_reporter,ut_documentation_reporter())), - ut_utils.int_to_boolean(a_color_console), a_coverage_schemes,a_coverage_type, + ut_utils.int_to_boolean(a_color_console), a_coverage_schemes, ut_file_mapper.build_file_mappings(a_source_files), ut_file_mapper.build_file_mappings(a_test_files), - a_include_objects, a_exclude_objects + a_include_objects, a_exclude_objects, false, a_coverage_type ); rollback; end; function run( a_reporter ut_reporter_base := null, a_color_console integer := 0, - a_coverage_schemes ut_varchar2_list := null,a_coverage_type varchar2:=null, a_source_file_mappings ut_file_mappings := null, a_test_file_mappings ut_file_mappings := null, - a_include_objects ut_varchar2_list := null, a_exclude_objects ut_varchar2_list := null + a_coverage_schemes ut_varchar2_list := null, a_source_file_mappings ut_file_mappings := null, a_test_file_mappings ut_file_mappings := null, + a_include_objects ut_varchar2_list := null, a_exclude_objects ut_varchar2_list := null, a_coverage_type varchar2:=null ) return ut_varchar2_rows pipelined is l_reporter ut_reporter_base := coalesce(a_reporter, ut_documentation_reporter()); l_paths ut_varchar2_list := ut_varchar2_list(sys_context('userenv', 'current_schema')); @@ -148,7 +148,7 @@ create or replace package body ut is begin run_autonomous( l_paths, l_reporter, a_color_console, - a_coverage_schemes,a_coverage_type, a_source_file_mappings, a_test_file_mappings, a_include_objects, a_exclude_objects + a_coverage_schemes, a_source_file_mappings, a_test_file_mappings, a_include_objects, a_exclude_objects,a_coverage_type ); if l_reporter is of (ut_output_reporter_base) then l_lines := treat(l_reporter as ut_output_reporter_base).get_lines_cursor(); @@ -165,8 +165,8 @@ create or replace package body ut is function run( a_reporter ut_reporter_base := null, a_color_console integer := 0, - a_coverage_schemes ut_varchar2_list := null,a_coverage_type varchar2:=null, a_source_files ut_varchar2_list, a_test_files ut_varchar2_list, - a_include_objects ut_varchar2_list := null, a_exclude_objects ut_varchar2_list := null + a_coverage_schemes ut_varchar2_list := null, a_source_files ut_varchar2_list, a_test_files ut_varchar2_list, + a_include_objects ut_varchar2_list := null, a_exclude_objects ut_varchar2_list := null, a_coverage_type varchar2:=null ) return ut_varchar2_rows pipelined is l_reporter ut_reporter_base := coalesce(a_reporter, ut_documentation_reporter()); l_paths ut_varchar2_list := ut_varchar2_list(sys_context('userenv', 'current_schema')); @@ -174,8 +174,8 @@ create or replace package body ut is l_line varchar2(4000); begin run_autonomous( - l_paths, l_reporter, a_color_console, a_coverage_schemes,a_coverage_type, a_source_files, a_test_files, - a_include_objects, a_exclude_objects + l_paths, l_reporter, a_color_console, a_coverage_schemes, a_source_files, a_test_files, + a_include_objects, a_exclude_objects, a_coverage_type ); if l_reporter is of (ut_output_reporter_base) then l_lines := treat(l_reporter as ut_output_reporter_base).get_lines_cursor(); @@ -192,16 +192,16 @@ create or replace package body ut is function run( a_paths ut_varchar2_list, a_reporter ut_reporter_base := null, a_color_console integer := 0, - a_coverage_schemes ut_varchar2_list := null,a_coverage_type varchar2:=null, a_source_file_mappings ut_file_mappings := null, a_test_file_mappings ut_file_mappings := null, - a_include_objects ut_varchar2_list := null, a_exclude_objects ut_varchar2_list := null + a_coverage_schemes ut_varchar2_list := null, a_source_file_mappings ut_file_mappings := null, a_test_file_mappings ut_file_mappings := null, + a_include_objects ut_varchar2_list := null, a_exclude_objects ut_varchar2_list := null, a_coverage_type varchar2:=null ) return ut_varchar2_rows pipelined is l_reporter ut_reporter_base := coalesce(a_reporter, ut_documentation_reporter()); l_lines sys_refcursor; l_line varchar2(4000); begin run_autonomous( - a_paths, l_reporter, a_color_console, a_coverage_schemes,a_coverage_type, a_source_file_mappings, a_test_file_mappings, - a_include_objects, a_exclude_objects + a_paths, l_reporter, a_color_console, a_coverage_schemes, a_source_file_mappings, a_test_file_mappings, + a_include_objects, a_exclude_objects, a_coverage_type ); if l_reporter is of (ut_output_reporter_base) then l_lines := treat(l_reporter as ut_output_reporter_base).get_lines_cursor(); @@ -218,16 +218,16 @@ create or replace package body ut is function run( a_paths ut_varchar2_list, a_reporter ut_reporter_base := null, a_color_console integer := 0, - a_coverage_schemes ut_varchar2_list := null,a_coverage_type varchar2:=null, a_source_files ut_varchar2_list, a_test_files ut_varchar2_list, - a_include_objects ut_varchar2_list := null, a_exclude_objects ut_varchar2_list := null + a_coverage_schemes ut_varchar2_list := null, a_source_files ut_varchar2_list, a_test_files ut_varchar2_list, + a_include_objects ut_varchar2_list := null, a_exclude_objects ut_varchar2_list := null, a_coverage_type varchar2:=null ) return ut_varchar2_rows pipelined is l_reporter ut_reporter_base := coalesce(a_reporter, ut_documentation_reporter()); l_lines sys_refcursor; l_line varchar2(4000); begin run_autonomous( - a_paths, l_reporter, a_color_console, a_coverage_schemes,a_coverage_type, a_source_files, a_test_files, - a_include_objects, a_exclude_objects + a_paths, l_reporter, a_color_console, a_coverage_schemes, a_source_files, a_test_files, + a_include_objects, a_exclude_objects, a_coverage_type ); if l_reporter is of (ut_output_reporter_base) then l_lines := treat(l_reporter as ut_output_reporter_base).get_lines_cursor(); @@ -244,8 +244,8 @@ create or replace package body ut is function run( a_path varchar2, a_reporter ut_reporter_base := null, a_color_console integer := 0, - a_coverage_schemes ut_varchar2_list := null,a_coverage_type varchar2:=null, a_source_file_mappings ut_file_mappings := null, a_test_file_mappings ut_file_mappings := null, - a_include_objects ut_varchar2_list := null, a_exclude_objects ut_varchar2_list := null + a_coverage_schemes ut_varchar2_list := null, a_source_file_mappings ut_file_mappings := null, a_test_file_mappings ut_file_mappings := null, + a_include_objects ut_varchar2_list := null, a_exclude_objects ut_varchar2_list := null,a_coverage_type varchar2:=null ) return ut_varchar2_rows pipelined is l_reporter ut_reporter_base := coalesce(a_reporter, ut_documentation_reporter()); l_paths ut_varchar2_list := ut_varchar2_list(coalesce(a_path, sys_context('userenv', 'current_schema'))); @@ -253,8 +253,8 @@ create or replace package body ut is l_line varchar2(4000); begin run_autonomous( - l_paths, l_reporter, a_color_console, a_coverage_schemes,a_coverage_type, a_source_file_mappings, a_test_file_mappings, - a_include_objects, a_exclude_objects + l_paths, l_reporter, a_color_console, a_coverage_schemes, a_source_file_mappings, a_test_file_mappings, + a_include_objects, a_exclude_objects,a_coverage_type ); if l_reporter is of (ut_output_reporter_base) then l_lines := treat(l_reporter as ut_output_reporter_base).get_lines_cursor(); @@ -271,8 +271,8 @@ create or replace package body ut is function run( a_path varchar2, a_reporter ut_reporter_base := null, a_color_console integer := 0, - a_coverage_schemes ut_varchar2_list := null,a_coverage_type varchar2:=null, a_source_files ut_varchar2_list, a_test_files ut_varchar2_list, - a_include_objects ut_varchar2_list := null, a_exclude_objects ut_varchar2_list := null + a_coverage_schemes ut_varchar2_list := null, a_source_files ut_varchar2_list, a_test_files ut_varchar2_list, + a_include_objects ut_varchar2_list := null, a_exclude_objects ut_varchar2_list := null, a_coverage_type varchar2:=null ) return ut_varchar2_rows pipelined is l_reporter ut_reporter_base := coalesce(a_reporter, ut_documentation_reporter()); l_paths ut_varchar2_list := ut_varchar2_list(coalesce(a_path, sys_context('userenv', 'current_schema'))); @@ -280,8 +280,8 @@ create or replace package body ut is l_line varchar2(4000); begin run_autonomous( - l_paths, l_reporter, a_color_console, a_coverage_schemes,a_coverage_type, a_source_files, a_test_files, - a_include_objects, a_exclude_objects + l_paths, l_reporter, a_color_console, a_coverage_schemes, a_source_files, a_test_files, + a_include_objects, a_exclude_objects, a_coverage_type ); if l_reporter is of (ut_output_reporter_base) then l_lines := treat(l_reporter as ut_output_reporter_base).get_lines_cursor(); @@ -298,14 +298,14 @@ create or replace package body ut is procedure run( a_paths ut_varchar2_list, a_reporter ut_reporter_base := null, a_color_console boolean := false, - a_coverage_schemes ut_varchar2_list := null,a_coverage_type varchar2:=null, a_source_file_mappings ut_file_mappings := null, a_test_file_mappings ut_file_mappings := null, - a_include_objects ut_varchar2_list := null, a_exclude_objects ut_varchar2_list := null + a_coverage_schemes ut_varchar2_list := null, a_source_file_mappings ut_file_mappings := null, a_test_file_mappings ut_file_mappings := null, + a_include_objects ut_varchar2_list := null, a_exclude_objects ut_varchar2_list := null, a_coverage_type varchar2:=null ) is l_reporter ut_reporter_base := coalesce(a_reporter, ut_documentation_reporter()); begin run_autonomous( - a_paths, l_reporter, ut_utils.boolean_to_int(a_color_console), a_coverage_schemes,a_coverage_type, a_source_file_mappings, a_test_file_mappings, - a_include_objects, a_exclude_objects + a_paths, l_reporter, ut_utils.boolean_to_int(a_color_console), a_coverage_schemes, a_source_file_mappings, a_test_file_mappings, + a_include_objects, a_exclude_objects, a_coverage_type ); if l_reporter is of (ut_output_reporter_base) then treat(l_reporter as ut_output_reporter_base).lines_to_dbms_output(); @@ -315,14 +315,14 @@ create or replace package body ut is procedure run( a_paths ut_varchar2_list, a_reporter ut_reporter_base := null, a_color_console boolean := false, - a_coverage_schemes ut_varchar2_list := null,a_coverage_type varchar2:=null, a_source_files ut_varchar2_list, a_test_files ut_varchar2_list, - a_include_objects ut_varchar2_list := null, a_exclude_objects ut_varchar2_list := null + a_coverage_schemes ut_varchar2_list := null, a_source_files ut_varchar2_list, a_test_files ut_varchar2_list, + a_include_objects ut_varchar2_list := null, a_exclude_objects ut_varchar2_list := null,a_coverage_type varchar2:=null ) is l_reporter ut_reporter_base := coalesce(a_reporter, ut_documentation_reporter()); begin run_autonomous( - a_paths, l_reporter, ut_utils.boolean_to_int(a_color_console), a_coverage_schemes,a_coverage_type, a_source_files, a_test_files, - a_include_objects, a_exclude_objects + a_paths, l_reporter, ut_utils.boolean_to_int(a_color_console), a_coverage_schemes, a_source_files, a_test_files, + a_include_objects, a_exclude_objects,a_coverage_type ); if l_reporter is of (ut_output_reporter_base) then treat(l_reporter as ut_output_reporter_base).lines_to_dbms_output(); @@ -332,51 +332,51 @@ create or replace package body ut is procedure run( a_reporter ut_reporter_base := null, a_color_console boolean := false, - a_coverage_schemes ut_varchar2_list := null,a_coverage_type varchar2:=null, a_source_file_mappings ut_file_mappings := null, a_test_file_mappings ut_file_mappings := null, - a_include_objects ut_varchar2_list := null, a_exclude_objects ut_varchar2_list := null + a_coverage_schemes ut_varchar2_list := null, a_source_file_mappings ut_file_mappings := null, a_test_file_mappings ut_file_mappings := null, + a_include_objects ut_varchar2_list := null, a_exclude_objects ut_varchar2_list := null, a_coverage_type varchar2:=null ) is begin ut.run( ut_varchar2_list(sys_context('userenv', 'current_schema')), a_reporter, a_color_console, - a_coverage_schemes,a_coverage_type, a_source_file_mappings, a_test_file_mappings, a_include_objects, a_exclude_objects + a_coverage_schemes, a_source_file_mappings, a_test_file_mappings, a_include_objects, a_exclude_objects, a_coverage_type ); end; procedure run( a_reporter ut_reporter_base := null, a_color_console boolean := false, - a_coverage_schemes ut_varchar2_list := null,a_coverage_type varchar2:=null, a_source_files ut_varchar2_list, a_test_files ut_varchar2_list, - a_include_objects ut_varchar2_list := null, a_exclude_objects ut_varchar2_list := null + a_coverage_schemes ut_varchar2_list := null, a_source_files ut_varchar2_list, a_test_files ut_varchar2_list, + a_include_objects ut_varchar2_list := null, a_exclude_objects ut_varchar2_list := null, a_coverage_type varchar2:=null ) is begin ut.run( ut_varchar2_list(sys_context('userenv', 'current_schema')), a_reporter, a_color_console, - a_coverage_schemes,a_coverage_type, a_source_files, a_test_files, a_include_objects, a_exclude_objects + a_coverage_schemes, a_source_files, a_test_files, a_include_objects, a_exclude_objects, a_coverage_type ); end; procedure run( a_path varchar2, a_reporter ut_reporter_base := null, a_color_console boolean := false, - a_coverage_schemes ut_varchar2_list := null,a_coverage_type varchar2:=null, a_source_file_mappings ut_file_mappings := null, a_test_file_mappings ut_file_mappings := null, - a_include_objects ut_varchar2_list := null, a_exclude_objects ut_varchar2_list := null + a_coverage_schemes ut_varchar2_list := null, a_source_file_mappings ut_file_mappings := null, a_test_file_mappings ut_file_mappings := null, + a_include_objects ut_varchar2_list := null, a_exclude_objects ut_varchar2_list := null, a_coverage_type varchar2:=null ) is l_paths ut_varchar2_list := ut_varchar2_list(coalesce(a_path, sys_context('userenv', 'current_schema'))); begin ut.run( - l_paths, a_reporter, a_color_console, a_coverage_schemes,a_coverage_type, a_source_file_mappings, a_test_file_mappings, - a_include_objects, a_exclude_objects + l_paths, a_reporter, a_color_console, a_coverage_schemes, a_source_file_mappings, a_test_file_mappings, + a_include_objects, a_exclude_objects, a_coverage_type ); end; procedure run( a_path varchar2, a_reporter ut_reporter_base := null, a_color_console boolean := false, - a_coverage_schemes ut_varchar2_list := null,a_coverage_type varchar2:=null, a_source_files ut_varchar2_list, a_test_files ut_varchar2_list, - a_include_objects ut_varchar2_list := null, a_exclude_objects ut_varchar2_list := null + a_coverage_schemes ut_varchar2_list := null, a_source_files ut_varchar2_list, a_test_files ut_varchar2_list, + a_include_objects ut_varchar2_list := null, a_exclude_objects ut_varchar2_list := null, a_coverage_type varchar2:=null ) is l_paths ut_varchar2_list := ut_varchar2_list(coalesce(a_path, sys_context('userenv', 'current_schema'))); begin ut.run( - l_paths, a_reporter, a_color_console, a_coverage_schemes,a_coverage_type, a_source_files, a_test_files, - a_include_objects, a_exclude_objects + l_paths, a_reporter, a_color_console, a_coverage_schemes, a_source_files, a_test_files, + a_include_objects, a_exclude_objects ,a_coverage_type ); end; diff --git a/source/api/ut.pks b/source/api/ut.pks index f479f12fd..1d55951d0 100644 --- a/source/api/ut.pks +++ b/source/api/ut.pks @@ -49,74 +49,74 @@ create or replace package ut authid current_user as function run( a_reporter ut_reporter_base := null, a_color_console integer := 0, - a_coverage_schemes ut_varchar2_list := null,a_coverage_type varchar2:=null, a_source_file_mappings ut_file_mappings := null, a_test_file_mappings ut_file_mappings := null, - a_include_objects ut_varchar2_list := null, a_exclude_objects ut_varchar2_list := null + a_coverage_schemes ut_varchar2_list := null, a_source_file_mappings ut_file_mappings := null, a_test_file_mappings ut_file_mappings := null, + a_include_objects ut_varchar2_list := null, a_exclude_objects ut_varchar2_list := null, a_coverage_type varchar2:=null ) return ut_varchar2_rows pipelined; function run( a_reporter ut_reporter_base := null, a_color_console integer := 0, - a_coverage_schemes ut_varchar2_list := null,a_coverage_type varchar2:=null, a_source_files ut_varchar2_list, a_test_files ut_varchar2_list, - a_include_objects ut_varchar2_list := null, a_exclude_objects ut_varchar2_list := null + a_coverage_schemes ut_varchar2_list := null, a_source_files ut_varchar2_list, a_test_files ut_varchar2_list, + a_include_objects ut_varchar2_list := null, a_exclude_objects ut_varchar2_list := null, a_coverage_type varchar2:=null ) return ut_varchar2_rows pipelined; function run( a_paths ut_varchar2_list, a_reporter ut_reporter_base := null, a_color_console integer := 0, - a_coverage_schemes ut_varchar2_list := null,a_coverage_type varchar2:=null, a_source_file_mappings ut_file_mappings := null, a_test_file_mappings ut_file_mappings := null, - a_include_objects ut_varchar2_list := null, a_exclude_objects ut_varchar2_list := null + a_coverage_schemes ut_varchar2_list := null, a_source_file_mappings ut_file_mappings := null, a_test_file_mappings ut_file_mappings := null, + a_include_objects ut_varchar2_list := null, a_exclude_objects ut_varchar2_list := null, a_coverage_type varchar2:=null ) return ut_varchar2_rows pipelined; function run( a_paths ut_varchar2_list, a_reporter ut_reporter_base := null, a_color_console integer := 0, - a_coverage_schemes ut_varchar2_list := null,a_coverage_type varchar2:=null, a_source_files ut_varchar2_list, a_test_files ut_varchar2_list, - a_include_objects ut_varchar2_list := null, a_exclude_objects ut_varchar2_list := null + a_coverage_schemes ut_varchar2_list := null, a_source_files ut_varchar2_list, a_test_files ut_varchar2_list, + a_include_objects ut_varchar2_list := null, a_exclude_objects ut_varchar2_list := null, a_coverage_type varchar2:=null ) return ut_varchar2_rows pipelined; function run( a_path varchar2, a_reporter ut_reporter_base := null, a_color_console integer := 0, - a_coverage_schemes ut_varchar2_list := null,a_coverage_type varchar2:=null, a_source_file_mappings ut_file_mappings := null, a_test_file_mappings ut_file_mappings := null, - a_include_objects ut_varchar2_list := null, a_exclude_objects ut_varchar2_list := null + a_coverage_schemes ut_varchar2_list := null, a_source_file_mappings ut_file_mappings := null, a_test_file_mappings ut_file_mappings := null, + a_include_objects ut_varchar2_list := null, a_exclude_objects ut_varchar2_list := null, a_coverage_type varchar2:=null ) return ut_varchar2_rows pipelined; function run( a_path varchar2, a_reporter ut_reporter_base := null, a_color_console integer := 0, - a_coverage_schemes ut_varchar2_list := null,a_coverage_type varchar2:=null, a_source_files ut_varchar2_list, a_test_files ut_varchar2_list, - a_include_objects ut_varchar2_list := null, a_exclude_objects ut_varchar2_list := null + a_coverage_schemes ut_varchar2_list := null, a_source_files ut_varchar2_list, a_test_files ut_varchar2_list, + a_include_objects ut_varchar2_list := null, a_exclude_objects ut_varchar2_list := null, a_coverage_type varchar2:=null ) return ut_varchar2_rows pipelined; procedure run( a_reporter ut_reporter_base := null, a_color_console boolean := false, - a_coverage_schemes ut_varchar2_list := null,a_coverage_type varchar2:=null, a_source_file_mappings ut_file_mappings := null, a_test_file_mappings ut_file_mappings := null, - a_include_objects ut_varchar2_list := null, a_exclude_objects ut_varchar2_list := null + a_coverage_schemes ut_varchar2_list := null, a_source_file_mappings ut_file_mappings := null, a_test_file_mappings ut_file_mappings := null, + a_include_objects ut_varchar2_list := null, a_exclude_objects ut_varchar2_list := null, a_coverage_type varchar2:=null ); procedure run( a_reporter ut_reporter_base := null, a_color_console boolean := false, - a_coverage_schemes ut_varchar2_list := null,a_coverage_type varchar2:=null, a_source_files ut_varchar2_list, a_test_files ut_varchar2_list, - a_include_objects ut_varchar2_list := null, a_exclude_objects ut_varchar2_list := null + a_coverage_schemes ut_varchar2_list := null, a_source_files ut_varchar2_list, a_test_files ut_varchar2_list, + a_include_objects ut_varchar2_list := null, a_exclude_objects ut_varchar2_list := null, a_coverage_type varchar2:=null ); procedure run( a_paths ut_varchar2_list, a_reporter ut_reporter_base := null, a_color_console boolean := false, - a_coverage_schemes ut_varchar2_list := null,a_coverage_type varchar2:=null, a_source_file_mappings ut_file_mappings := null, a_test_file_mappings ut_file_mappings := null, - a_include_objects ut_varchar2_list := null, a_exclude_objects ut_varchar2_list := null + a_coverage_schemes ut_varchar2_list := null, a_source_file_mappings ut_file_mappings := null, a_test_file_mappings ut_file_mappings := null, + a_include_objects ut_varchar2_list := null, a_exclude_objects ut_varchar2_list := null, a_coverage_type varchar2:=null ); procedure run( a_paths ut_varchar2_list, a_reporter ut_reporter_base := null, a_color_console boolean := false, - a_coverage_schemes ut_varchar2_list := null,a_coverage_type varchar2:=null, a_source_files ut_varchar2_list, a_test_files ut_varchar2_list, - a_include_objects ut_varchar2_list := null, a_exclude_objects ut_varchar2_list := null + a_coverage_schemes ut_varchar2_list := null, a_source_files ut_varchar2_list, a_test_files ut_varchar2_list, + a_include_objects ut_varchar2_list := null, a_exclude_objects ut_varchar2_list := null, a_coverage_type varchar2:=null ); procedure run( a_path varchar2, a_reporter ut_reporter_base := null, a_color_console boolean := false, - a_coverage_schemes ut_varchar2_list := null,a_coverage_type varchar2:=null, a_source_file_mappings ut_file_mappings := null, a_test_file_mappings ut_file_mappings := null, - a_include_objects ut_varchar2_list := null, a_exclude_objects ut_varchar2_list := null + a_coverage_schemes ut_varchar2_list := null, a_source_file_mappings ut_file_mappings := null, a_test_file_mappings ut_file_mappings := null, + a_include_objects ut_varchar2_list := null, a_exclude_objects ut_varchar2_list := null, a_coverage_type varchar2:=null ); procedure run( a_path varchar2, a_reporter ut_reporter_base := null, a_color_console boolean := false, - a_coverage_schemes ut_varchar2_list := null,a_coverage_type varchar2:=null, a_source_files ut_varchar2_list, a_test_files ut_varchar2_list, - a_include_objects ut_varchar2_list := null, a_exclude_objects ut_varchar2_list := null + a_coverage_schemes ut_varchar2_list := null, a_source_files ut_varchar2_list, a_test_files ut_varchar2_list, + a_include_objects ut_varchar2_list := null, a_exclude_objects ut_varchar2_list := null, a_coverage_type varchar2:=null ); /** diff --git a/source/api/ut_runner.pkb b/source/api/ut_runner.pkb index 5476f84fc..7e6bd3250 100644 --- a/source/api/ut_runner.pkb +++ b/source/api/ut_runner.pkb @@ -66,8 +66,8 @@ create or replace package body ut_runner is procedure run( a_paths ut_varchar2_list, a_reporters ut_reporters, a_color_console boolean := false, - a_coverage_schemes ut_varchar2_list := null,a_coverage_type varchar2 := null, a_source_file_mappings ut_file_mappings := null, a_test_file_mappings ut_file_mappings := null, - a_include_objects ut_varchar2_list := null, a_exclude_objects ut_varchar2_list := null, a_fail_on_errors boolean default false + a_coverage_schemes ut_varchar2_list := null, a_source_file_mappings ut_file_mappings := null, a_test_file_mappings ut_file_mappings := null, + a_include_objects ut_varchar2_list := null, a_exclude_objects ut_varchar2_list := null, a_fail_on_errors boolean default false,a_coverage_type varchar2 := null ) is l_items_to_run ut_run; l_listener ut_event_listener; diff --git a/source/api/ut_runner.pks b/source/api/ut_runner.pks index 65341b9e0..882b520f3 100644 --- a/source/api/ut_runner.pks +++ b/source/api/ut_runner.pks @@ -57,8 +57,9 @@ create or replace package ut_runner authid current_user is */ procedure run( a_paths ut_varchar2_list, a_reporters ut_reporters, a_color_console boolean := false, - a_coverage_schemes ut_varchar2_list := null,a_coverage_type varchar2 := null , a_source_file_mappings ut_file_mappings := null, a_test_file_mappings ut_file_mappings := null, - a_include_objects ut_varchar2_list := null, a_exclude_objects ut_varchar2_list := null, a_fail_on_errors boolean default false + a_coverage_schemes ut_varchar2_list := null, a_source_file_mappings ut_file_mappings := null, a_test_file_mappings ut_file_mappings := null, + a_include_objects ut_varchar2_list := null, a_exclude_objects ut_varchar2_list := null, + a_fail_on_errors boolean default false, a_coverage_type varchar2 := null ); /** diff --git a/source/core/coverage/ut_block_helper.pkb b/source/core/coverage/ut_block_coverage_helper.pkb similarity index 98% rename from source/core/coverage/ut_block_helper.pkb rename to source/core/coverage/ut_block_coverage_helper.pkb index f0c2322ab..346b47e27 100644 --- a/source/core/coverage/ut_block_helper.pkb +++ b/source/core/coverage/ut_block_coverage_helper.pkb @@ -1,4 +1,4 @@ -create or replace package body ut_block_helper is +create or replace package body ut_block_coverage_helper is /* utPLSQL - Version 3 Copyright 2016 - 2017 utPLSQL Project diff --git a/source/core/coverage/ut_block_helper.pks b/source/core/coverage/ut_block_coverage_helper.pks similarity index 92% rename from source/core/coverage/ut_block_helper.pks rename to source/core/coverage/ut_block_coverage_helper.pks index eef041275..1b41c0ca3 100644 --- a/source/core/coverage/ut_block_helper.pks +++ b/source/core/coverage/ut_block_coverage_helper.pks @@ -1,4 +1,4 @@ -create or replace package ut_block_helper authid definer is +create or replace package ut_block_coverage_helper authid definer is /* utPLSQL - Version 3 Copyright 2016 - 2017 utPLSQL Project diff --git a/source/core/coverage/ut_coverage_block.pkb b/source/core/coverage/ut_coverage_block.pkb index a5a9801c8..cda04cb58 100644 --- a/source/core/coverage/ut_coverage_block.pkb +++ b/source/core/coverage/ut_coverage_block.pkb @@ -104,7 +104,7 @@ create or replace package body ut_coverage_block is exit when l_source_objects_crsr%notfound; --get coverage data - l_line_calls := ut_block_helper.get_raw_coverage_data_block(l_source_object.owner, l_source_object.name); + l_line_calls := ut_block_coverage_helper.get_raw_coverage_data_block(l_source_object.owner, l_source_object.name); --if there is coverage, we need to filter out the garbage (badly indicated data) if l_line_calls.count > 0 then diff --git a/source/core/coverage/ut_coverage_helper.pkb b/source/core/coverage/ut_coverage_helper.pkb index e8cb198b3..d2d296aea 100644 --- a/source/core/coverage/ut_coverage_helper.pkb +++ b/source/core/coverage/ut_coverage_helper.pkb @@ -70,9 +70,9 @@ create or replace package body ut_coverage_helper is set_coverage_type(a_coverage_type); if get_coverage_type = ut_coverage.c_block_coverage then $if dbms_db_version.version = 12 and dbms_db_version.release >= 2 or dbms_db_version.version > 12 $then - ut_block_helper.coverage_start(a_run_comment => a_run_comment ,a_coverage_id => g_coverage_id ); + ut_block_coverage_helper.coverage_start(a_run_comment => a_run_comment ,a_coverage_id => g_coverage_id ); $else - null; + raise_application_error(ut_utils.gc_invalid_coverage_type,'Invalid coverage type requested. Please validate your Oracle install'); $end else ut_proftab_helper.coverage_start(a_run_comment => a_run_comment, a_coverage_id => g_coverage_id); @@ -123,7 +123,7 @@ create or replace package body ut_coverage_helper is g_is_started := false; if get_coverage_type = ut_coverage.c_block_coverage then $if dbms_db_version.version = 12 and dbms_db_version.release >= 2 or dbms_db_version.version > 12 $then - ut_block_helper.coverage_stop(); + ut_block_coverage_helper.coverage_stop(); $else null; $end @@ -139,7 +139,7 @@ create or replace package body ut_coverage_helper is g_is_started := false; if get_coverage_type = ut_coverage.c_block_coverage then $if dbms_db_version.version = 12 and dbms_db_version.release >= 2 or dbms_db_version.version > 12 $then - ut_block_helper.coverage_stop(); + ut_block_coverage_helper.coverage_stop(); $else null; $end diff --git a/source/core/ut_utils.pks b/source/core/ut_utils.pks index 1bcf0b611..7931164a1 100644 --- a/source/core/ut_utils.pks +++ b/source/core/ut_utils.pks @@ -90,6 +90,11 @@ create or replace package ut_utils authid definer is gc_invalid_version_no constant pls_integer := -20214; pragma exception_init(ex_invalid_version_no, -20214); + -- Invalid coverage type + ex_invalid_coverage_type exception; + gc_invalid_coverage_type constant pls_integer := -20215; + pragma exception_init(ex_invalid_coverage_type, -20215); + gc_max_storage_varchar2_len constant integer := 4000; gc_max_output_string_length constant integer := 4000; gc_max_input_string_length constant integer := gc_max_output_string_length - 2; --we need to remove 2 chars for quotes around string diff --git a/source/install.sql b/source/install.sql index 275b34aff..6eb9f0b22 100644 --- a/source/install.sql +++ b/source/install.sql @@ -127,14 +127,14 @@ prompt Installing DBMSPLSQL Tables objects into &&ut3_owner schema --gathering coverage @@install_component.sql 'core/coverage/ut_coverage_sources_tmp.sql' @@install_component.sql 'core/coverage/ut_coverage_helper.pks' -@@install_above_12_1.sql 'core/coverage/ut_block_helper.pks' +@@install_above_12_1.sql 'core/coverage/ut_block_coverage_helper.pks' @@install_component.sql 'core/coverage/ut_proftab_helper.pks' @@install_component.sql 'core/coverage/ut_coverage.pks' @@install_above_12_1.sql 'core/coverage/ut_coverage_block.pks' @@install_component.sql 'core/coverage/ut_coverage_proftab.pks' @@install_component.sql 'core/coverage/ut_coverage_reporter_base.tps' @@install_component.sql 'core/coverage/ut_coverage_helper.pkb' -@@install_above_12_1.sql 'core/coverage/ut_block_helper.pkb' +@@install_above_12_1.sql 'core/coverage/ut_block_coverage_helper.pkb' @@install_component.sql 'core/coverage/ut_proftab_helper.pkb' @@install_component.sql 'core/coverage/ut_coverage.pkb' @@install_above_12_1.sql 'core/coverage/ut_coverage_block.pkb' diff --git a/test/core/reporters/test_not_existing_block.pkb b/test/core/reporters/test_not_existing_block.pkb new file mode 100644 index 000000000..348bc065c --- /dev/null +++ b/test/core/reporters/test_not_existing_block.pkb @@ -0,0 +1,145 @@ +create or replace package body test_coverage is + + g_run_id integer; + + function get_mock_run_id return integer is + v_result integer; + begin + select nvl(min(runid),0) - 1 into v_result + from ut3.plsql_profiler_runs; + return v_result; + end; + + procedure create_dummy_coverage_package is + pragma autonomous_transaction; + begin + execute immediate q'[create or replace package UT3.DUMMY_COVERAGE is + procedure do_stuff; + end;]'; + execute immediate q'[create or replace package body UT3.DUMMY_COVERAGE is + procedure do_stuff is + begin + if 1 = 2 then + dbms_output.put_line('should not get here'); + else + dbms_output.put_line('should get here'); + end if; + end; + end;]'; + end; + + procedure create_dummy_coverage_test is + pragma autonomous_transaction; + begin + execute immediate q'[create or replace package UT3.TEST_DUMMY_COVERAGE is + --%suite(dummy coverage test) + --%suitepath(coverage_testing) + + --%test + procedure test_do_stuff; + end;]'; + execute immediate q'[create or replace package body UT3.TEST_DUMMY_COVERAGE is + procedure test_do_stuff is + begin + dummy_coverage.do_stuff; + end; + end;]'; + end; + + procedure create_dummy_coverage_test_1 is + pragma autonomous_transaction; + begin + execute immediate q'[create or replace package UT3.DUMMY_COVERAGE_1 is + procedure do_stuff; + end;]'; + execute immediate q'[create or replace package body UT3.DUMMY_COVERAGE_1 is + procedure do_stuff is + begin + if 1 = 2 then + dbms_output.put_line('should not get here'); + else + dbms_output.put_line('should get here'); + end if; + end; + end;]'; + execute immediate q'[create or replace package UT3.TEST_DUMMY_COVERAGE_1 is + --%suite(dummy coverage test 1) + --%suitepath(coverage_testing) + + --%test + procedure test_do_stuff; + end;]'; + execute immediate q'[create or replace package body UT3.TEST_DUMMY_COVERAGE_1 is + procedure test_do_stuff is + begin + dummy_coverage_1.do_stuff; + end; + end;]'; + end; + + procedure drop_dummy_coverage_test_1 is + pragma autonomous_transaction; + begin + execute immediate q'[drop package UT3.DUMMY_COVERAGE_1]'; + execute immediate q'[drop package UT3.TEST_DUMMY_COVERAGE_1]'; + end; + + + procedure mock_coverage_data(a_run_id integer) is + c_unit_id constant integer := 1; + begin + insert into ut3.plsql_profiler_runs ( runid, run_owner, run_date, run_comment) + values(a_run_id, user, sysdate, 'unit testing utPLSQL'); + + insert into ut3.plsql_profiler_units ( runid, unit_number, unit_type, unit_owner, unit_name) + values(a_run_id, c_unit_id, 'PACKAGE BODY', 'UT3', 'DUMMY_COVERAGE'); + + insert into ut3.plsql_profiler_data ( runid, unit_number, line#, total_occur, total_time) + select a_run_id, c_unit_id, 4, 1, 1 from dual union all + select a_run_id, c_unit_id, 5, 0, 0 from dual union all + select a_run_id, c_unit_id, 7, 1, 1 from dual; + end; + + procedure setup_dummy_coverage is + pragma autonomous_transaction; + begin + create_dummy_coverage_package(); + create_dummy_coverage_test(); + g_run_id := get_mock_run_id(); + ut3.ut_coverage_helper.mock_coverage_id(g_run_id); + mock_coverage_data(g_run_id); + commit; + end; + + procedure cleanup_dummy_coverage is + pragma autonomous_transaction; + begin + begin execute immediate q'[drop package ut3.test_dummy_coverage]'; exception when others then null; end; + begin execute immediate q'[drop package ut3.dummy_coverage]'; exception when others then null; end; + delete from ut3.plsql_profiler_data where runid = g_run_id; + delete from ut3.plsql_profiler_units where runid = g_run_id; + delete from ut3.plsql_profiler_runs where runid = g_run_id; + commit; + end; + + procedure invalid_coverage_type is + l_expected clob; + l_actual clob; + l_results ut3.ut_varchar2_list; + begin + --Arrange + l_expected := '%%'; + --Act + select * + bulk collect into l_results + from table( + ut3.ut.run( + a_path => 'ut3.test_dummy_coverage', + a_reporter=> ut3.ut_coverage_sonar_reporter( ), + a_include_objects => ut3.ut_varchar2_list( 'ut3.dummy_coverage' ) + ) + ); + end; + +end; +/ diff --git a/test/core/reporters/test_not_existing_block.pks b/test/core/reporters/test_not_existing_block.pks new file mode 100644 index 000000000..161c03058 --- /dev/null +++ b/test/core/reporters/test_not_existing_block.pks @@ -0,0 +1,18 @@ +create or replace package test_coverage is + + --%suite + --%suitepath(utplsql.core.reporters) + + --%beforeall + procedure setup_dummy_coverage; + + --%afterall + procedure cleanup_dummy_coverage; + + + --%test(Coverage is requested for invalid type of coverage) + --%throws(-20215) + procedure invalid_coverage_type; + +end; +/ diff --git a/test/install_below_12_2.sql b/test/install_below_12_2.sql new file mode 100644 index 000000000..669ae75fc --- /dev/null +++ b/test/install_below_12_2.sql @@ -0,0 +1,28 @@ +set termout off +set echo off +spool dummy.sql +prompt whenever sqlerror exit failure rollback +spool off + + +def FILE_NAME = '&&1' +column SCRIPT_NAME new_value SCRIPT_NAME noprint + +VAR V_FILE_NAME VARCHAR2(1000); +begin + if dbms_db_version.version = 12 and dbms_db_version.release < 2 + or dbms_db_version.version < 12 + then + :V_FILE_NAME := '&&FILE_NAME'; + else + :V_FILE_NAME := 'dummy.sql'; + end if; +end; +/ +set verify off +select :V_FILE_NAME as SCRIPT_NAME from dual; +set termout on + + +@@&&SCRIPT_NAME + diff --git a/test/install_tests.sql b/test/install_tests.sql index 29a5176eb..142f26f27 100644 --- a/test/install_tests.sql +++ b/test/install_tests.sql @@ -27,6 +27,10 @@ whenever oserror exit failure rollback @@core/test_suite_manager.pks @@core/reporters/test_coverage.pks set define on +@@install_below_12_2.sql 'core/reporters/test_not_existing_block.pks' +@@install_below_12_2.sql 'core/reporters/test_not_existing_block.pkb' +set define off +set define on @@install_above_12_1.sql 'core/reporters/test_block_coverage.pks' @@install_above_12_1.sql 'core/reporters/test_coverage/test_html_block_reporter.pks' @@install_above_12_1.sql 'core/reporters/test_coverage/test_coveralls_reporter_block.pks'