diff --git a/old_tests/RunAll.sql b/old_tests/RunAll.sql index 434d8574f..206c01a1b 100644 --- a/old_tests/RunAll.sql +++ b/old_tests/RunAll.sql @@ -78,16 +78,12 @@ exec ut_coverage.set_develop_mode(true); @@lib/RunTest.sql ut_output_buffer/send_line.DoesNotSendLineIfNullTextGiven.sql @@lib/RunTest.sql ut_output_buffer/send_line.SendsALineIntoBufferTable.sql -@@lib/RunTest.sql ut_reporters/ut_coverage_sonar_reporter.AcceptsFileMapping.sql -@@lib/RunTest.sql ut_reporters/ut_coverage_sonar_reporter.BuildsSonarCoverageReport.sql @@lib/RunTest.sql ut_reporters/ut_documentation_reporter.providesCorrectLineFromStacktrace.sql -@@lib/RunTest.sql ut_reporters/ut_sonar_test_reporter.AcceptsFileMapping.sql -@@lib/RunTest.sql ut_reporters/ut_sonar_test_reporter.ProducesExpectedOutputs.sql -@@lib/RunTest.sql ut_reporters/ut_teamcity_reporter.ProducesExpectedOutputs.sql -@@lib/RunTest.sql ut_reporters/ut_html_reporter.UserOverrideSchemaCoverage.sql -@@lib/RunTest.sql ut_reporters/ut_html_reporter.DefaultSchemaCoverage.sql @@lib/RunTest.sql ut_reporters/ut_documentation_reporter.reportMultipleWarnings.sql @@lib/RunTest.sql ut_reporters/ut_documentation_reporter.reportTestTiming.sql +@@lib/RunTest.sql ut_reporters/ut_html_reporter.DefaultSchemaCoverage.sql +@@lib/RunTest.sql ut_reporters/ut_html_reporter.UserOverrideSchemaCoverage.sql +@@lib/RunTest.sql ut_reporters/ut_teamcity_reporter.ProducesExpectedOutputs.sql @@lib/RunTest.sql ut/ut.run.AcceptsCoverageFileList.sql @@lib/RunTest.sql ut/ut.run.AcceptsCoverageFileListWithSutePaths.sql diff --git a/old_tests/ut_reporters/ut_coverage_sonar_reporter.AcceptsFileMapping.sql b/old_tests/ut_reporters/ut_coverage_sonar_reporter.AcceptsFileMapping.sql deleted file mode 100644 index a27cb4ef4..000000000 --- a/old_tests/ut_reporters/ut_coverage_sonar_reporter.AcceptsFileMapping.sql +++ /dev/null @@ -1,27 +0,0 @@ -declare - l_results ut_varchar2_list; - l_clob clob; - l_expected varchar2(32767); -begin - l_expected := '%'; - select * - bulk collect into l_results - from table( - ut.run( - 'test_reporters', - ut_coverage_sonar_reporter(), - a_source_file_mappings => ut_file_mapper.build_file_mappings( user, ut_varchar2_list( - 'tests/helpers/test_reporters.pkb' ) - ) - ) - ); - l_clob := ut_utils.table_to_clob(l_results); - - if l_clob like l_expected then - :test_result := ut_utils.gc_success; - else - dbms_output.put_line(l_clob); - end if; - -end; -/ diff --git a/old_tests/ut_reporters/ut_coverage_sonar_reporter.BuildsSonarCoverageReport.sql b/old_tests/ut_reporters/ut_coverage_sonar_reporter.BuildsSonarCoverageReport.sql deleted file mode 100644 index e76385cfa..000000000 --- a/old_tests/ut_reporters/ut_coverage_sonar_reporter.BuildsSonarCoverageReport.sql +++ /dev/null @@ -1,20 +0,0 @@ -declare - l_results ut_varchar2_list; - l_clob clob; - l_expected varchar2(32767); -begin - l_expected := '%'; - select * - bulk collect into l_results - from table(ut.run('test_reporters',ut_coverage_sonar_reporter(), a_include_objects => ut_varchar2_list('test_reporters'))); - l_clob := ut_utils.table_to_clob(l_results); - - if l_clob like l_expected then - :test_result := ut_utils.gc_success; - else - dbms_output.put_line(l_clob); - end if; - -end; -/ - diff --git a/old_tests/ut_reporters/ut_sonar_test_reporter.AcceptsFileMapping.sql b/old_tests/ut_reporters/ut_sonar_test_reporter.AcceptsFileMapping.sql deleted file mode 100644 index 4e4bea8dc..000000000 --- a/old_tests/ut_reporters/ut_sonar_test_reporter.AcceptsFileMapping.sql +++ /dev/null @@ -1,38 +0,0 @@ -declare - l_output_data ut_varchar2_list; - l_output varchar2(32767); - l_expected varchar2(32767); -begin - l_expected := q'[ - -% - - -% -%%% -%%% -%% - -]'; - - --act - select * - bulk collect into l_output_data - from table( - ut.run( - 'test_reporters', - ut_sonar_test_reporter(), - a_test_file_mappings => ut_file_mapper.build_file_mappings( user, ut_varchar2_list('tests/helpers/test_reporters.pkb', 'tests/helpers/test_reporters_1.pkb')) - ) - ); - - l_output := ut_utils.table_to_clob(l_output_data); - - --assert - if l_output like l_expected then - :test_result := ut_utils.gc_success; - else - dbms_output.put_line('Actual:"'||l_output||'"'); - end if; -end; -/ diff --git a/old_tests/ut_reporters/ut_sonar_test_reporter.ProducesExpectedOutputs.sql b/old_tests/ut_reporters/ut_sonar_test_reporter.ProducesExpectedOutputs.sql deleted file mode 100644 index 51fd3c7c7..000000000 --- a/old_tests/ut_reporters/ut_sonar_test_reporter.ProducesExpectedOutputs.sql +++ /dev/null @@ -1,32 +0,0 @@ -declare - l_output_data ut_varchar2_list; - l_output varchar2(32767); - l_expected varchar2(32767); -begin - l_expected := q'[ - -% - - -% -%%% -%%% -%% - -]'; - - --act - select * - bulk collect into l_output_data - from table(ut.run('test_reporters',ut_sonar_test_reporter(),a_source_files=> null, a_test_files=>ut_varchar2_list('tests/helpers/test_reporters.pkb', 'tests/helpers/test_reporters_1.pkb'))); - - l_output := ut_utils.table_to_clob(l_output_data); - - --assert - if l_output like l_expected then - :test_result := ut_utils.gc_success; - else - dbms_output.put_line('Actual:"'||l_output||'"'); - end if; -end; -/ diff --git a/source/api/ut.pkb b/source/api/ut.pkb index 4225629b8..94ff1e2b5 100644 --- a/source/api/ut.pkb +++ b/source/api/ut.pkb @@ -105,50 +105,89 @@ create or replace package body ut is 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_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_paths ut_varchar2_list, + a_reporter ut_reporter_base, + a_color_console integer, + 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_client_character_set varchar2 := null ) is pragma autonomous_transaction; + c_fail_on_errors constant boolean := false; 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_source_file_mappings, - a_test_file_mappings, a_include_objects, a_exclude_objects, false + a_paths, + ut_reporters(coalesce(a_reporter,ut_documentation_reporter())), + 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, + c_fail_on_errors, + a_client_character_set ); 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_source_files ut_varchar2_list, a_test_files ut_varchar2_list, - a_include_objects ut_varchar2_list, a_exclude_objects ut_varchar2_list + a_paths ut_varchar2_list, + a_reporter ut_reporter_base, + a_color_console integer, + 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_client_character_set varchar2 := null ) is pragma autonomous_transaction; + c_fail_on_errors constant boolean := false; 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_paths, + ut_reporters(coalesce(a_reporter,ut_documentation_reporter())), + 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, false + a_include_objects, + a_exclude_objects, + c_fail_on_errors, + a_client_character_set ); rollback; end; function run( - a_reporter ut_reporter_base := null, a_color_console integer := 0, - 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_reporter ut_reporter_base := null, + a_color_console integer := 0, + 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_client_character_set varchar2 := null ) return ut_varchar2_rows pipelined is - l_reporter ut_reporter_base := coalesce(a_reporter, ut_documentation_reporter()); + l_reporter ut_reporter_base := coalesce(a_reporter, + ut_documentation_reporter()); l_paths ut_varchar2_list := ut_varchar2_list(sys_context('userenv', 'current_schema')); l_lines sys_refcursor; l_line varchar2(4000); begin run_autonomous( - l_paths, l_reporter, a_color_console, - a_coverage_schemes, 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_client_character_set ); if l_reporter is of (ut_output_reporter_base) then l_lines := treat(l_reporter as ut_output_reporter_base).get_lines_cursor(); @@ -164,9 +203,14 @@ create or replace package body ut is end; function run( - a_reporter ut_reporter_base := null, a_color_console integer := 0, - 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_reporter ut_reporter_base := null, + a_color_console integer := 0, + 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_client_character_set 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 +218,15 @@ 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_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_client_character_set ); if l_reporter is of (ut_output_reporter_base) then l_lines := treat(l_reporter as ut_output_reporter_base).get_lines_cursor(); @@ -191,17 +242,30 @@ create or replace package body ut is end; 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_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_paths ut_varchar2_list, + a_reporter ut_reporter_base := null, + a_color_console integer := 0, + 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_client_character_set 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_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_client_character_set ); if l_reporter is of (ut_output_reporter_base) then l_lines := treat(l_reporter as ut_output_reporter_base).get_lines_cursor(); @@ -217,17 +281,30 @@ create or replace package body ut is end; 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_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_paths ut_varchar2_list, + a_reporter ut_reporter_base := null, + a_color_console integer := 0, + 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_client_character_set 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_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_client_character_set ); if l_reporter is of (ut_output_reporter_base) then l_lines := treat(l_reporter as ut_output_reporter_base).get_lines_cursor(); @@ -243,18 +320,32 @@ create or replace package body ut is end; function run( - a_path varchar2, a_reporter ut_reporter_base := null, a_color_console integer := 0, - 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_path varchar2, + a_reporter ut_reporter_base := null, + a_color_console integer := 0, + 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_client_character_set varchar2 := null ) return ut_varchar2_rows pipelined is - l_reporter ut_reporter_base := coalesce(a_reporter, ut_documentation_reporter()); + 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'))); l_lines sys_refcursor; l_line varchar2(4000); begin run_autonomous( - l_paths, l_reporter, a_color_console, a_coverage_schemes, 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_client_character_set ); if l_reporter is of (ut_output_reporter_base) then l_lines := treat(l_reporter as ut_output_reporter_base).get_lines_cursor(); @@ -270,9 +361,15 @@ create or replace package body ut is end; function run( - a_path varchar2, a_reporter ut_reporter_base := null, a_color_console integer := 0, - 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_path varchar2, + a_reporter ut_reporter_base := null, + a_color_console integer := 0, + 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_client_character_set 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 +377,15 @@ 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_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_client_character_set ); if l_reporter is of (ut_output_reporter_base) then l_lines := treat(l_reporter as ut_output_reporter_base).get_lines_cursor(); @@ -297,15 +401,28 @@ create or replace package body ut is end; 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_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_paths ut_varchar2_list, + a_reporter ut_reporter_base := null, + a_color_console boolean := 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_client_character_set 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_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_client_character_set ); if l_reporter is of (ut_output_reporter_base) then treat(l_reporter as ut_output_reporter_base).lines_to_dbms_output(); @@ -314,15 +431,28 @@ create or replace package body ut is end; 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_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_paths ut_varchar2_list, + a_reporter ut_reporter_base := null, + a_color_console boolean := false, + 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_client_character_set 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_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_client_character_set ); if l_reporter is of (ut_output_reporter_base) then treat(l_reporter as ut_output_reporter_base).lines_to_dbms_output(); @@ -331,52 +461,102 @@ create or replace package body ut is end; procedure run( - a_reporter ut_reporter_base := null, a_color_console boolean := 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_reporter ut_reporter_base := null, + a_color_console boolean := 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_client_character_set varchar2 := null ) is begin ut.run( - ut_varchar2_list(sys_context('userenv', 'current_schema')), a_reporter, a_color_console, - a_coverage_schemes, a_source_file_mappings, a_test_file_mappings, a_include_objects, a_exclude_objects + ut_varchar2_list(sys_context('userenv', 'current_schema')), + a_reporter, + a_color_console, + a_coverage_schemes, + a_source_file_mappings, + a_test_file_mappings, + a_include_objects, + a_exclude_objects, + a_client_character_set ); end; procedure run( - a_reporter ut_reporter_base := null, a_color_console boolean := false, - 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_reporter ut_reporter_base := null, + a_color_console boolean := false, + 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_client_character_set varchar2 := null ) is begin ut.run( - ut_varchar2_list(sys_context('userenv', 'current_schema')), a_reporter, a_color_console, - a_coverage_schemes, a_source_files, a_test_files, a_include_objects, a_exclude_objects + ut_varchar2_list(sys_context('userenv', 'current_schema')), + a_reporter, + a_color_console, + a_coverage_schemes, + a_source_files, + a_test_files, + a_include_objects, + a_exclude_objects, + a_client_character_set ); 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_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_path varchar2, + a_reporter ut_reporter_base := null, + a_color_console boolean := 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_client_character_set 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_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_client_character_set ); 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_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_path varchar2, + a_reporter ut_reporter_base := null, + a_color_console boolean := false, + 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_client_character_set 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_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_client_character_set ); end; diff --git a/source/api/ut.pks b/source/api/ut.pks index ad6ea9757..a90957fd2 100644 --- a/source/api/ut.pks +++ b/source/api/ut.pks @@ -48,75 +48,143 @@ create or replace package ut authid current_user as procedure fail(a_message in varchar2); function run( - a_reporter ut_reporter_base := null, a_color_console integer := 0, - 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_reporter ut_reporter_base := null, + a_color_console integer := 0, + 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_client_character_set 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_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_reporter ut_reporter_base := null, + a_color_console integer := 0, + 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_client_character_set 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_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_paths ut_varchar2_list, + a_reporter ut_reporter_base := null, + a_color_console integer := 0, + 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_client_character_set 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_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_paths ut_varchar2_list, + a_reporter ut_reporter_base := null, + a_color_console integer := 0, + 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_client_character_set 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_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_path varchar2, + a_reporter ut_reporter_base := null, + a_color_console integer := 0, + 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_client_character_set 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_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_path varchar2, + a_reporter ut_reporter_base := null, + a_color_console integer := 0, + 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_client_character_set 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_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_reporter ut_reporter_base := null, + a_color_console boolean := 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_client_character_set varchar2 := null ); procedure run( - a_reporter ut_reporter_base := null, a_color_console boolean := false, - 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_reporter ut_reporter_base := null, + a_color_console boolean := false, + 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_client_character_set 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_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_paths ut_varchar2_list, + a_reporter ut_reporter_base := null, + a_color_console boolean := 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_client_character_set 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_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_paths ut_varchar2_list, + a_reporter ut_reporter_base := null, + a_color_console boolean := false, + 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_client_character_set 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_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_path varchar2, + a_reporter ut_reporter_base := null, + a_color_console boolean := 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_client_character_set 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_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_path varchar2, + a_reporter ut_reporter_base := null, + a_color_console boolean := false, + 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_client_character_set varchar2 := null ); /** diff --git a/source/api/ut_runner.pkb b/source/api/ut_runner.pkb index 78db64c77..eb3bc8e68 100644 --- a/source/api/ut_runner.pkb +++ b/source/api/ut_runner.pkb @@ -74,9 +74,16 @@ create or replace package body ut_runner is end; procedure run( - a_paths ut_varchar2_list, a_reporters ut_reporters, a_color_console boolean := 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_paths ut_varchar2_list, + a_reporters ut_reporters, + a_color_console boolean := 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 := false, + a_client_character_set varchar2 := null ) is l_run ut_run; l_coverage_schema_names ut_varchar2_rows; @@ -118,7 +125,8 @@ create or replace package body ut_runner is l_exclude_object_names, l_include_object_names, set(a_source_file_mappings), - set(a_test_file_mappings) + set(a_test_file_mappings), + a_client_character_set ); l_run.do_execute(); diff --git a/source/api/ut_runner.pks b/source/api/ut_runner.pks index ae83b2e60..b796aab9b 100644 --- a/source/api/ut_runner.pks +++ b/source/api/ut_runner.pks @@ -56,10 +56,16 @@ create or replace package ut_runner authid current_user is * schema.suite1.test2 - executes test2 procedure of suite1 suite with execution of all parent setup/teardown procedures */ procedure run( - a_paths ut_varchar2_list, a_reporters ut_reporters, a_color_console boolean := 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_paths ut_varchar2_list, + a_reporters ut_reporters, + a_color_console boolean := 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 := false, + a_client_character_set varchar2 := null ); /** diff --git a/source/core/types/ut_run.tpb b/source/core/types/ut_run.tpb index ccbd847fc..a282bcfdb 100644 --- a/source/core/types/ut_run.tpb +++ b/source/core/types/ut_run.tpb @@ -24,7 +24,8 @@ create or replace type body ut_run as a_exclude_objects ut_object_names := null, a_include_objects ut_object_names := null, a_project_file_mappings ut_file_mappings := null, - a_test_file_mappings ut_file_mappings := null + a_test_file_mappings ut_file_mappings := null, + a_client_character_set varchar2 := null ) return self as result is l_coverage_schema_names ut_varchar2_rows; l_coverage_options ut_coverage_options; @@ -33,6 +34,7 @@ create or replace type body ut_run as self.run_paths := a_run_paths; self.self_type := $$plsql_unit; self.items := a_items; + self.client_character_set := lower(a_client_character_set); self.results_count := ut_results_counter(); self.test_file_mappings := coalesce(a_test_file_mappings, ut_file_mappings()); self.coverage_options := ut_coverage_options( diff --git a/source/core/types/ut_run.tps b/source/core/types/ut_run.tps index 59bde318f..0f1c71ca7 100644 --- a/source/core/types/ut_run.tps +++ b/source/core/types/ut_run.tps @@ -23,6 +23,7 @@ create or replace type ut_run under ut_suite_item ( run_paths ut_varchar2_list, coverage_options ut_coverage_options, test_file_mappings ut_file_mappings, + client_character_set varchar2(100), constructor function ut_run( self in out nocopy ut_run, a_items ut_suite_items, @@ -31,7 +32,8 @@ create or replace type ut_run under ut_suite_item ( a_exclude_objects ut_object_names := null, a_include_objects ut_object_names := null, a_project_file_mappings ut_file_mappings := null, - a_test_file_mappings ut_file_mappings := null + a_test_file_mappings ut_file_mappings := null, + a_client_character_set varchar2 := null ) return self as result, overriding member procedure mark_as_skipped(self in out nocopy ut_run), overriding member function do_execute(self in out nocopy ut_run) return boolean, diff --git a/source/core/ut_utils.pkb b/source/core/ut_utils.pkb index c6ffe2060..bbed8d348 100644 --- a/source/core/ut_utils.pkb +++ b/source/core/ut_utils.pkb @@ -507,6 +507,17 @@ procedure append_to_clob(a_src_clob in out nocopy clob, a_clob_table t_clob_tab, return to_char(a_value, gc_number_format, 'NLS_NUMERIC_CHARACTERS=''. '''); end; + function get_xml_header(a_encoding varchar2) return varchar2 is + begin + return + ''; + end; + function trim_list_elements(a_list IN ut_varchar2_list, a_regexp_to_trim in varchar2 default '[:space:]') return ut_varchar2_list is l_trimmed_list ut_varchar2_list; l_index integer; diff --git a/source/core/ut_utils.pks b/source/core/ut_utils.pks index c2e37b794..19118aae8 100644 --- a/source/core/ut_utils.pks +++ b/source/core/ut_utils.pks @@ -320,6 +320,13 @@ create or replace package ut_utils authid definer is */ function to_xml_number_format(a_value number) return varchar2; + + /** + * Returns xml header. If a_encoding is not null, header will include encoding attribute with provided value + */ + function get_xml_header(a_encoding varchar2) return varchar2; + + /*It takes a collection of type ut_varchar2_list and it trims the characters passed as arguments for every element*/ function trim_list_elements(a_list IN ut_varchar2_list, a_regexp_to_trim in varchar2 default '[:space:]') return ut_varchar2_list; diff --git a/source/reporters/ut_coverage_cobertura_reporter.tpb b/source/reporters/ut_coverage_cobertura_reporter.tpb index 82d085604..cce2224df 100644 --- a/source/reporters/ut_coverage_cobertura_reporter.tpb +++ b/source/reporters/ut_coverage_cobertura_reporter.tpb @@ -66,25 +66,27 @@ create or replace type body ut_coverage_cobertura_reporter is end; function get_coverage_xml( - a_coverage_data ut_coverage.t_coverage + a_coverage_data ut_coverage.t_coverage, + a_run ut_run ) return clob is - l_file_part varchar2(32767); - l_result clob; - l_unit ut_coverage.t_full_name; - l_obj_name ut_coverage.t_object_name; - c_coverage_def constant varchar2(200) := ''||CHR(10)||''||chr(10); + l_file_part varchar2(32767); + l_result clob; + l_unit ut_coverage.t_full_name; + l_obj_name ut_coverage.t_object_name; + c_coverage_def constant varchar2(200) := ''||chr(10); c_file_footer constant varchar2(30) := ''||chr(10); c_coverage_footer constant varchar2(30) := ''; c_sources_footer constant varchar2(30) := ''||chr(10); - c_packages_footer constant varchar2(30) := ''||chr(10); + c_packages_footer constant varchar2(30) := ''||chr(10); c_package_footer constant varchar2(30) := ''||chr(10); - c_class_footer constant varchar2(30) := ''||chr(10); - c_lines_footer constant varchar2(30) := ''||chr(10); - l_epoch varchar2(50) := (sysdate - to_date('01-01-1970 00:00:00', 'dd-mm-yyyy hh24:mi:ss')) * 24 * 60 * 60; + c_class_footer constant varchar2(30) := ''||chr(10); + c_lines_footer constant varchar2(30) := ''||chr(10); + l_epoch varchar2(50) := (sysdate - to_date('01-01-1970 00:00:00', 'dd-mm-yyyy hh24:mi:ss')) * 24 * 60 * 60; begin dbms_lob.createtemporary(l_result,true); + ut_utils.append_to_clob(l_result, ut_utils.get_xml_header(a_run.client_character_set)||chr(10)); ut_utils.append_to_clob(l_result, c_coverage_def); --write header @@ -138,7 +140,7 @@ create or replace type body ut_coverage_cobertura_reporter is l_coverage_data := ut_coverage.get_coverage_data(a_run.coverage_options); - self.print_clob( get_coverage_xml( l_coverage_data ) ); + self.print_clob( get_coverage_xml( l_coverage_data, a_run ) ); (self as ut_reporter_base).after_calling_run(a_run); end; diff --git a/source/reporters/ut_coverage_html_reporter.tpb b/source/reporters/ut_coverage_html_reporter.tpb index d1a9dd473..08069ff65 100644 --- a/source/reporters/ut_coverage_html_reporter.tpb +++ b/source/reporters/ut_coverage_html_reporter.tpb @@ -35,7 +35,14 @@ create or replace type body ut_coverage_html_reporter is ut_coverage.coverage_stop(); l_coverage_data := ut_coverage.get_coverage_data(a_run.coverage_options); - self.print_clob( ut_coverage_report_html_helper.get_index( a_coverage_data => l_coverage_data,a_assets_path => self.assets_path, a_project_name=> self.project_name )); + self.print_clob( + ut_coverage_report_html_helper.get_index( + a_coverage_data => l_coverage_data, + a_assets_path => self.assets_path, + a_project_name => self.project_name, + a_charset => a_run.client_character_set + ) + ); end; diff --git a/source/reporters/ut_coverage_report_html_helper.pkb b/source/reporters/ut_coverage_report_html_helper.pkb index 34e241d17..ea03e461b 100644 --- a/source/reporters/ut_coverage_report_html_helper.pkb +++ b/source/reporters/ut_coverage_report_html_helper.pkb @@ -277,8 +277,13 @@ function get_details_file_content(a_object_id varchar2, a_unit ut_object_name, a /* * public definitions */ - function get_index(a_coverage_data ut_coverage.t_coverage, a_assets_path varchar2, a_project_name varchar2 := null, a_command_line varchar2 := null) - return clob is + function get_index( + a_coverage_data ut_coverage.t_coverage, + a_assets_path varchar2, + a_project_name varchar2 := null, + a_command_line varchar2 := null, + a_charset varchar2 := null + ) return clob is l_file_part varchar2(32767); l_result clob; @@ -287,8 +292,10 @@ function get_details_file_content(a_object_id varchar2, a_unit ut_object_name, a l_time_str varchar2(50); l_using varchar2(1000); l_unit ut_coverage.t_full_name; + l_charset varchar2(1000); begin - l_coverage_pct := coverage_pct(a_coverage_data.covered_lines, a_coverage_data.uncovered_lines); + l_charset := coalesce(upper(a_charset),'UTF-8'); + l_coverage_pct := coverage_pct(a_coverage_data.covered_lines, a_coverage_data.uncovered_lines); l_time_str := ut_utils.to_string(sysdate); l_using := case @@ -305,7 +312,7 @@ function get_details_file_content(a_object_id varchar2, a_unit ut_object_name, a end; --TODO - build main file containing total run data and per schema data l_file_part := '' || '' || l_title || - '' || '' || + '' || '' || '' || '' || diff --git a/source/reporters/ut_coverage_report_html_helper.pks b/source/reporters/ut_coverage_report_html_helper.pks index e718f9fed..8970a235e 100644 --- a/source/reporters/ut_coverage_report_html_helper.pks +++ b/source/reporters/ut_coverage_report_html_helper.pks @@ -31,7 +31,13 @@ create or replace package ut_coverage_report_html_helper authid current_user is function line_hits_css_class(a_line_hist number) return varchar2; - function get_index(a_coverage_data ut_coverage.t_coverage, a_assets_path varchar2, a_project_name varchar2 := null, a_command_line varchar2 := null) return clob; + function get_index( + a_coverage_data ut_coverage.t_coverage, + a_assets_path varchar2, + a_project_name varchar2 := null, + a_command_line varchar2 := null, + a_charset varchar2 := null + ) return clob; end; / diff --git a/source/reporters/ut_coverage_sonar_reporter.tpb b/source/reporters/ut_coverage_sonar_reporter.tpb index a82097061..29d3d351d 100644 --- a/source/reporters/ut_coverage_sonar_reporter.tpb +++ b/source/reporters/ut_coverage_sonar_reporter.tpb @@ -59,7 +59,8 @@ create or replace type body ut_coverage_sonar_reporter is return l_result; end; function get_coverage_xml( - a_coverage_data ut_coverage.t_coverage + a_coverage_data ut_coverage.t_coverage, + a_run ut_run ) return clob is l_file_part varchar2(32767); l_result clob; @@ -70,6 +71,7 @@ create or replace type body ut_coverage_sonar_reporter is begin dbms_lob.createtemporary(l_result,true); + ut_utils.append_to_clob(l_result, ut_utils.get_xml_header(a_run.client_character_set)||chr(10)); ut_utils.append_to_clob(l_result, c_coverage_header); l_unit := a_coverage_data.objects.first; while l_unit is not null loop @@ -90,7 +92,7 @@ create or replace type body ut_coverage_sonar_reporter is l_coverage_data := ut_coverage.get_coverage_data(a_run.coverage_options); - self.print_clob( get_coverage_xml( l_coverage_data ) ); + self.print_clob( get_coverage_xml( l_coverage_data, a_run ) ); end; overriding member function get_description return varchar2 as diff --git a/source/reporters/ut_junit_reporter.tpb b/source/reporters/ut_junit_reporter.tpb index 5833b53c6..204a39fb4 100644 --- a/source/reporters/ut_junit_reporter.tpb +++ b/source/reporters/ut_junit_reporter.tpb @@ -135,6 +135,7 @@ create or replace type body ut_junit_reporter is end; begin l_suite_id := 0; + self.print_text(ut_utils.get_xml_header(a_run.client_character_set)); self.print_text(''); for i in 1 .. a_run.items.count loop print_suite_elements(treat(a_run.items(i) as ut_logical_suite), l_suite_id); diff --git a/source/reporters/ut_sonar_test_reporter.tpb b/source/reporters/ut_sonar_test_reporter.tpb index 1152c87d3..a410480ae 100644 --- a/source/reporters/ut_sonar_test_reporter.tpb +++ b/source/reporters/ut_sonar_test_reporter.tpb @@ -87,6 +87,7 @@ create or replace type body ut_sonar_test_reporter is end; begin + self.print_text(ut_utils.get_xml_header(a_run.client_character_set)); self.print_text(''); for i in 1 .. a_run.items.count loop print_suite_results(treat(a_run.items(i) as ut_logical_suite), a_run.test_file_mappings); diff --git a/source/reporters/ut_tfs_junit_reporter.tpb b/source/reporters/ut_tfs_junit_reporter.tpb index b2a777c9f..dbcd558a6 100644 --- a/source/reporters/ut_tfs_junit_reporter.tpb +++ b/source/reporters/ut_tfs_junit_reporter.tpb @@ -141,6 +141,7 @@ create or replace type body ut_tfs_junit_reporter is begin l_suite_id := 0; + self.print_text(ut_utils.get_xml_header(a_run.client_character_set)); self.print_text(''); for i in 1 .. a_run.items.count loop print_suite_results(treat(a_run.items(i) as ut_logical_suite), l_suite_id); diff --git a/test/core/reporters.pkb b/test/core/reporters.pkb index 29299ca08..8eb2a4992 100644 --- a/test/core/reporters.pkb +++ b/test/core/reporters.pkb @@ -1,6 +1,7 @@ create or replace package body reporters is procedure create_test_helper_package is + pragma autonomous_transaction; begin execute immediate q'[create or replace package test_reporters as @@ -119,9 +120,26 @@ end;]'; end; procedure reporters_cleanup is + pragma autonomous_transaction; begin drop_test_helper_package; end; + procedure check_xml_encoding_included( + a_reporter ut3.ut_output_reporter_base, + a_client_character_set varchar2 + ) is + l_results ut3.ut_varchar2_list; + l_actual clob; + begin + --Act + select * + bulk collect into l_results + from table(ut3.ut.run('test_reporters', a_reporter, a_client_character_set => a_client_character_set)); + l_actual := ut3.ut_utils.table_to_clob(l_results); + --Assert + ut.expect(l_actual).to_be_like('%'); + end; + end reporters; / diff --git a/test/core/reporters.pks b/test/core/reporters.pks index 998427203..229e4e9b1 100644 --- a/test/core/reporters.pks +++ b/test/core/reporters.pks @@ -1,8 +1,18 @@ create or replace package reporters is + --%suite + --%suitepath(utplsql.core) + + --%beforeall procedure reporters_setup; + --%afterall procedure reporters_cleanup; + procedure check_xml_encoding_included( + a_reporter ut3.ut_output_reporter_base, + a_client_character_set varchar2 + ); + end reporters; / diff --git a/test/core/reporters/test_coverage.pkb b/test/core/reporters/test_coverage.pkb index 060c8f124..4e3846af8 100644 --- a/test/core/reporters/test_coverage.pkb +++ b/test/core/reporters/test_coverage.pkb @@ -253,7 +253,8 @@ create or replace package body test_coverage is --Assert l_actual := ut3.ut_utils.table_to_clob(l_results); - ut.expect(l_actual).to_equal(to_clob(' + ut.expect(l_actual).to_equal(to_clob(' + ')); drop_dummy_coverage_test_1; end; diff --git a/test/core/reporters/test_coverage/test_coverage_sonar_reporter.pkb b/test/core/reporters/test_coverage/test_coverage_sonar_reporter.pkb index 7aa2b3cd4..81b2c12f8 100644 --- a/test/core/reporters/test_coverage/test_coverage_sonar_reporter.pkb +++ b/test/core/reporters/test_coverage/test_coverage_sonar_reporter.pkb @@ -6,7 +6,8 @@ create or replace package body test_coverage_sonar_reporter is l_actual clob; begin --Arrange - l_expected := ' + l_expected := ' + @@ -29,5 +30,10 @@ create or replace package body test_coverage_sonar_reporter is ut.expect(l_actual).to_equal(l_expected); end; + procedure check_encoding_included is + begin + reporters.check_xml_encoding_included(ut3.ut_coverage_sonar_reporter(), 'UTF-8'); + end; + end; / diff --git a/test/core/reporters/test_coverage/test_coverage_sonar_reporter.pks b/test/core/reporters/test_coverage/test_coverage_sonar_reporter.pks index 26aad7cb5..31cb358dd 100644 --- a/test/core/reporters/test_coverage/test_coverage_sonar_reporter.pks +++ b/test/core/reporters/test_coverage/test_coverage_sonar_reporter.pks @@ -6,5 +6,8 @@ create or replace package test_coverage_sonar_reporter is --%test(reports on a project file mapped to database object) procedure report_on_file; + --%test(Includes XML header with encoding when encoding provided) + procedure check_encoding_included; + end; / diff --git a/test/core/reporters/test_coverage/test_html_extended_reporter.pkb b/test/core/reporters/test_coverage/test_html_extended_reporter.pkb index cd71a6c8c..b1f6fa4bd 100644 --- a/test/core/reporters/test_coverage/test_html_extended_reporter.pkb +++ b/test/core/reporters/test_coverage/test_html_extended_reporter.pkb @@ -4,9 +4,10 @@ create or replace package body test_html_extended_reporter is l_results ut3.ut_varchar2_list; l_expected varchar2(32767); l_actual clob; + l_charset varchar2(100) := 'ISO-8859-1'; begin --Arrange - l_expected := '%

UT3.DUMMY_COVERAGE

%4 relevant lines. 3 lines covered (including 1 lines partially covered ) and 1 lines missed%'; + l_expected := '%%

UT3.DUMMY_COVERAGE

%4 relevant lines. 3 lines covered (including 1 lines partially covered ) and 1 lines missed%'; select * bulk collect into l_results @@ -15,7 +16,8 @@ create or replace package body test_html_extended_reporter is a_path => 'ut3.test_dummy_coverage', a_reporter=> ut3.ut_coverage_html_reporter(), a_source_files => ut3.ut_varchar2_list( 'test/ut3.dummy_coverage.pkb' ), - a_test_files => ut3.ut_varchar2_list( ) + a_test_files => ut3.ut_varchar2_list( ), + a_client_character_set => l_charset ) ); l_actual := ut3.ut_utils.table_to_clob(l_results); diff --git a/test/core/reporters/test_coverage/test_html_proftab_reporter.pkb b/test/core/reporters/test_coverage/test_html_proftab_reporter.pkb index 7167dc6f6..c10af2869 100644 --- a/test/core/reporters/test_coverage/test_html_proftab_reporter.pkb +++ b/test/core/reporters/test_coverage/test_html_proftab_reporter.pkb @@ -4,11 +4,10 @@ create or replace package body test_html_proftab_reporter is l_results ut3.ut_varchar2_list; l_expected varchar2(32767); l_actual clob; + l_charset varchar2(100) := 'ISO-8859-1'; begin --Arrange - l_expected := '%

UT3.DUMMY_COVERAGE

%3 relevant lines. 2 lines covered and 1 lines missed%'; - - --l_expected := '%

UT3.DUMMY_COVERAGE

66% lines covered

3 relevant lines. 2 lines covered ) and 1 lines missed
%'; + l_expected := '%%

UT3.DUMMY_COVERAGE

%3 relevant lines. 2 lines covered and 1 lines missed%'; --Act select * bulk collect into l_results @@ -17,7 +16,8 @@ create or replace package body test_html_proftab_reporter is a_path => 'ut3.test_dummy_coverage', a_reporter=> ut3.ut_coverage_html_reporter(), a_source_files => ut3.ut_varchar2_list( 'test/ut3.dummy_coverage.pkb' ), - a_test_files => ut3.ut_varchar2_list( ) + a_test_files => ut3.ut_varchar2_list( ), + a_client_character_set => l_charset ) ); l_actual := ut3.ut_utils.table_to_clob(l_results); diff --git a/test/core/reporters/test_junit_reporter.pkb b/test/core/reporters/test_junit_reporter.pkb index 3e60b31c6..29beaaa55 100644 --- a/test/core/reporters/test_junit_reporter.pkb +++ b/test/core/reporters/test_junit_reporter.pkb @@ -90,8 +90,6 @@ create or replace package body test_junit_reporter as end; end;]'; - reporters.reporters_setup; - end; procedure escapes_special_chars is @@ -199,7 +197,8 @@ create or replace package body test_junit_reporter as procedure report_test_without_desc is l_results ut3.ut_varchar2_list; l_actual clob; - l_expected varchar2(32767):= q'[ + l_expected varchar2(32767):= q'[ + @@ -224,7 +223,8 @@ create or replace package body test_junit_reporter as procedure report_suite_without_desc is l_results ut3.ut_varchar2_list; l_actual clob; - l_expected varchar2(32767):= q'[ + l_expected varchar2(32767):= q'[ + @@ -245,7 +245,8 @@ create or replace package body test_junit_reporter as procedure reporort_produces_expected_out is l_results ut3.ut_varchar2_list; l_actual clob; - l_expected varchar2(32767):=q'[ + l_expected varchar2(32767):=q'[ + @@ -311,7 +312,8 @@ create or replace package body test_junit_reporter as procedure check_classname_is_populated is l_results ut3.ut_varchar2_list; l_actual clob; - l_expected varchar2(32767):= q'[ + l_expected varchar2(32767):= q'[ + @@ -328,7 +330,12 @@ create or replace package body test_junit_reporter as l_actual := ut3.ut_utils.table_to_clob(l_results); ut.expect(l_actual).to_be_like(l_expected); end; - + + procedure check_encoding_included is + begin + reporters.check_xml_encoding_included(ut3.ut_junit_reporter(), 'UTF-8'); + end; + procedure remove_test_package is pragma autonomous_transaction; begin @@ -338,7 +345,7 @@ create or replace package body test_junit_reporter as execute immediate 'drop package tst_package_junit_nosuite'; execute immediate 'drop package check_fail_escape'; execute immediate 'drop package Tst_Fix_Case_Sensitive'; - reporters.reporters_cleanup; end; + end; / diff --git a/test/core/reporters/test_junit_reporter.pks b/test/core/reporters/test_junit_reporter.pks index 397fa09d8..b39c5ff03 100644 --- a/test/core/reporters/test_junit_reporter.pks +++ b/test/core/reporters/test_junit_reporter.pks @@ -42,6 +42,9 @@ create or replace package test_junit_reporter as --%test( Validate that fail with special char are escaped ) procedure check_failure_escaped; + --%test(Includes XML header with encoding when encoding provided) + procedure check_encoding_included; + --%afterall procedure remove_test_package; end; diff --git a/test/core/reporters/test_sonar_test_reporter.pkb b/test/core/reporters/test_sonar_test_reporter.pkb new file mode 100644 index 000000000..9cf38ea91 --- /dev/null +++ b/test/core/reporters/test_sonar_test_reporter.pkb @@ -0,0 +1,36 @@ +create or replace package body test_sonar_test_reporter as + + procedure report_produces_expected_out is + l_results ut3.ut_varchar2_list; + l_actual clob; + l_expected varchar2(32767):=q'[ + + +% +%%% +%%% +%% + +]'; + + begin + select * + bulk collect into l_results + from table( + ut3.ut.run( + 'test_reporters', + ut3.ut_sonar_test_reporter(), + a_test_file_mappings => ut3.ut_file_mapper.build_file_mappings( user, ut3.ut_varchar2_list('tests/helpers/test_reporters.pkb')) + ) + ); + l_actual := ut3.ut_utils.table_to_clob(l_results); + ut.expect(l_actual).to_be_like(l_expected); + end; + + procedure check_encoding_included is + begin + reporters.check_xml_encoding_included(ut3.ut_sonar_test_reporter(), 'UTF-8'); + end; + +end; +/ diff --git a/test/core/reporters/test_sonar_test_reporter.pks b/test/core/reporters/test_sonar_test_reporter.pks new file mode 100644 index 000000000..ab4776c38 --- /dev/null +++ b/test/core/reporters/test_sonar_test_reporter.pks @@ -0,0 +1,13 @@ +create or replace package test_sonar_test_reporter as + + --%suite(ut_sonar_test_reporter) + --%suitepath(utplsql.core.reporters) + + --%test(Report produces expected output) + procedure report_produces_expected_out; + + --%test(Includes XML header with encoding when encoding provided) + procedure check_encoding_included; + +end; +/ diff --git a/test/core/reporters/test_tfs_junit_reporter.pkb b/test/core/reporters/test_tfs_junit_reporter.pkb index ff77cff5e..bd09b8682 100644 --- a/test/core/reporters/test_tfs_junit_reporter.pkb +++ b/test/core/reporters/test_tfs_junit_reporter.pkb @@ -134,7 +134,8 @@ create or replace package body test_tfs_junit_reporter as from table(ut3.ut.run('check_junit_flat_suitepath',ut3.ut_tfs_junit_reporter())); l_actual := ut3.ut_utils.table_to_clob(l_results); --Assert - ut.expect(l_actual).to_be_like(' + ut.expect(l_actual).to_be_like(' + @@ -196,5 +197,11 @@ create or replace package body test_tfs_junit_reporter as execute immediate 'drop package check_junit_flat_suitepath'; execute immediate 'drop package check_fail_escape'; end; + + procedure check_encoding_included is + begin + reporters.check_xml_encoding_included(ut3.ut_tfs_junit_reporter(), 'UTF-8'); + end; + end; / diff --git a/test/core/reporters/test_tfs_junit_reporter.pks b/test/core/reporters/test_tfs_junit_reporter.pks index 8716fdf14..cc589be1b 100644 --- a/test/core/reporters/test_tfs_junit_reporter.pks +++ b/test/core/reporters/test_tfs_junit_reporter.pks @@ -30,6 +30,9 @@ create or replace package test_tfs_junit_reporter as --%test( Validate that failures with special char are escaped ) procedure check_failure_escaped; + --%test(Includes XML header with encoding when encoding provided) + procedure check_encoding_included; + --%afterall procedure remove_test_package; end; diff --git a/test/core/reporters/test_xunit_reporter.pkb b/test/core/reporters/test_xunit_reporter.pkb deleted file mode 100644 index f75c53ce4..000000000 --- a/test/core/reporters/test_xunit_reporter.pkb +++ /dev/null @@ -1,133 +0,0 @@ -create or replace package body test_xunit_reporter as - - procedure crate_a_test_package is - pragma autonomous_transaction; - begin - execute immediate q'[create or replace package check_xunit_reporting is - --%suite(A suite with ) - - --%test(A test with ) - procedure test_do_stuff; - - end;]'; - execute immediate q'[create or replace package body check_xunit_reporting is - procedure test_do_stuff is - begin - ut3.ut.expect(1).to_equal(1); - ut3.ut.expect(1).to_equal(2); - end; - - end;]'; - - execute immediate q'[create or replace package check_xunit_rep_suitepath is - --%suitepath(core) - --%suite(check_xunit_rep_suitepath) - --%displayname(Check XUNIT Get path for suitepath) - - --%test(check_xunit_rep_suitepath) - --%displayname(Check XUNIT Get path for suitepath) - procedure check_xunit_rep_suitepath; - end;]'; - execute immediate q'[create or replace package body check_xunit_rep_suitepath is - procedure check_xunit_rep_suitepath is - begin - ut3.ut.expect(1).to_equal(1); - end; - end;]'; - end; - - procedure escapes_special_chars is - l_results ut3.ut_varchar2_list; - l_actual clob; - begin - --Act - select * - bulk collect into l_results - from table(ut3.ut.run('check_xunit_reporting',ut3.ut_xunit_reporter())); - l_actual := ut3.ut_utils.table_to_clob(l_results); - --Assert - ut.expect(l_actual).not_to_be_like('%%'); - ut.expect(l_actual).to_be_like('%<tag>%'); - end; - - procedure reports_only_failed_or_errored is - l_results ut3.ut_varchar2_list; - l_actual clob; - begin - --Act - select * - bulk collect into l_results - from table(ut3.ut.run('check_xunit_reporting',ut3.ut_xunit_reporter())); - l_actual := ut3.ut_utils.table_to_clob(l_results); - --Assert - ut.expect(l_actual).not_to_be_like('%Actual: 1 (number) was expected to equal: 1 (number)%'); - ut.expect(l_actual).to_be_like('%Actual: 1 (number) was expected to equal: 2 (number)%'); - end; - - procedure reports_failed_line is - l_results ut3.ut_varchar2_list; - l_actual clob; - begin - --Act - select * - bulk collect into l_results - from table(ut3.ut.run('check_xunit_reporting',ut3.ut_xunit_reporter())); - l_actual := ut3.ut_utils.table_to_clob(l_results); - --Assert - ut.expect(l_actual).to_be_like('%at "%.CHECK_XUNIT_REPORTING%", line %'); - end; - - procedure check_classname_suite is - l_results ut3.ut_varchar2_list; - l_actual clob; - begin - --Act - select * - bulk collect into l_results - from table(ut3.ut.run('check_xunit_reporting',ut3.ut_xunit_reporter())); - l_actual := ut3.ut_utils.table_to_clob(l_results); - --Assert - ut.expect(l_actual).to_be_like('%testcase classname="check_xunit_reporting"%'); - end; - - procedure check_nls_number_formatting is - l_results ut3.ut_varchar2_list; - l_actual clob; - l_nls_numeric_characters varchar2(30); - begin - --Arrange - select nsp.value into l_nls_numeric_characters - from nls_session_parameters nsp - where parameter = 'NLS_NUMERIC_CHARACTERS'; - execute immediate q'[alter session set NLS_NUMERIC_CHARACTERS=', ']'; - --Act - select * - bulk collect into l_results - from table(ut3.ut.run('check_xunit_reporting', ut3.ut_xunit_reporter())); - l_actual := ut3.ut_utils.table_to_clob(l_results); - --Assert - ut.expect(l_actual).to_match('time="[0-9]*\.[0-9]{3,6}"'); - --Cleanup - execute immediate 'alter session set NLS_NUMERIC_CHARACTERS='''||l_nls_numeric_characters||''''; - end; - - procedure check_classname_suitepath is - l_results ut3.ut_varchar2_list; - l_actual clob; - begin - --Act - select * - bulk collect into l_results - from table(ut3.ut.run('check_xunit_rep_suitepath',ut3.ut_xunit_reporter())); - l_actual := ut3.ut_utils.table_to_clob(l_results); - --Assert - ut.expect(l_actual).to_be_like('%testcase classname="core.check_xunit_rep_suitepath"%'); - end; - procedure remove_test_package is - pragma autonomous_transaction; - begin - execute immediate 'drop package check_xunit_reporting'; - execute immediate 'drop package check_xunit_rep_suitepath'; - end; -end; -/ diff --git a/test/install_tests.sql b/test/install_tests.sql index 282e8b440..0b04be320 100644 --- a/test/install_tests.sql +++ b/test/install_tests.sql @@ -41,6 +41,7 @@ set define on @@install_below_12_2.sql 'core/reporters/test_coverage/test_html_proftab_reporter.pks' set define off @@core/reporters/test_tfs_junit_reporter.pks +@@core/reporters/test_sonar_test_reporter.pks @@core/expectations.pks @@core/expectations/scalar_data/binary/test_be_greater_or_equal.pks @@core/expectations/scalar_data/binary/test_be_greater_than.pks @@ -84,6 +85,7 @@ set define on @@install_below_12_2.sql 'core/reporters/test_coverage/test_html_proftab_reporter.pkb' set define off @@core/reporters/test_tfs_junit_reporter.pkb +@@core/reporters/test_sonar_test_reporter.pkb @@core/expectations.pkb @@core/expectations/scalar_data/binary/test_be_greater_or_equal.pkb @@core/expectations/scalar_data/binary/test_be_greater_than.pkb