diff --git a/source/reporters/ut_documentation_reporter.tpb b/source/reporters/ut_documentation_reporter.tpb index 6376c6087..6e95b24e7 100644 --- a/source/reporters/ut_documentation_reporter.tpb +++ b/source/reporters/ut_documentation_reporter.tpb @@ -85,6 +85,10 @@ create or replace type body ut_documentation_reporter is overriding member procedure after_calling_run(self in out nocopy ut_documentation_reporter, a_run in ut_run) as l_summary_text varchar2(4000); + l_warning_index pls_integer := 0; + -- make all warning indexes uniformly indented + c_warnings_lpad constant integer := length(to_char(a_run.results_count.warnings_count)); + procedure print_failure_for_expectation(a_expectation ut_expectation_result) is l_lines ut_varchar2_list; begin @@ -151,7 +155,8 @@ create or replace type body ut_documentation_reporter is if a_item.warnings is not null and a_item.warnings.count > 0 then for i in 1 .. a_item.warnings.count loop - self.print_text(' ' || i || ') ' || a_item.path); + l_warning_index := l_warning_index + 1; + self.print_text(' ' || lpad(l_warning_index, c_warnings_lpad) || ') ' || a_item.path); self.lvl := self.lvl + 3; self.print_red_text(a_item.warnings(i)); self.lvl := self.lvl - 3; @@ -177,6 +182,7 @@ create or replace type body ut_documentation_reporter is print_failures_details(a_run); print_warnings(a_run); self.print_text('Finished in ' || a_run.execution_time || ' seconds'); + l_summary_text := a_run.results_count.total_count || ' tests, ' || a_run.results_count.failure_count || ' failed, ' || a_run.results_count.errored_count || ' errored, ' diff --git a/tests/RunAll.sql b/tests/RunAll.sql index 1aa98db16..bb4396cc3 100644 --- a/tests/RunAll.sql +++ b/tests/RunAll.sql @@ -134,6 +134,7 @@ exec ut_coverage.coverage_start_develop(); @@lib/RunTest.sql ut_reporters/ut_xunit_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_xunit_reporter.ReportOnSuiteWithoutDesc.sql @@lib/RunTest.sql ut_reporters/ut_xunit_reporter.ReportOnTestWithoutDesc.sql diff --git a/tests/ut_reporters/ut_documentation_reporter.reportMultipleWarnings.sql b/tests/ut_reporters/ut_documentation_reporter.reportMultipleWarnings.sql new file mode 100644 index 000000000..00a9794d2 --- /dev/null +++ b/tests/ut_reporters/ut_documentation_reporter.reportMultipleWarnings.sql @@ -0,0 +1,56 @@ +set termout off +create or replace package tst_documrep_mult_warn as + --%suite + + --%test + procedure test1; +end; +/ + +create or replace package body tst_documrep_mult_warn as + procedure test1 is begin commit; end; +end; +/ +create or replace package tst_documrep_mult_warn2 as + --%suite + + --%test + procedure test1; +end; +/ + +create or replace package body tst_documrep_mult_warn2 as + procedure test1 is begin commit; end; +end; +/ + +set termout on + +declare + l_test_report ut_varchar2_list; + l_output_data ut_varchar2_list; + l_output varchar2(32767); + l_expected varchar2(32767); +begin + l_expected := q'[%Warnings: +%1)%tst_documrep_mult_warn% +%2)%tst_documrep_mult_warn%]'; + + --act + select * + bulk collect into l_output_data + from table(ut.run(ut_varchar2_list('tst_documrep_mult_warn','tst_documrep_mult_warn2'),ut_documentation_reporter())); + + l_output := ut_utils.table_to_clob(l_output_data); + + --assert + if l_output like l_expected then + :test_result := ut_utils.tr_success; + else + dbms_output.put_line('Actual:"'||l_output||'"'); + end if; +end; +/ + +drop package tst_documrep_mult_warn; +drop package tst_documrep_mult_warn2;