diff --git a/source/core/types/ut_test.tpb b/source/core/types/ut_test.tpb index 14620b24b..099704fd5 100644 --- a/source/core/types/ut_test.tpb +++ b/source/core/types/ut_test.tpb @@ -162,5 +162,15 @@ create or replace type body ut_test as end loop; return l_outputs; end; + + member function get_failed_expectation_lines return ut_varchar2_rows is + l_results ut_varchar2_rows; + begin + for i in 1 .. failed_expectations.count loop + ut_utils.append_to_list( l_results, ut_utils.convert_collection( failed_expectations(i).get_result_lines() ) ); + ut_utils.append_to_list( l_results, failed_expectations(i).caller_info ); + end loop; + return l_results; + end; end; / diff --git a/source/core/types/ut_test.tps b/source/core/types/ut_test.tps index 752ef3ef7..7ca01313a 100644 --- a/source/core/types/ut_test.tps +++ b/source/core/types/ut_test.tps @@ -64,6 +64,7 @@ create or replace type ut_test under ut_suite_item ( overriding member procedure calc_execution_result(self in out nocopy ut_test), overriding member procedure mark_as_errored(self in out nocopy ut_test, a_error_stack_trace varchar2), overriding member function get_error_stack_traces(self ut_test) return ut_varchar2_list, - overriding member function get_serveroutputs return clob + overriding member function get_serveroutputs return clob, + member function get_failed_expectation_lines return ut_varchar2_rows ) / diff --git a/source/core/ut_utils.pkb b/source/core/ut_utils.pkb index 4593ba1a5..a1fa15022 100644 --- a/source/core/ut_utils.pkb +++ b/source/core/ut_utils.pkb @@ -798,5 +798,31 @@ create or replace package body ut_utils is return l_valid_name; end; + function to_cdata(a_lines ut_varchar2_rows) return ut_varchar2_rows is + l_results ut_varchar2_rows; + begin + if a_lines is not empty then + ut_utils.append_to_list( l_results, gc_cdata_start_tag); + for i in 1 .. a_lines.count loop + ut_utils.append_to_list( l_results, replace( a_lines(i), gc_cdata_end_tag, gc_cdata_end_tag_wrap ) ); + end loop; + ut_utils.append_to_list( l_results, gc_cdata_end_tag); + else + l_results := a_lines; + end if; + return l_results; + end; + + function to_cdata(a_clob clob) return clob is + l_result clob; + begin + if a_clob is not null and a_clob != empty_clob() then + l_result := replace( a_clob, gc_cdata_end_tag, gc_cdata_end_tag_wrap ); + else + l_result := a_clob; + end if; + return l_result; + end; + end ut_utils; / diff --git a/source/core/ut_utils.pks b/source/core/ut_utils.pks index 7d3faaea4..e49c5dd65 100644 --- a/source/core/ut_utils.pks +++ b/source/core/ut_utils.pks @@ -44,6 +44,11 @@ create or replace package ut_utils authid definer is gc_failure_char constant varchar2(7) := 'Failure'; -- one or more expectations failed gc_error_char constant varchar2(5) := 'Error'; -- exception was raised + gc_cdata_start_tag constant varchar2(10) := ''; + gc_cdata_end_tag_wrap constant varchar2(30) := ']]'||gc_cdata_end_tag||gc_cdata_start_tag||'>'; + + /* Constants: Rollback type for ut_test_object */ @@ -386,6 +391,18 @@ create or replace package ut_utils authid definer is * Check if xml name is valid if not build a valid name */ function get_valid_xml_name(a_name varchar2) return varchar2; - -end ut_utils; + + /** + * Converts input list into a list surrounded by CDATA tags + * All CDATA end tags get escaped using recommended method from https://en.wikipedia.org/wiki/CDATA#Nesting + */ + function to_cdata(a_lines ut_varchar2_rows) return ut_varchar2_rows; + + /** + * Converts input CLOB into a CLOB surrounded by CDATA tags + * All CDATA end tags get escaped using recommended method from https://en.wikipedia.org/wiki/CDATA#Nesting + */ + function to_cdata(a_clob clob) return clob; + + end ut_utils; / diff --git a/source/reporters/ut_junit_reporter.tpb b/source/reporters/ut_junit_reporter.tpb index bc88aa8af..c08790080 100644 --- a/source/reporters/ut_junit_reporter.tpb +++ b/source/reporters/ut_junit_reporter.tpb @@ -23,8 +23,6 @@ create or replace type body ut_junit_reporter is end; overriding member procedure after_calling_run(self in out nocopy ut_junit_reporter, a_run in ut_run) is - c_cddata_tag_start constant varchar2(30) := ''; l_suite_id integer := 0; l_tests_count integer := a_run.results_count.disabled_count + a_run.results_count.success_count + a_run.results_count.failure_count + a_run.results_count.errored_count; @@ -36,8 +34,7 @@ create or replace type body ut_junit_reporter is procedure print_test_elements(a_test ut_test) is l_results ut_varchar2_rows := ut_varchar2_rows(); - l_lines ut_varchar2_list; - l_output clob; + l_output clob; begin ut_utils.append_to_list( l_results, @@ -51,30 +48,18 @@ create or replace type body ut_junit_reporter is end if; if a_test.result = ut_utils.gc_error then ut_utils.append_to_list( l_results, ''); - ut_utils.append_to_list( l_results, c_cddata_tag_start); - ut_utils.append_to_list( l_results, ut_utils.convert_collection(a_test.get_error_stack_traces()) ); - ut_utils.append_to_list( l_results, c_cddata_tag_end); + ut_utils.append_to_list( l_results, ut_utils.to_cdata( ut_utils.convert_collection( a_test.get_error_stack_traces() ) ) ); ut_utils.append_to_list( l_results, ''); elsif a_test.result > ut_utils.gc_success then ut_utils.append_to_list( l_results, ''); - for i in 1 .. a_test.failed_expectations.count loop - - l_lines := a_test.failed_expectations(i).get_result_lines(); - - for j in 1 .. l_lines.count loop - ut_utils.append_to_list( l_results, dbms_xmlgen.convert(l_lines(j)) ); - end loop; - ut_utils.append_to_list( l_results, dbms_xmlgen.convert(a_test.failed_expectations(i).caller_info) ); - end loop; + ut_utils.append_to_list( l_results, ut_utils.to_cdata( a_test.get_failed_expectation_lines() ) ); ut_utils.append_to_list( l_results, ''); end if; - -- TODO - decide if we need/want to use the tag too + l_output := a_test.get_serveroutputs(); if l_output is not null then ut_utils.append_to_list( l_results, ''); - ut_utils.append_to_list( l_results, c_cddata_tag_start); - ut_utils.append_to_list( l_results, l_output); - ut_utils.append_to_list( l_results, c_cddata_tag_end ); + ut_utils.append_to_list( l_results, ut_utils.to_cdata( a_test.get_serveroutputs() ) ); ut_utils.append_to_list( l_results, '' ); else ut_utils.append_to_list( l_results, ''); @@ -86,7 +71,7 @@ create or replace type body ut_junit_reporter is end; procedure print_suite_elements(a_suite ut_logical_suite, a_suite_id in out nocopy integer) is - l_tests_count integer := a_suite.results_count.disabled_count + a_suite.results_count.success_count + + l_count integer := a_suite.results_count.disabled_count + a_suite.results_count.success_count + a_suite.results_count.failure_count + a_suite.results_count.errored_count; l_suite ut_suite; l_tests ut_suite_items := ut_suite_items(); @@ -95,7 +80,7 @@ create or replace type body ut_junit_reporter is l_errors ut_varchar2_list; begin a_suite_id := a_suite_id + 1; - self.print_text(''); -- Becasue testsuites have to appear before test we capture test and leave it for later. @@ -117,11 +102,9 @@ create or replace type body ut_junit_reporter is l_suite := treat(a_suite as ut_suite); l_data := l_suite.get_serveroutputs(); - if l_data is not null and l_data != empty_clob() then + if l_data is not null then ut_utils.append_to_list( l_results, ''); - ut_utils.append_to_list( l_results, c_cddata_tag_start); - ut_utils.append_to_list( l_results, l_data); - ut_utils.append_to_list( l_results, c_cddata_tag_end); + ut_utils.append_to_list( l_results, ut_utils.to_cdata( l_data ) ); ut_utils.append_to_list( l_results, ''); else ut_utils.append_to_list( l_results, ''); @@ -130,9 +113,7 @@ create or replace type body ut_junit_reporter is l_errors := l_suite.get_error_stack_traces(); if l_errors is not empty then ut_utils.append_to_list( l_results, ''); - ut_utils.append_to_list( l_results, c_cddata_tag_start); - ut_utils.append_to_list( l_results, ut_utils.table_to_clob(l_errors)); - ut_utils.append_to_list( l_results, c_cddata_tag_end); + ut_utils.append_to_list( l_results, ut_utils.to_cdata( ut_utils.convert_collection( l_errors ) ) ); ut_utils.append_to_list( l_results, ''); else ut_utils.append_to_list( l_results, ''); diff --git a/source/reporters/ut_sonar_test_reporter.tpb b/source/reporters/ut_sonar_test_reporter.tpb index 1da349d83..874a07957 100644 --- a/source/reporters/ut_sonar_test_reporter.tpb +++ b/source/reporters/ut_sonar_test_reporter.tpb @@ -43,26 +43,18 @@ create or replace type body ut_sonar_test_reporter is end; procedure print_test_results(a_test ut_test) is - l_results ut_varchar2_rows := ut_varchar2_rows(); - l_lines ut_varchar2_list; + l_results ut_varchar2_rows := ut_varchar2_rows(); begin ut_utils.append_to_list( l_results, ''); if a_test.result = ut_utils.gc_disabled then ut_utils.append_to_list( l_results, ''); elsif a_test.result = ut_utils.gc_error then ut_utils.append_to_list( l_results, ''); - ut_utils.append_to_list( l_results, ''); + ut_utils.append_to_list( l_results, ut_utils.to_cdata( ut_utils.convert_collection( a_test.get_error_stack_traces() ) ) ); ut_utils.append_to_list( l_results, ''); elsif a_test.result > ut_utils.gc_success then ut_utils.append_to_list( l_results, ''); - for i in 1 .. a_test.failed_expectations.count loop - l_lines := a_test.failed_expectations(i).get_result_lines(); - for i in 1 .. l_lines.count loop - ut_utils.append_to_list( l_results, dbms_xmlgen.convert(l_lines(i))); - end loop; - end loop; + ut_utils.append_to_list( l_results, ut_utils.to_cdata( a_test.get_failed_expectation_lines() ) ); ut_utils.append_to_list( l_results, ''); end if; ut_utils.append_to_list( l_results, ''); diff --git a/source/reporters/ut_tfs_junit_reporter.tpb b/source/reporters/ut_tfs_junit_reporter.tpb index 5f3770b23..5fba96886 100644 --- a/source/reporters/ut_tfs_junit_reporter.tpb +++ b/source/reporters/ut_tfs_junit_reporter.tpb @@ -29,9 +29,7 @@ create or replace type body ut_tfs_junit_reporter is member procedure junit_version_one(self in out nocopy ut_tfs_junit_reporter,a_run in ut_run) is l_suite_id integer := 0; - l_tests_count integer := a_run.results_count.disabled_count + a_run.results_count.success_count + - a_run.results_count.failure_count + a_run.results_count.errored_count; - + function get_common_suite_attributes(a_item ut_suite_item) return varchar2 is begin return ' errors="' ||a_item.results_count.errored_count || '"' || @@ -55,7 +53,6 @@ create or replace type body ut_tfs_junit_reporter is procedure print_test_results(a_test ut_test) is l_results ut_varchar2_rows := ut_varchar2_rows(); - l_lines ut_varchar2_list; begin self.print_text(''); @@ -69,20 +66,12 @@ create or replace type body ut_tfs_junit_reporter is if a_test.result = ut_utils.gc_error then ut_utils.append_to_list( l_results, ''); - ut_utils.append_to_list( l_results, ''); + ut_utils.append_to_list( l_results, ut_utils.to_cdata( ut_utils.convert_collection( a_test.get_error_stack_traces() ) ) ); ut_utils.append_to_list( l_results, ''); -- Do not count error as failure elsif a_test.result = ut_utils.gc_failure then ut_utils.append_to_list( l_results, ''); - for i in 1 .. a_test.failed_expectations.count loop - l_lines := a_test.failed_expectations(i).get_result_lines(); - for j in 1 .. l_lines.count loop - ut_utils.append_to_list( l_results, dbms_xmlgen.convert(l_lines(j))); - end loop; - ut_utils.append_to_list( l_results, dbms_xmlgen.convert(a_test.failed_expectations(i).caller_info)); - end loop; + ut_utils.append_to_list( l_results, ut_utils.to_cdata( a_test.get_failed_expectation_lines() ) ); ut_utils.append_to_list( l_results, ''); end if; @@ -106,43 +95,39 @@ create or replace type body ut_tfs_junit_reporter is end if; end loop; - if a_suite is of(ut_suite) then - a_suite_id := a_suite_id + 1; - self.print_text(''); - self.print_text(''); - for i in 1 .. a_suite.items.count loop - if a_suite.items(i) is of(ut_test) then - print_test_results(treat(a_suite.items(i) as ut_test)); - end if; - end loop; - l_suite := treat(a_suite as ut_suite); - l_outputs := l_suite.get_serveroutputs(); - if l_outputs is not null and l_outputs != empty_clob() then - ut_utils.append_to_list( l_results, ''); - ut_utils.append_to_list( l_results, ''); - ut_utils.append_to_list( l_results, ''); - else - ut_utils.append_to_list( l_results, ''); - end if; + if a_suite is of(ut_suite) then + a_suite_id := a_suite_id + 1; + self.print_text(''); + self.print_text(''); + for i in 1 .. a_suite.items.count loop + if a_suite.items(i) is of(ut_test) then + print_test_results(treat(a_suite.items(i) as ut_test)); + end if; + end loop; + l_suite := treat(a_suite as ut_suite); + l_outputs := l_suite.get_serveroutputs(); + if l_outputs is not null and l_outputs != empty_clob() then + ut_utils.append_to_list( l_results, ''); + ut_utils.append_to_list( l_results, ut_utils.to_cdata( l_suite.get_serveroutputs() ) ); + ut_utils.append_to_list( l_results, ''); + else + ut_utils.append_to_list( l_results, ''); + end if; - l_errors := l_suite.get_error_stack_traces(); - if l_errors is not empty then - ut_utils.append_to_list( l_results, ''); - ut_utils.append_to_list( l_results, ''); - ut_utils.append_to_list( l_results, ''); - else - ut_utils.append_to_list( l_results, ''); - end if; - ut_utils.append_to_list( l_results, ''); + l_errors := l_suite.get_error_stack_traces(); + if l_errors is not empty then + ut_utils.append_to_list( l_results, ''); + ut_utils.append_to_list( l_results, ut_utils.to_cdata( ut_utils.convert_collection( l_errors ) ) ); + ut_utils.append_to_list( l_results, ''); + else + ut_utils.append_to_list( l_results, ''); + end if; + ut_utils.append_to_list( l_results, ''); - self.print_text_lines(l_results); + self.print_text_lines(l_results); end if; - end; + end; begin l_suite_id := 0; diff --git a/test/ut3_user/api/test_ut_run.pkb b/test/ut3_user/api/test_ut_run.pkb index 43a2238ae..620c87977 100644 --- a/test/ut3_user/api/test_ut_run.pkb +++ b/test/ut3_user/api/test_ut_run.pkb @@ -734,8 +734,8 @@ Failures:% procedure remove_time_from_results(a_results in out nocopy ut3.ut_varchar2_list) is begin for i in 1 .. a_results.count loop - a_results(i) := regexp_replace(a_results(i),'\[[0-9]*\.[0-9]+ sec\]',''); - a_results(i) := regexp_replace(a_results(i),'Finished in [0-9]*\.[0-9]+ seconds',''); + a_results(i) := regexp_replace(a_results(i),'\[[0-9]*[\.,][0-9]+ sec\]',''); + a_results(i) := regexp_replace(a_results(i),'Finished in [0-9]*[\.,][0-9]+ seconds',''); end loop; end; diff --git a/test/ut3_user/reporters.pkb b/test/ut3_user/reporters.pkb index 364566569..d6a104242 100644 --- a/test/ut3_user/reporters.pkb +++ b/test/ut3_user/reporters.pkb @@ -110,8 +110,24 @@ as dbms_output.put_line(''); end; -end;]'; - +end;]'; + + execute immediate q'[create or replace package check_fail_escape is + --%suitepath(core) + --%suite(Check JUNIT XML failure is escaped) + + --%test(Fail Miserably) + procedure fail_miserably; + + end;]'; + + execute immediate q'[create or replace package body check_fail_escape is + procedure fail_miserably is + begin + ut3.ut.expect('test').to_equal(''); + end; + end;]'; + end; procedure reporters_setup is @@ -122,6 +138,7 @@ end;]'; procedure drop_test_helper_package is begin execute immediate 'drop package test_reporters'; + execute immediate 'drop package check_fail_escape'; end; procedure reporters_cleanup is @@ -146,5 +163,24 @@ end;]'; ut.expect(l_actual).to_be_like('%'); end; + procedure check_xml_failure_escaped( + a_reporter ut3.ut_output_reporter_base + ) is + l_results ut3.ut_varchar2_list; + l_actual clob; + begin + --Act + select * + bulk collect into l_results + from table( ut3.ut.run( 'check_fail_escape', a_reporter ) ); + l_actual := ut3_tester_helper.main_helper.table_to_clob(l_results); + --Assert + ut.expect(l_actual).to_be_like('%' (varchar2)%]' + ||q'[at "UT3$USER#.CHECK_FAIL_ESCAPE%", line % ut3.ut.expect('test').to_equal('');]' + ||'%]]>%' + ); + end; + end reporters; / diff --git a/test/ut3_user/reporters.pks b/test/ut3_user/reporters.pks index cb601cf3b..54800fa4a 100644 --- a/test/ut3_user/reporters.pks +++ b/test/ut3_user/reporters.pks @@ -14,5 +14,9 @@ create or replace package reporters is a_client_character_set varchar2 ); + procedure check_xml_failure_escaped( + a_reporter ut3.ut_output_reporter_base + ); + end reporters; / diff --git a/test/ut3_user/reporters/test_documentation_reporter.pkb b/test/ut3_user/reporters/test_documentation_reporter.pkb index 394594fa4..a1f895947 100644 --- a/test/ut3_user/reporters/test_documentation_reporter.pkb +++ b/test/ut3_user/reporters/test_documentation_reporter.pkb @@ -1 +1 @@ -create or replace package body test_documentation_reporter as procedure report_produces_expected_out is l_results ut3.ut_varchar2_list; l_actual clob; l_expected varchar2(32767):=q'[%org utplsql tests helpers A suite for testing different outcomes from reporters A description of some context passing_test [% sec] a test with failing assertion [% sec] (FAILED - 1) a test raising unhandled exception [% sec] (FAILED - 2) a disabled test [0 sec] (DISABLED) % Failures: % 1) failing_test "Fails as values are different" Actual: 'number [1] ' (varchar2) was expected to equal: 'number [2] ' (varchar2)% at "UT3$USER#.TEST_REPORTERS%", line 36 ut3.ut.expect('number [1] ','Fails as values are different').to_equal('number [2] '); % % 2) erroring_test ORA-06502: PL/SQL: numeric or value error: character to number conversion error ORA-06512: at "UT3$USER#.TEST_REPORTERS", line 44% ORA-06512: at line 6 Finished in % seconds 4 tests, 1 failed, 1 errored, 1 disabled, 0 warning(s)%]'; begin select * bulk collect into l_results from table( ut3.ut.run( 'test_reporters', ut3.ut_documentation_reporter() ) ); l_actual := ut3_tester_helper.main_helper.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; / \ No newline at end of file +create or replace package body test_documentation_reporter as procedure report_produces_expected_out is l_results ut3.ut_varchar2_list; l_actual clob; l_expected varchar2(32767):=q'[%org utplsql tests helpers A suite for testing different outcomes from reporters A description of some context passing_test [% sec] a test with failing assertion [% sec] (FAILED - 1) a test raising unhandled exception [% sec] (FAILED - 2) a disabled test [0 sec] (DISABLED) % Failures: % 1) failing_test "Fails as values are different" Actual: 'number [1] ' (varchar2) was expected to equal: 'number [2] ' (varchar2)% at "UT3$USER#.TEST_REPORTERS%", line 36 ut3.ut.expect('number [1] ','Fails as values are different').to_equal('number [2] '); % % 2) erroring_test ORA-06502: PL/SQL: numeric or value error: character to number conversion error ORA-06512: at "UT3$USER#.TEST_REPORTERS", line 44% ORA-06512: at line 6 Finished in % seconds 4 tests, 1 failed, 1 errored, 1 disabled, 0 warning(s)%]'; begin select * bulk collect into l_results from table( ut3.ut.run( 'test_reporters', ut3.ut_documentation_reporter() ) ); l_actual := ut3_tester_helper.main_helper.table_to_clob(l_results); ut.expect(l_actual).to_be_like(l_expected); end; end; / \ No newline at end of file diff --git a/test/ut3_user/reporters/test_junit_reporter.pkb b/test/ut3_user/reporters/test_junit_reporter.pkb index b86bb698c..e1b790156 100644 --- a/test/ut3_user/reporters/test_junit_reporter.pkb +++ b/test/ut3_user/reporters/test_junit_reporter.pkb @@ -72,23 +72,6 @@ create or replace package body test_junit_reporter as execute immediate q'[create or replace package body Tst_Fix_Case_Sensitive as procedure bUgFiX is begin ut.expect(1).to_equal(1); end; end;]'; - - execute immediate q'[create or replace package check_fail_escape is - --%suitepath(core) - --%suite(checkfailedescape) - --%displayname(Check JUNIT XML failure is escaped) - - --%test(Fail Miserably) - procedure fail_miserably; - - end;]'; - - execute immediate q'[create or replace package body check_fail_escape is - procedure fail_miserably is - begin - ut3.ut.expect('test').to_equal(''); - end; - end;]'; end; @@ -134,19 +117,6 @@ create or replace package body test_junit_reporter as 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_junit_reporting',ut3.ut_junit_reporter())); - l_actual := ut3_tester_helper.main_helper.table_to_clob(l_results); - --Assert - ut.expect(l_actual).to_be_like('%at "%.CHECK_JUNIT_REPORTING%", line %'); - end; - procedure check_classname_suite is l_results ut3.ut_varchar2_list; l_actual clob; @@ -302,13 +272,7 @@ create or replace package body test_junit_reporter as l_results ut3.ut_varchar2_list; l_actual clob; begin - --Act - select * - bulk collect into l_results - from table(ut3.ut.run('check_fail_escape',ut3.ut_junit_reporter())); - l_actual := ut3_tester_helper.main_helper.table_to_clob(l_results); - --Assert - ut.expect(l_actual).to_be_like('%Actual: 'test' (varchar2) was expected to equal: '<![CDATA[some stuff]]>' (varchar2)%'); + reporters.check_xml_failure_escaped(ut3.ut_junit_reporter()); end; procedure check_classname_is_populated is @@ -345,7 +309,6 @@ create or replace package body test_junit_reporter as execute immediate 'drop package check_junit_rep_suitepath'; execute immediate 'drop package tst_package_junit_nodesc'; execute immediate 'drop package tst_package_junit_nosuite'; - execute immediate 'drop package check_fail_escape'; execute immediate 'drop package Tst_Fix_Case_Sensitive'; end; diff --git a/test/ut3_user/reporters/test_junit_reporter.pks b/test/ut3_user/reporters/test_junit_reporter.pks index 8af2ba430..71443c180 100644 --- a/test/ut3_user/reporters/test_junit_reporter.pks +++ b/test/ut3_user/reporters/test_junit_reporter.pks @@ -15,9 +15,6 @@ create or replace package test_junit_reporter as --%test(Xunit Backward Compatibility - Reports only failed expectations and exceptions) procedure reports_xunit_only_fail_or_err; - --%test(Reports failed line of test) - procedure reports_failed_line; - --%test(Check that classname is returned correct suite) procedure check_classname_suite; diff --git a/test/ut3_user/reporters/test_sonar_test_reporter.pkb b/test/ut3_user/reporters/test_sonar_test_reporter.pkb index 76cec84c8..357eff0a2 100644 --- a/test/ut3_user/reporters/test_sonar_test_reporter.pkb +++ b/test/ut3_user/reporters/test_sonar_test_reporter.pkb @@ -32,5 +32,10 @@ create or replace package body test_sonar_test_reporter as reporters.check_xml_encoding_included(ut3.ut_sonar_test_reporter(), 'UTF-8'); end; + procedure check_failure_escaped is + begin + reporters.check_xml_failure_escaped(ut3.ut_sonar_test_reporter()); + end; + end; / diff --git a/test/ut3_user/reporters/test_sonar_test_reporter.pks b/test/ut3_user/reporters/test_sonar_test_reporter.pks index 0c2fdf70a..ade449dba 100644 --- a/test/ut3_user/reporters/test_sonar_test_reporter.pks +++ b/test/ut3_user/reporters/test_sonar_test_reporter.pks @@ -9,5 +9,8 @@ create or replace package test_sonar_test_reporter as --%test(Includes XML header with encoding when encoding provided) procedure check_encoding_included; + --%test( Validate that fail with special char are escaped ) + procedure check_failure_escaped; + end; / diff --git a/test/ut3_user/reporters/test_tfs_junit_reporter.pkb b/test/ut3_user/reporters/test_tfs_junit_reporter.pkb index 623dda51e..196a2ec08 100644 --- a/test/ut3_user/reporters/test_tfs_junit_reporter.pkb +++ b/test/ut3_user/reporters/test_tfs_junit_reporter.pkb @@ -48,25 +48,7 @@ create or replace package body test_tfs_junit_reporter as null; end; end;]'; - - execute immediate q'[create or replace package check_fail_escape is - --%suitepath(core) - --%suite(checkfailedescape) - --%displayname(Check JUNIT XML failure is escaped) - - --%test(Fail Miserably) - procedure fail_miserably; - - end;]'; - - execute immediate q'[create or replace package body check_fail_escape is - procedure fail_miserably is - begin - ut3.ut.expect('test').to_equal(''); - end; - end;]'; - end; @@ -98,19 +80,6 @@ create or replace package body test_tfs_junit_reporter as 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_junit_reporting',ut3.ut_tfs_junit_reporter())); - l_actual := ut3_tester_helper.main_helper.table_to_clob(l_results); - --Assert - ut.expect(l_actual).to_be_like('%at "%.CHECK_JUNIT_REPORTING%", line %'); - end; - procedure check_classname_suite is l_results ut3.ut_varchar2_list; l_actual clob; @@ -165,16 +134,8 @@ create or replace package body test_tfs_junit_reporter as end; procedure check_failure_escaped is - l_results ut3.ut_varchar2_list; - l_actual clob; begin - --Act - select * - bulk collect into l_results - from table(ut3.ut.run('check_fail_escape',ut3.ut_tfs_junit_reporter())); - l_actual := ut3_tester_helper.main_helper.table_to_clob(l_results); - --Assert - ut.expect(l_actual).to_be_like('%Actual: 'test' (varchar2) was expected to equal: '<![CDATA[some stuff]]>' (varchar2)%'); + reporters.check_xml_failure_escaped(ut3.ut_tfs_junit_reporter()); end; procedure check_classname_suitepath is @@ -195,7 +156,6 @@ create or replace package body test_tfs_junit_reporter as execute immediate 'drop package check_junit_reporting'; execute immediate 'drop package check_junit_rep_suitepath'; execute immediate 'drop package check_junit_flat_suitepath'; - execute immediate 'drop package check_fail_escape'; end; procedure check_encoding_included is diff --git a/test/ut3_user/reporters/test_tfs_junit_reporter.pks b/test/ut3_user/reporters/test_tfs_junit_reporter.pks index af6227283..07acb4d21 100644 --- a/test/ut3_user/reporters/test_tfs_junit_reporter.pks +++ b/test/ut3_user/reporters/test_tfs_junit_reporter.pks @@ -12,9 +12,6 @@ create or replace package test_tfs_junit_reporter as --%test(Reports only failed expectations and exceptions) procedure reports_only_failed_or_errored; - --%test(Reports failed line of test) - procedure reports_failed_line; - --%test(Check that classname is returned correct suite) procedure check_classname_suite;