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

Skip to content

Commit 15ff01f

Browse files
committed
Now each reporter can use both capabilities:
- putting atext line to output - putting a bug clob text Added support for clob output for both dbms_output and dbms_pipe). Separated reporting line by line from reporting big chunks of work (clob).
1 parent 40bc085 commit 15ff01f

18 files changed

Lines changed: 170 additions & 55 deletions

examples/ut_custom_reporter.tpb

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -16,10 +16,10 @@ create or replace type body ut_custom_reporter is
1616
return tab_str;
1717
end tab;
1818

19-
overriding member procedure print(a_text varchar2) is
19+
overriding member procedure print_text(a_text varchar2) is
2020
begin
21-
(self as ut_dbms_output_suite_reporter).print(tab || a_text);
22-
end print;
21+
(self as ut_dbms_output_suite_reporter).print_text(tab || a_text);
22+
end;
2323

2424
overriding member procedure before_suite(self in out nocopy ut_custom_reporter, a_suite ut_object) as
2525
begin

examples/ut_custom_reporter.tps

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -6,7 +6,7 @@ create or replace type ut_custom_reporter under ut_dbms_output_suite_reporter
66
-- Member functions and procedures
77
constructor function ut_custom_reporter(a_tab_size integer default 4, a_output ut_output default ut_output_dbms_output() ) return self as result,
88
member function tab(self in ut_custom_reporter) return varchar2,
9-
overriding member procedure print(a_text varchar2),
9+
overriding member procedure print_text(a_text varchar2),
1010
overriding member procedure before_suite(self in out nocopy ut_custom_reporter, a_suite ut_object),
1111
overriding member procedure before_test(self in out nocopy ut_custom_reporter, a_test ut_object),
1212
overriding member procedure on_assert_process(self in out nocopy ut_custom_reporter, a_assert ut_object),

source/core/types/ut_output.tps

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -3,7 +3,8 @@ create or replace type ut_output as object (
33
output_id varchar2(128),
44
final member function generate_output_id return varchar2,
55
not instantiable member procedure open(self in out nocopy ut_output),
6-
not instantiable member procedure send(self in out nocopy ut_output, a_text clob),
6+
not instantiable member procedure send_line(self in out nocopy ut_output, a_text varchar2),
7+
not instantiable member procedure send_clob(self in out nocopy ut_output, a_text clob),
78
not instantiable member procedure close(self in out nocopy ut_output)
89
) not final not instantiable
910
/

source/core/types/ut_output_dbms_output.tpb

Lines changed: 8 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -12,16 +12,15 @@ create or replace type body ut_output_dbms_output as
1212
null;
1313
end;
1414

15-
overriding member procedure send(self in out nocopy ut_output_dbms_output, a_text clob) is
16-
l_text_part varchar2(32767 byte);
17-
--we're assuming max of 2 bytes per char
18-
c_size_limit_chars constant integer := (32767/2);
19-
i integer := 0;
15+
overriding member procedure send_line(self in out nocopy ut_output_dbms_output, a_text varchar2) is
2016
begin
21-
while i < length(a_text) loop
22-
l_text_part := substr( a_text, i + 1, c_size_limit_chars );
23-
dbms_output.put_line(l_text_part);
24-
i := i + c_size_limit_chars;
17+
dbms_output.put_line(a_text);
18+
end;
19+
20+
overriding member procedure send_clob(self in out nocopy ut_output_dbms_output, a_text clob) is
21+
begin
22+
for i in (select column_value as text from table(ut_utils.clob_to_table(a_text)) ) loop
23+
dbms_output.put_line(i.text);
2524
end loop;
2625
end;
2726

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,8 @@
11
create or replace type ut_output_dbms_output under ut_output (
22
constructor function ut_output_dbms_output(self in out nocopy ut_output_dbms_output) return self as result,
33
overriding member procedure open(self in out nocopy ut_output_dbms_output),
4-
overriding member procedure send(self in out nocopy ut_output_dbms_output, a_text clob),
4+
overriding member procedure send_line(self in out nocopy ut_output_dbms_output, a_text varchar2),
5+
overriding member procedure send_clob(self in out nocopy ut_output_dbms_output, a_text clob),
56
overriding member procedure close(self in out nocopy ut_output_dbms_output)
67
) not final
78
/

source/core/types/ut_output_dbms_pipe.tpb

Lines changed: 7 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -16,15 +16,20 @@ create or replace type body ut_output_dbms_pipe as
1616
l_flag := dbms_pipe.create_pipe(self.output_id);
1717
end;
1818

19-
overriding member procedure send(self in out nocopy ut_output_dbms_pipe, a_text clob) is
19+
overriding member procedure send_line(self in out nocopy ut_output_dbms_pipe, a_text varchar2) is
20+
begin
21+
self.send_clob(a_text);
22+
end;
23+
24+
overriding member procedure send_clob(self in out nocopy ut_output_dbms_pipe, a_text clob) is
2025
c_size_limit_chars constant integer := ut_output_pipe_helper.gc_size_limit_chars;
2126
l_text_part ut_output_pipe_helper.t_pipe_item;
2227
i integer := 0;
2328
begin
2429
--split test into pieces of a size valid for pipe and send to pipe
2530
while i < length(a_text) loop
2631
l_text_part := substr( a_text, i + 1, c_size_limit_chars );
27-
ut_output_pipe_helper.send( self.output_id, l_text_part);
32+
ut_output_pipe_helper.send_text( self.output_id, l_text_part);
2833
i := i + c_size_limit_chars;
2934
end loop;
3035
--SEND is closed by a EOM message

source/core/types/ut_output_dbms_pipe.tps

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,8 @@
11
create or replace type ut_output_dbms_pipe under ut_output (
22
constructor function ut_output_dbms_pipe(self in out nocopy ut_output_dbms_pipe) return self as result,
33
overriding member procedure open(self in out nocopy ut_output_dbms_pipe),
4-
overriding member procedure send(self in out nocopy ut_output_dbms_pipe, a_text clob),
4+
overriding member procedure send_line(self in out nocopy ut_output_dbms_pipe, a_text varchar2),
5+
overriding member procedure send_clob(self in out nocopy ut_output_dbms_pipe, a_text clob),
56
overriding member procedure close(self in out nocopy ut_output_dbms_pipe),
67
static function get_lines(a_output_id varchar2, a_timeout_sec integer := 60*60*4) return ut_output_clob_list pipelined
78
) not final
Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,2 @@
1+
create or replace type ut_output_varchar2_list as table of varchar2(32767)
2+
/

source/core/types/ut_reporter.tpb

Lines changed: 8 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -7,10 +7,15 @@ create or replace type body ut_reporter is
77
return;
88
end;
99

10-
member procedure print(self in out nocopy ut_reporter, a_text varchar2) is
10+
member procedure print_text(self in out nocopy ut_reporter, a_text varchar2) is
1111
begin
12-
self.output.send(a_text);
13-
end print;
12+
self.output.send_line(a_text);
13+
end;
14+
15+
member procedure print_clob(self in out nocopy ut_reporter, a_text clob) is
16+
begin
17+
self.output.send_clob(a_text);
18+
end;
1419

1520
member procedure before_run(self in out nocopy ut_reporter, a_suites in ut_objects_list) is
1621
begin

source/core/types/ut_reporter.tps

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -4,7 +4,8 @@ create or replace type ut_reporter force as object
44
output ut_output,
55
constructor function ut_reporter(self in out nocopy ut_reporter, a_output ut_output default ut_output_dbms_output()) return self as result,
66

7-
member procedure print(self in out nocopy ut_reporter, a_text varchar2),
7+
member procedure print_text(self in out nocopy ut_reporter, a_text varchar2),
8+
member procedure print_clob(self in out nocopy ut_reporter, a_text clob),
89

910
-- run hooks
1011
member procedure before_run(self in out nocopy ut_reporter, a_suites in ut_objects_list),

0 commit comments

Comments
 (0)