Thanks to visit codestin.com
Credit goes to github.com

Skip to content

Commit 36e0801

Browse files
committed
Fixing sonar violation on duplicated code.
1 parent 21a812d commit 36e0801

8 files changed

Lines changed: 97 additions & 93 deletions

File tree

source/core/types/ut_test.tpb

Lines changed: 5 additions & 16 deletions
Original file line numberDiff line numberDiff line change
@@ -163,25 +163,14 @@ create or replace type body ut_test as
163163
return l_outputs;
164164
end;
165165

166-
member function get_failed_expectations_cdata return ut_varchar2_rows is
167-
c_cdata_start_tag constant varchar2(30) := '<![CDATA[';
168-
c_cdata_end_tag constant varchar2(10) := ']]>';
169-
c_cdata_end_tag_wrap constant varchar2(30) := ']]'||c_cdata_end_tag||c_cdata_start_tag||'>';
170-
l_results ut_varchar2_rows;
171-
l_lines ut_varchar2_list;
166+
member function get_failed_expectation_lines return ut_varchar2_rows is
167+
l_results ut_varchar2_rows;
172168
begin
173-
ut_utils.append_to_list( l_results, c_cdata_start_tag);
174-
for i in 1 .. self.failed_expectations.count loop
175-
l_lines := self.failed_expectations(i).get_result_lines();
176-
for j in 1 .. l_lines.count loop
177-
--Encapsulate nested CDATA in results
178-
ut_utils.append_to_list( l_results, replace( l_lines(j), c_cdata_end_tag, c_cdata_end_tag_wrap ) );
179-
end loop;
180-
ut_utils.append_to_list( l_results, replace( self.failed_expectations(i).caller_info, c_cdata_end_tag, c_cdata_end_tag_wrap ) );
169+
for i in 1 .. failed_expectations.count loop
170+
ut_utils.append_to_list( l_results, ut_utils.convert_collection( failed_expectations(i).get_result_lines() ) );
171+
ut_utils.append_to_list( l_results, failed_expectations(i).caller_info );
181172
end loop;
182-
ut_utils.append_to_list( l_results, c_cdata_end_tag);
183173
return l_results;
184174
end;
185-
186175
end;
187176
/

source/core/types/ut_test.tps

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -65,6 +65,6 @@ create or replace type ut_test under ut_suite_item (
6565
overriding member procedure mark_as_errored(self in out nocopy ut_test, a_error_stack_trace varchar2),
6666
overriding member function get_error_stack_traces(self ut_test) return ut_varchar2_list,
6767
overriding member function get_serveroutputs return clob,
68-
member function get_failed_expectations_cdata return ut_varchar2_rows
68+
member function get_failed_expectation_lines return ut_varchar2_rows
6969
)
7070
/

source/core/ut_utils.pkb

Lines changed: 26 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -798,5 +798,31 @@ create or replace package body ut_utils is
798798
return l_valid_name;
799799
end;
800800

801+
function to_cdata(a_lines ut_varchar2_rows) return ut_varchar2_rows is
802+
l_results ut_varchar2_rows;
803+
begin
804+
if a_lines is not empty then
805+
ut_utils.append_to_list( l_results, gc_cdata_start_tag);
806+
for i in 1 .. a_lines.count loop
807+
ut_utils.append_to_list( l_results, replace( a_lines(i), gc_cdata_end_tag, gc_cdata_end_tag_wrap ) );
808+
end loop;
809+
ut_utils.append_to_list( l_results, gc_cdata_end_tag);
810+
else
811+
l_results := a_lines;
812+
end if;
813+
return l_results;
814+
end;
815+
816+
function to_cdata(a_clob clob) return clob is
817+
l_result clob;
818+
begin
819+
if a_clob is not null and a_clob != empty_clob() then
820+
l_result := replace( a_clob, gc_cdata_end_tag, gc_cdata_end_tag_wrap );
821+
else
822+
l_result := a_clob;
823+
end if;
824+
return l_result;
825+
end;
826+
801827
end ut_utils;
802828
/

source/core/ut_utils.pks

Lines changed: 19 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -44,6 +44,11 @@ create or replace package ut_utils authid definer is
4444
gc_failure_char constant varchar2(7) := 'Failure'; -- one or more expectations failed
4545
gc_error_char constant varchar2(5) := 'Error'; -- exception was raised
4646

47+
gc_cdata_start_tag constant varchar2(10) := '<![CDATA[';
48+
gc_cdata_end_tag constant varchar2(10) := ']]>';
49+
gc_cdata_end_tag_wrap constant varchar2(30) := ']]'||gc_cdata_end_tag||gc_cdata_start_tag||'>';
50+
51+
4752
/*
4853
Constants: Rollback type for ut_test_object
4954
*/
@@ -386,6 +391,18 @@ create or replace package ut_utils authid definer is
386391
* Check if xml name is valid if not build a valid name
387392
*/
388393
function get_valid_xml_name(a_name varchar2) return varchar2;
389-
390-
end ut_utils;
394+
395+
/**
396+
* Converts input list into a list surrounded by CDATA tags
397+
* All CDATA end tags get escaped using recommended method from https://en.wikipedia.org/wiki/CDATA#Nesting
398+
*/
399+
function to_cdata(a_lines ut_varchar2_rows) return ut_varchar2_rows;
400+
401+
/**
402+
* Converts input CLOB into a CLOB surrounded by CDATA tags
403+
* All CDATA end tags get escaped using recommended method from https://en.wikipedia.org/wiki/CDATA#Nesting
404+
*/
405+
function to_cdata(a_clob clob) return clob;
406+
407+
end ut_utils;
391408
/

source/reporters/ut_junit_reporter.tpb

Lines changed: 9 additions & 21 deletions
Original file line numberDiff line numberDiff line change
@@ -23,9 +23,6 @@ create or replace type body ut_junit_reporter is
2323
end;
2424

2525
overriding member procedure after_calling_run(self in out nocopy ut_junit_reporter, a_run in ut_run) is
26-
c_cdata_start_tag constant varchar2(30) := '<![CDATA[';
27-
c_cdata_end_tag constant varchar2(10) := ']]>';
28-
c_cdata_end_tag_wrap constant varchar2(30) := ']]'||c_cdata_end_tag||c_cdata_start_tag||'>';
2926
l_suite_id integer := 0;
3027
l_tests_count integer := a_run.results_count.disabled_count + a_run.results_count.success_count +
3128
a_run.results_count.failure_count + a_run.results_count.errored_count;
@@ -37,7 +34,6 @@ create or replace type body ut_junit_reporter is
3734

3835
procedure print_test_elements(a_test ut_test) is
3936
l_results ut_varchar2_rows := ut_varchar2_rows();
40-
l_lines ut_varchar2_list;
4137
l_output clob;
4238
begin
4339
ut_utils.append_to_list(
@@ -52,22 +48,18 @@ create or replace type body ut_junit_reporter is
5248
end if;
5349
if a_test.result = ut_utils.gc_error then
5450
ut_utils.append_to_list( l_results, '<error>');
55-
ut_utils.append_to_list( l_results, c_cdata_start_tag);
56-
ut_utils.append_to_list( l_results, replace( ut_utils.table_to_clob(a_test.get_error_stack_traces()), c_cdata_end_tag, c_cdata_end_tag_wrap ));
57-
ut_utils.append_to_list( l_results, c_cdata_end_tag);
51+
ut_utils.append_to_list( l_results, ut_utils.to_cdata( ut_utils.convert_collection( a_test.get_error_stack_traces() ) ) );
5852
ut_utils.append_to_list( l_results, '</error>');
5953
elsif a_test.result > ut_utils.gc_success then
6054
ut_utils.append_to_list( l_results, '<failure>');
61-
ut_utils.append_to_list( l_results, a_test.get_failed_expectations_cdata() );
55+
ut_utils.append_to_list( l_results, ut_utils.to_cdata( a_test.get_failed_expectation_lines() ) );
6256
ut_utils.append_to_list( l_results, '</failure>');
6357
end if;
64-
-- TODO - decide if we need/want to use the <system-err/> tag too
58+
6559
l_output := a_test.get_serveroutputs();
6660
if l_output is not null then
6761
ut_utils.append_to_list( l_results, '<system-out>');
68-
ut_utils.append_to_list( l_results, c_cdata_start_tag);
69-
ut_utils.append_to_list( l_results, replace( l_output, c_cdata_end_tag, c_cdata_end_tag_wrap ) );
70-
ut_utils.append_to_list( l_results, c_cdata_end_tag );
62+
ut_utils.append_to_list( l_results, ut_utils.to_cdata( a_test.get_serveroutputs() ) );
7163
ut_utils.append_to_list( l_results, '</system-out>' );
7264
else
7365
ut_utils.append_to_list( l_results, '<system-out/>');
@@ -79,7 +71,7 @@ create or replace type body ut_junit_reporter is
7971
end;
8072

8173
procedure print_suite_elements(a_suite ut_logical_suite, a_suite_id in out nocopy integer) is
82-
l_tests_count integer := a_suite.results_count.disabled_count + a_suite.results_count.success_count +
74+
l_count integer := a_suite.results_count.disabled_count + a_suite.results_count.success_count +
8375
a_suite.results_count.failure_count + a_suite.results_count.errored_count;
8476
l_suite ut_suite;
8577
l_tests ut_suite_items := ut_suite_items();
@@ -88,7 +80,7 @@ create or replace type body ut_junit_reporter is
8880
l_errors ut_varchar2_list;
8981
begin
9082
a_suite_id := a_suite_id + 1;
91-
self.print_text('<testsuite tests="' || l_tests_count || '"' || ' id="' || a_suite_id || '"' || ' package="' ||
83+
self.print_text('<testsuite tests="' || l_count || '"' || ' id="' || a_suite_id || '"' || ' package="' ||
9284
dbms_xmlgen.convert(a_suite.path) || '" ' || self.get_common_suite_attributes(a_suite) || '>');
9385

9486
-- Becasue testsuites have to appear before test we capture test and leave it for later.
@@ -110,11 +102,9 @@ create or replace type body ut_junit_reporter is
110102
l_suite := treat(a_suite as ut_suite);
111103

112104
l_data := l_suite.get_serveroutputs();
113-
if l_data is not null and l_data != empty_clob() then
105+
if l_data is not null then
114106
ut_utils.append_to_list( l_results, '<system-out>');
115-
ut_utils.append_to_list( l_results, c_cdata_start_tag);
116-
ut_utils.append_to_list( l_results, replace( l_data, c_cdata_end_tag, c_cdata_end_tag_wrap ) );
117-
ut_utils.append_to_list( l_results, c_cdata_end_tag);
107+
ut_utils.append_to_list( l_results, ut_utils.to_cdata( l_data ) );
118108
ut_utils.append_to_list( l_results, '</system-out>');
119109
else
120110
ut_utils.append_to_list( l_results, '<system-out/>');
@@ -123,9 +113,7 @@ create or replace type body ut_junit_reporter is
123113
l_errors := l_suite.get_error_stack_traces();
124114
if l_errors is not empty then
125115
ut_utils.append_to_list( l_results, '<system-err>');
126-
ut_utils.append_to_list( l_results, c_cdata_start_tag);
127-
ut_utils.append_to_list( l_results, replace( ut_utils.table_to_clob(l_errors), c_cdata_end_tag, c_cdata_end_tag_wrap ) );
128-
ut_utils.append_to_list( l_results, c_cdata_end_tag);
116+
ut_utils.append_to_list( l_results, ut_utils.to_cdata( ut_utils.convert_collection( l_errors ) ) );
129117
ut_utils.append_to_list( l_results, '</system-err>');
130118
else
131119
ut_utils.append_to_list( l_results, '<system-err/>');

source/reporters/ut_sonar_test_reporter.tpb

Lines changed: 2 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -43,23 +43,18 @@ create or replace type body ut_sonar_test_reporter is
4343
end;
4444

4545
procedure print_test_results(a_test ut_test) is
46-
c_cdata_start_tag constant varchar2(30) := '<![CDATA[';
47-
c_cdata_end_tag constant varchar2(10) := ']]>';
48-
c_cdata_end_tag_wrap constant varchar2(30) := ']]'||c_cdata_end_tag||c_cdata_start_tag||'>';
4946
l_results ut_varchar2_rows := ut_varchar2_rows();
5047
begin
5148
ut_utils.append_to_list( l_results, '<testCase name="'||dbms_xmlgen.convert(a_test.name)||'" duration="'||round(a_test.execution_time()*1000,0)||'" >');
5249
if a_test.result = ut_utils.gc_disabled then
5350
ut_utils.append_to_list( l_results, '<skipped message="skipped"/>');
5451
elsif a_test.result = ut_utils.gc_error then
5552
ut_utils.append_to_list( l_results, '<error message="encountered errors">');
56-
ut_utils.append_to_list( l_results, c_cdata_start_tag);
57-
ut_utils.append_to_list( l_results, replace( ut_utils.table_to_clob(a_test.get_error_stack_traces()), c_cdata_end_tag, c_cdata_end_tag_wrap ));
58-
ut_utils.append_to_list( l_results, c_cdata_end_tag);
53+
ut_utils.append_to_list( l_results, ut_utils.to_cdata( ut_utils.convert_collection( a_test.get_error_stack_traces() ) ) );
5954
ut_utils.append_to_list( l_results, '</error>');
6055
elsif a_test.result > ut_utils.gc_success then
6156
ut_utils.append_to_list( l_results, '<failure message="some expectations have failed">');
62-
ut_utils.append_to_list( l_results, a_test.get_failed_expectations_cdata() );
57+
ut_utils.append_to_list( l_results, ut_utils.to_cdata( a_test.get_failed_expectation_lines() ) );
6358
ut_utils.append_to_list( l_results, '</failure>');
6459
end if;
6560
ut_utils.append_to_list( l_results, '</testCase>');

source/reporters/ut_tfs_junit_reporter.tpb

Lines changed: 33 additions & 44 deletions
Original file line numberDiff line numberDiff line change
@@ -28,13 +28,8 @@ create or replace type body ut_tfs_junit_reporter is
2828
end;
2929

3030
member procedure junit_version_one(self in out nocopy ut_tfs_junit_reporter,a_run in ut_run) is
31-
c_cdata_start_tag constant varchar2(30) := '<![CDATA[';
32-
c_cdata_end_tag constant varchar2(10) := ']]>';
33-
c_cdata_end_tag_wrap constant varchar2(30) := ']]'||c_cdata_end_tag||c_cdata_start_tag||'>';
3431
l_suite_id integer := 0;
35-
l_tests_count integer := a_run.results_count.disabled_count + a_run.results_count.success_count +
36-
a_run.results_count.failure_count + a_run.results_count.errored_count;
37-
32+
3833
function get_common_suite_attributes(a_item ut_suite_item) return varchar2 is
3934
begin
4035
return ' errors="' ||a_item.results_count.errored_count || '"' ||
@@ -71,14 +66,12 @@ create or replace type body ut_tfs_junit_reporter is
7166

7267
if a_test.result = ut_utils.gc_error then
7368
ut_utils.append_to_list( l_results, '<error type="error" message="Error while executing '||a_test.name||'">');
74-
ut_utils.append_to_list( l_results, c_cdata_start_tag);
75-
ut_utils.append_to_list( l_results, replace( ut_utils.table_to_clob(a_test.get_error_stack_traces()), c_cdata_end_tag, c_cdata_end_tag_wrap ));
76-
ut_utils.append_to_list( l_results, c_cdata_end_tag);
69+
ut_utils.append_to_list( l_results, ut_utils.to_cdata( ut_utils.convert_collection( a_test.get_error_stack_traces() ) ) );
7770
ut_utils.append_to_list( l_results, '</error>');
7871
-- Do not count error as failure
7972
elsif a_test.result = ut_utils.gc_failure then
8073
ut_utils.append_to_list( l_results, '<failure type="failure" message="Test '||a_test.name||' failed">');
81-
ut_utils.append_to_list( l_results, a_test.get_failed_expectations_cdata() );
74+
ut_utils.append_to_list( l_results, ut_utils.to_cdata( a_test.get_failed_expectation_lines() ) );
8275
ut_utils.append_to_list( l_results, '</failure>');
8376
end if;
8477

@@ -102,43 +95,39 @@ create or replace type body ut_tfs_junit_reporter is
10295
end if;
10396
end loop;
10497

105-
if a_suite is of(ut_suite) then
106-
a_suite_id := a_suite_id + 1;
107-
self.print_text('<testsuite tests="' || l_tests_count || '"' || ' id="' || a_suite_id || '"' || ' package="' ||
108-
dbms_xmlgen.convert(a_suite.path) || '" ' || get_common_suite_attributes(a_suite) || '>');
109-
self.print_text('<properties/>');
110-
for i in 1 .. a_suite.items.count loop
111-
if a_suite.items(i) is of(ut_test) then
112-
print_test_results(treat(a_suite.items(i) as ut_test));
113-
end if;
114-
end loop;
115-
l_suite := treat(a_suite as ut_suite);
116-
l_outputs := l_suite.get_serveroutputs();
117-
if l_outputs is not null and l_outputs != empty_clob() then
118-
ut_utils.append_to_list( l_results, '<system-out>');
119-
ut_utils.append_to_list( l_results, c_cdata_start_tag);
120-
ut_utils.append_to_list( l_results, replace( l_outputs, c_cdata_end_tag, c_cdata_end_tag_wrap ) );
121-
ut_utils.append_to_list( l_results, c_cdata_end_tag);
122-
ut_utils.append_to_list( l_results, '</system-out>');
123-
else
124-
ut_utils.append_to_list( l_results, '<system-out/>');
125-
end if;
98+
if a_suite is of(ut_suite) then
99+
a_suite_id := a_suite_id + 1;
100+
self.print_text('<testsuite tests="' || l_tests_count || '"' || ' id="' || a_suite_id || '"' || ' package="' ||
101+
dbms_xmlgen.convert(a_suite.path) || '" ' || get_common_suite_attributes(a_suite) || '>');
102+
self.print_text('<properties/>');
103+
for i in 1 .. a_suite.items.count loop
104+
if a_suite.items(i) is of(ut_test) then
105+
print_test_results(treat(a_suite.items(i) as ut_test));
106+
end if;
107+
end loop;
108+
l_suite := treat(a_suite as ut_suite);
109+
l_outputs := l_suite.get_serveroutputs();
110+
if l_outputs is not null and l_outputs != empty_clob() then
111+
ut_utils.append_to_list( l_results, '<system-out>');
112+
ut_utils.append_to_list( l_results, ut_utils.to_cdata( l_suite.get_serveroutputs() ) );
113+
ut_utils.append_to_list( l_results, '</system-out>');
114+
else
115+
ut_utils.append_to_list( l_results, '<system-out/>');
116+
end if;
126117

127-
l_errors := l_suite.get_error_stack_traces();
128-
if l_errors is not empty then
129-
ut_utils.append_to_list( l_results, '<system-err>');
130-
ut_utils.append_to_list( l_results, c_cdata_start_tag);
131-
ut_utils.append_to_list( l_results, replace( ut_utils.table_to_clob(l_errors), c_cdata_end_tag, c_cdata_end_tag_wrap ) );
132-
ut_utils.append_to_list( l_results, c_cdata_end_tag);
133-
ut_utils.append_to_list( l_results, '</system-err>');
134-
else
135-
ut_utils.append_to_list( l_results, '<system-err/>');
136-
end if;
137-
ut_utils.append_to_list( l_results, '</testsuite>');
118+
l_errors := l_suite.get_error_stack_traces();
119+
if l_errors is not empty then
120+
ut_utils.append_to_list( l_results, '<system-err>');
121+
ut_utils.append_to_list( l_results, ut_utils.to_cdata( ut_utils.convert_collection( l_errors ) ) );
122+
ut_utils.append_to_list( l_results, '</system-err>');
123+
else
124+
ut_utils.append_to_list( l_results, '<system-err/>');
125+
end if;
126+
ut_utils.append_to_list( l_results, '</testsuite>');
138127

139-
self.print_text_lines(l_results);
128+
self.print_text_lines(l_results);
140129
end if;
141-
end;
130+
end;
142131

143132
begin
144133
l_suite_id := 0;

test/ut3_user/api/test_ut_run.pkb

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -734,8 +734,8 @@ Failures:%
734734
procedure remove_time_from_results(a_results in out nocopy ut3.ut_varchar2_list) is
735735
begin
736736
for i in 1 .. a_results.count loop
737-
a_results(i) := regexp_replace(a_results(i),'\[[0-9]*\.[0-9]+ sec\]','');
738-
a_results(i) := regexp_replace(a_results(i),'Finished in [0-9]*\.[0-9]+ seconds','');
737+
a_results(i) := regexp_replace(a_results(i),'\[[0-9]*[\.,][0-9]+ sec\]','');
738+
a_results(i) := regexp_replace(a_results(i),'Finished in [0-9]*[\.,][0-9]+ seconds','');
739739
end loop;
740740
end;
741741

0 commit comments

Comments
 (0)