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

Skip to content

Commit 15425a3

Browse files
committed
enriched output messages to be
1 parent b02f997 commit 15425a3

6 files changed

Lines changed: 138 additions & 13 deletions

File tree

source/core/types/ut_executable.tpb

Lines changed: 17 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -76,6 +76,7 @@ create or replace type body ut_executable is
7676
l_completed_without_errors boolean := true;
7777
l_start_transaction_id varchar2(250);
7878
l_end_transaction_id varchar2(250);
79+
l_client_info varchar2(200);
7980
procedure save_dbms_output is
8081
l_status number;
8182
l_line varchar2(32767);
@@ -96,6 +97,21 @@ create or replace type body ut_executable is
9697
begin
9798
if self.is_defined() then
9899
l_start_transaction_id := dbms_transaction.local_transaction_id(true);
100+
101+
l_client_info := case
102+
when a_item is of(ut_test) then
103+
'Test: '
104+
else
105+
'Suite: '
106+
end || a_item.name || case
107+
when self.associated_event_name = ut_utils.gc_test_execute then
108+
null
109+
else
110+
' (' || self.associated_event_name || ')'
111+
end;
112+
-- report to application_info
113+
ut_utils.set_client_info(l_client_info);
114+
99115
--listener - before call to executable
100116
a_listener.fire_before_event(self.associated_event_name, a_item);
101117

@@ -144,6 +160,7 @@ create or replace type body ut_executable is
144160
if l_start_transaction_id != l_end_transaction_id or l_end_transaction_id is null then
145161
a_item.add_transaction_invalidator(self.form_name());
146162
end if;
163+
ut_utils.set_client_info(null);
147164
end if;
148165

149166
return l_completed_without_errors;

source/core/types/ut_suite.tpb

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -52,6 +52,9 @@ create or replace type body ut_suite as
5252
end;
5353
begin
5454
ut_utils.debug_log('ut_suite.execute');
55+
56+
ut_utils.set_action('Suite: '||self.object_name);
57+
5558
a_listener.fire_before_event(ut_utils.gc_suite,self);
5659

5760
self.start_time := current_timestamp;
@@ -92,6 +95,8 @@ create or replace type body ut_suite as
9295
self.calc_execution_result();
9396
self.end_time := current_timestamp;
9497
a_listener.fire_after_event(ut_utils.gc_suite,self);
98+
99+
ut_utils.set_action(null);
95100

96101
return l_suite_step_without_errors;
97102
end;

source/core/types/ut_test.tpb

Lines changed: 0 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -54,9 +54,6 @@ create or replace type body ut_test as
5454

5555
a_listener.fire_before_event(ut_utils.gc_test,self);
5656
self.start_time := current_timestamp;
57-
58-
-- report to application_info
59-
ut_utils.set_action(self.object_owner||'.'||self.object_name||'.'||self.name);
6057

6158
if self.get_disabled_flag() then
6259
self.result := ut_utils.tr_disabled;

source/core/ut_utils.pkb

Lines changed: 7 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -341,9 +341,14 @@ create or replace package body ut_utils is
341341
return l_result;
342342
end;
343343

344-
procedure set_action(a_test_name in varchar2) is
344+
procedure set_action(a_text in varchar2) is
345345
begin
346-
dbms_application_info.set_module('utPLSQL', a_test_name);
346+
dbms_application_info.set_module('utPLSQL', a_text);
347+
end;
348+
349+
procedure set_client_info(a_text in varchar2) is
350+
begin
351+
dbms_application_info.set_client_info(a_text);
347352
end;
348353

349354
function to_xpath(a_list varchar2, a_ancestors varchar2 := '/*/') return varchar2 is

source/core/ut_utils.pks

Lines changed: 6 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -222,7 +222,12 @@ create or replace package ut_utils authid definer is
222222
/**
223223
* Set session's action and module using dbms_application_info
224224
*/
225-
procedure set_action(a_test_name in varchar2);
225+
procedure set_action(a_text in varchar2);
226+
227+
/**
228+
* Set session's client info using dbms_application_info
229+
*/
230+
procedure set_client_info(a_text in varchar2);
226231

227232
function to_xpath(a_list varchar2, a_ancestors varchar2 := '/*/') return varchar2;
228233

tests/ut_test/ut_test.ApplicationInfoOnExecution.sql

Lines changed: 103 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -1,27 +1,83 @@
11
create or replace package ut_output_tests
22
as
33
--%suite
4+
5+
gv_before_all_client_info varchar2(200);
6+
gv_before_each_client_info varchar2(200);
7+
gv_before_test_client_info varchar2(200);
8+
gv_after_test_client_info varchar2(200);
9+
gv_after_each_client_info varchar2(200);
10+
gv_after_all_client_info varchar2(200);
411

512
--%test
6-
procedure ut_passing_test;
13+
--%beforetest(before_test)
14+
--%aftertest(after_test)
15+
procedure the_test;
16+
17+
--%beforeall
18+
procedure beforeall;
19+
20+
--%beforeeach
21+
procedure beforeeach;
22+
23+
procedure before_test;
24+
procedure after_test;
25+
26+
--%aftereach
27+
procedure after_each;
28+
29+
--%afterall
30+
procedure afterall;
731

832
end;
933
/
1034

1135
create or replace package body ut_output_tests
1236
as
1337

14-
procedure ut_passing_test
38+
procedure the_test
1539
as
1640
l_module_name varchar2(4000);
1741
l_action_name varchar2(4000);
42+
l_client_info varchar2(4000);
1843
begin
1944
--Generate empty output
2045
dbms_output.put_line('');
2146
ut.expect(1,'Test 1 Should Pass').to_equal(1);
2247
dbms_application_info.read_module(module_name => l_module_name, action_name => l_action_name);
48+
dbms_application_info.read_client_info(l_client_info);
2349
ut.expect(l_module_name).to_equal('utPLSQL');
24-
ut.expect(l_action_name).to_be_like('%.ut_output_tests.ut_passing_test');
50+
ut.expect(l_action_name).to_be_like('Suite: ut_output_tests');
51+
ut.expect(l_client_info).to_be_like('Test: the_test');
52+
end;
53+
54+
procedure beforeall is
55+
begin
56+
dbms_application_info.read_client_info(gv_before_all_client_info);
57+
end;
58+
59+
procedure beforeeach is
60+
begin
61+
dbms_application_info.read_client_info(gv_before_each_client_info);
62+
end;
63+
64+
procedure before_test is
65+
begin
66+
dbms_application_info.read_client_info(gv_before_test_client_info);
67+
end;
68+
procedure after_test is
69+
begin
70+
dbms_application_info.read_client_info(gv_after_test_client_info);
71+
end;
72+
73+
procedure after_each is
74+
begin
75+
dbms_application_info.read_client_info(gv_after_each_client_info);
76+
end;
77+
78+
procedure afterall is
79+
begin
80+
dbms_application_info.read_client_info(gv_after_all_client_info);
2581
end;
2682

2783
end;
@@ -31,6 +87,8 @@ declare
3187
l_output_data dbms_output.chararr;
3288
l_num_lines integer := 100000;
3389
l_output clob;
90+
l_result boolean := true;
91+
l_client_info varchar2(4000);
3492
begin
3593
--act
3694
ut.run('ut_output_tests');
@@ -42,16 +100,54 @@ begin
42100
dbms_lob.append(l_output,l_output_data(i));
43101
end loop;
44102

45-
if l_output like '%0 failed, 0 errored, 0 disabled, 0 warning(s)%' then
46-
:test_result := ut_utils.tr_success;
103+
gv_before_all_client_info varchar2(200);
104+
gv_before_each_client_info varchar2(200);
105+
gv_before_test_client_info varchar2(200);
106+
gv_after_test_client_info varchar2(200);
107+
gv_after_each_client_info varchar2(200);
108+
gv_after_all_client_info varchar2(200);
109+
110+
execute immediate 'begin :i := ut_output_tests.gv_before_all_client_info; end;' into l_client_info;
111+
if not nvl(l_client_info = 'Test: ut_output_tests (before all)', false) then
112+
dbms_output.put_line('Wrong before all text: '||l_client_info);
113+
l_result := false;
47114
end if;
48-
49-
if :test_result != ut_utils.tr_success or :test_result is null then
115+
execute immediate 'begin :i := ut_output_tests.gv_before_each_client_info; end;' into l_client_info;
116+
if not nvl(l_client_info = 'Test: ut_output_tests (before each)', false) then
117+
dbms_output.put_line('Wrong before each text: '||l_client_info);
118+
l_result := false;
119+
end if;
120+
execute immediate 'begin :i := ut_output_tests.gv_before_test_client_info; end;' into l_client_info;
121+
if not nvl(l_client_info = 'Test: ut_output_tests (before test)', false) then
122+
dbms_output.put_line('Wrong before test text: '||l_client_info);
123+
l_result := false;
124+
end if;
125+
execute immediate 'begin :i := ut_output_tests.gv_after_test_client_info; end;' into l_client_info;
126+
if not nvl(l_client_info = 'Test: ut_output_tests (after test)', false) then
127+
dbms_output.put_line('Wrong after test text: '||l_client_info);
128+
l_result := false;
129+
end if;
130+
execute immediate 'begin :i := ut_output_tests.gv_after_each_client_info; end;' into l_client_info;
131+
if not nvl(l_client_info = 'Test: ut_output_tests (after each)', false) then
132+
dbms_output.put_line('Wrong after each text: '||l_client_info);
133+
l_result := false;
134+
end if;
135+
execute immediate 'begin :i := ut_output_tests.gv_after_all_client_info; end;' into l_client_info;
136+
if not nvl(l_client_info = 'Test: ut_output_tests (after all)', false) then
137+
dbms_output.put_line('Wrong after all text: '||l_client_info);
138+
l_result := false;
139+
end if;
140+
141+
if nvl(l_output like '%0 failed, 0 errored, 0 disabled, 0 warning(s)%',false) then
142+
l_result := false;
50143
for i in 1 .. l_num_lines loop
51144
dbms_output.put_line(l_output_data(i));
52145
end loop;
53146
dbms_output.put_line('Failed: Wrong output');
54147
end if;
148+
if l_result then
149+
:test_result := ut_utils.tr_success;
150+
end if;
55151
end;
56152
/
57153

0 commit comments

Comments
 (0)