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

Skip to content

Commit 7fbf103

Browse files
committed
ut_teamcity_reporter_printer implementation and fixes
1 parent 16d4e8f commit 7fbf103

5 files changed

Lines changed: 177 additions & 25 deletions

File tree

source/install.sql

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -57,6 +57,7 @@ whenever oserror exit failure rollback
5757
@@ut_assert.pks
5858
@@ut_annotations.pks
5959
@@ut_suite_manager.pks
60+
@@ut_teamcity_reporter_printer.pks
6061

6162
@@ut_utils.pkb
6263
@@types/ut_assert_result.tpb
@@ -108,6 +109,7 @@ whenever oserror exit failure rollback
108109
@@ut_assert.pkb
109110
@@ut_annotations.pkb
110111
@@ut_suite_manager.pkb
112+
@@ut_teamcity_reporter_printer.pkb
111113

112114

113115
prompt Validating installation

source/types/ut_teamcity_reporter.tpb

Lines changed: 22 additions & 25 deletions
Original file line numberDiff line numberDiff line change
@@ -8,16 +8,12 @@ create or replace type body ut_teamcity_reporter is
88

99
overriding member procedure before_suite(self in out nocopy ut_teamcity_reporter, a_suite in ut_object) is
1010
begin
11-
dbms_output.put_line('##teamcity[testSuiteStarted name=''' ||
12-
coalesce(treat(a_suite as ut_test_object).name, treat(a_suite as ut_test_object).object_name) ||
13-
''']');
11+
ut_teamcity_reporter_printer.test_suite_started(a_suite_name => treat(a_suite as ut_test_object).object_name);
1412
end;
1513

1614
overriding member procedure after_suite(self in out nocopy ut_teamcity_reporter, a_suite in ut_object) is
1715
begin
18-
dbms_output.put_line('##teamcity[testSuiteFinished name=''' ||
19-
coalesce(treat(a_suite as ut_test_object).name, treat(a_suite as ut_test_object).object_name) ||
20-
''']');
16+
ut_teamcity_reporter_printer.test_suite_finished(a_suite_name => treat(a_suite as ut_test_object).object_name);
2117
end;
2218

2319
overriding member procedure before_suite_item(self in out nocopy ut_teamcity_reporter, a_suite in ut_object, a_item_index pls_integer) is
@@ -28,8 +24,8 @@ create or replace type body ut_teamcity_reporter is
2824
l_item := treat(l_suite.items(a_item_index) as ut_test_object);
2925

3026
if l_item is of(ut_test) then
31-
dbms_output.put_line('##teamcity[testStarted name=''' || l_suite.object_name || '.' || l_item.object_name ||
32-
''']');
27+
null;
28+
--ut_teamcity_reporter_printer.test_started(a_test_name => l_suite.object_name || ':' || l_item.object_name);
3329
end if;
3430
l_suite := null;
3531
l_item := null;
@@ -51,36 +47,37 @@ create or replace type body ut_teamcity_reporter is
5147

5248
l_test := treat(l_item as ut_test);
5349

54-
l_test_full_name := l_suite.object_name || '.' || l_item.object_name;
50+
l_test_full_name := nvl(replace(l_suite.name, '.'), l_suite.object_name) || ':' ||
51+
nvl(replace(l_item.name, '.'), l_test.object_name);
52+
53+
--l_test_full_name := nvl(l_suite.object_name || ':' || l_item.object_name;
54+
5555
if l_test.items is not null and l_test.items.count > 0 then
5656
for i in 1 .. l_test.items.count loop
5757

5858
l_assert := treat(l_test.items(i) as ut_assert_result);
5959

60-
l_assert_full_name := l_test_full_name || '.assert' || to_char(i);
60+
l_assert_full_name := l_test_full_name || '.' || nvl(replace(l_assert.name, '.'), 'assert' || to_char(i));
6161

62-
dbms_output.put_line('##teamcity[testStarted name=''' || l_assert_full_name || ''']');
63-
--l_msg_str := '##teamcity[testStarted name=''' || l_suite.object_name || '.' || l_item.object_name ||'.assert'||i||''']';
64-
--''' duration=''' || trunc(l_test.execution_time*1e3) ||
62+
ut_teamcity_reporter_printer.test_started(a_test_name => l_assert_full_name);
6563

66-
--l_msg_str := '##teamcity[message text=''' || l_assert.message || '''';
67-
68-
if l_assert.result = ut_utils.tr_success then
69-
null;
70-
else
71-
dbms_output.put_line('##teamcity[testFailed name=''' || l_assert_full_name || ''' message=''' ||
72-
l_assert.message || ''']');
64+
if nvl(l_assert.result, ut_utils.tr_error) != ut_utils.tr_success then
65+
ut_teamcity_reporter_printer.test_failed(a_test_name => l_assert_full_name, a_msg => l_assert.message);
7366
end if;
74-
dbms_output.put_line('##teamcity[testFinished name=''' || l_assert_full_name || ''']');
67+
68+
ut_teamcity_reporter_printer.test_finished(a_test_name => l_assert_full_name);
7569

7670
end loop;
7771
end if;
7872

79-
if l_test.result != ut_utils.tr_success or l_test.result is null then
80-
dbms_output.put_line('##teamcity[testFailed name=''' || l_test_full_name || ''']');
73+
/*
74+
if nvl(l_test.result, ut_utils.tr_error) != ut_utils.tr_success then
75+
ut_teamcity_reporter_printer.test_failed(a_test_name => l_test_full_name);
8176
end if;
82-
dbms_output.put_line('##teamcity[testFinished name=''' || l_test_full_name || ''' duration=''' ||
83-
trunc(l_test.execution_time * 1e3) || ''']');
77+
78+
ut_teamcity_reporter_printer.test_finished(a_test_name => l_test_full_name
79+
,a_test_duration_milisec => trunc(l_test.execution_time * 1e3));
80+
*/
8481
end if;
8582
end;
8683

source/uninstall.sql

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,5 @@
1+
drop package ut_teamcity_reporter_printer;
2+
13
drop package ut_suite_manager;
24

35
drop package ut_assert;
Lines changed: 132 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,132 @@
1+
create or replace package body ut_teamcity_reporter_printer is
2+
3+
subtype t_prop_index is varchar2(2000 char);
4+
type t_props is table of varchar2(32767) index by t_prop_index;
5+
6+
function escape_value(a_value in varchar2) return varchar2 is
7+
begin
8+
return regexp_replace(a_value, '(''|"|' || chr(13) || '|' || chr(10) || '|[|])', '|\1');
9+
end;
10+
11+
procedure message(a_command in varchar2, a_props t_props default cast(null as t_props)) is
12+
l_message varchar2(32767);
13+
l_index t_prop_index;
14+
l_value varchar2(32767);
15+
begin
16+
l_message := '##teamcity[' || a_command || ' timestamp=''' ||
17+
to_char(systimestamp, 'YYYY-MM-DD"T"HH24:MI:ss.FFTZHTZM') || '''';
18+
19+
l_index := a_props.first;
20+
while l_index is not null loop
21+
if a_props(l_index) is not null then
22+
l_value := escape_value(a_props(l_index));
23+
l_message := l_message || ' ' || l_index || '=''' || l_value || '''';
24+
end if;
25+
l_index := a_props.next(l_index);
26+
end loop;
27+
l_message := l_message || ']';
28+
sys.dbms_output.put_line(l_message);
29+
30+
end message;
31+
32+
procedure block_opened(a_name varchar2, a_flow_id varchar2 default null) is
33+
l_props t_props;
34+
begin
35+
l_props('name') := a_name;
36+
l_props('flowId') := a_flow_id;
37+
message('blockOpened', l_props);
38+
end;
39+
40+
procedure block_closed(a_name varchar2, a_flow_id varchar2 default null) is
41+
l_props t_props;
42+
begin
43+
l_props('name') := a_name;
44+
l_props('flowId') := a_flow_id;
45+
message('blockClosed', l_props);
46+
end;
47+
48+
procedure test_suite_started(a_suite_name varchar2, a_flow_id varchar2 default null) is
49+
l_props t_props;
50+
begin
51+
l_props('name') := a_suite_name;
52+
l_props('flowId') := a_flow_id;
53+
message('testSuiteStarted', l_props);
54+
end;
55+
procedure test_suite_finished(a_suite_name varchar2, a_flow_id varchar2 default null) is
56+
l_props t_props;
57+
begin
58+
l_props('name') := a_suite_name;
59+
l_props('flowId') := a_flow_id;
60+
message('testSuiteFinished', l_props);
61+
end;
62+
63+
procedure test_started(a_test_name varchar2, a_capture_standard_output boolean default null, a_flow_id varchar2 default null) is
64+
l_props t_props;
65+
begin
66+
l_props('name') := a_test_name;
67+
l_props('captureStandardOutput') := case a_capture_standard_output
68+
when true then
69+
'true'
70+
when false then
71+
'false'
72+
else
73+
null
74+
end;
75+
l_props('flowId') := a_flow_id;
76+
message('testStarted', l_props);
77+
end;
78+
79+
procedure test_finished(a_test_name varchar2, a_test_duration_milisec number default null, a_flow_id varchar2 default null) is
80+
l_props t_props;
81+
begin
82+
l_props('name') := a_test_name;
83+
l_props('duration') := a_test_duration_milisec;
84+
l_props('flowId') := a_flow_id;
85+
message('testFinished', l_props);
86+
end;
87+
88+
procedure test_ignored(a_test_name varchar2, a_flow_id varchar2 default null) is
89+
l_props t_props;
90+
begin
91+
l_props('name') := a_test_name;
92+
l_props('flowId') := a_flow_id;
93+
message('testIgnored', l_props);
94+
end;
95+
procedure test_failed(a_test_name varchar2, a_msg in varchar2 default null, a_details varchar2 default null, a_flow_id varchar2 default null) is
96+
l_props t_props;
97+
begin
98+
l_props('name') := a_test_name;
99+
l_props('message') := a_msg;
100+
l_props('details') := a_details;
101+
l_props('flowId') := a_flow_id;
102+
message('testFailed', l_props);
103+
end;
104+
procedure test_std_out(a_test_name varchar2, a_out in varchar2, a_flow_id in varchar2 default null) is
105+
l_props t_props;
106+
begin
107+
l_props('name') := a_test_name;
108+
l_props('out') := a_out;
109+
l_props('flowId') := a_flow_id;
110+
message('testStdOut', l_props);
111+
end;
112+
procedure test_std_err(a_test_name varchar2, a_out in varchar2, a_flow_id in varchar2 default null) is
113+
l_props t_props;
114+
begin
115+
l_props('name') := a_test_name;
116+
l_props('out') := a_out;
117+
l_props('flowId') := a_flow_id;
118+
message('testStdErr', l_props);
119+
end;
120+
121+
procedure custom_message(a_text in varchar2, a_status in varchar2, a_error_deatils in varchar2 default null, a_flow_id in varchar2 default null) is
122+
l_props t_props;
123+
begin
124+
l_props('text') := a_text;
125+
l_props('status') := a_status;
126+
l_props('errorDetails') := a_error_deatils;
127+
l_props('flowId') := a_flow_id;
128+
message('message', l_props);
129+
end;
130+
131+
end ut_teamcity_reporter_printer;
132+
/
Lines changed: 19 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,19 @@
1+
create or replace package ut_teamcity_reporter_printer is
2+
3+
procedure block_opened(a_name varchar2, a_flow_id varchar2 default null);
4+
procedure block_closed(a_name varchar2, a_flow_id varchar2 default null);
5+
6+
procedure test_suite_started(a_suite_name varchar2, a_flow_id varchar2 default null);
7+
procedure test_suite_finished(a_suite_name varchar2, a_flow_id varchar2 default null);
8+
9+
procedure test_started(a_test_name varchar2, a_capture_standard_output boolean default null, a_flow_id varchar2 default null);
10+
procedure test_finished(a_test_name varchar2, a_test_duration_milisec number default null, a_flow_id varchar2 default null);
11+
procedure test_ignored(a_test_name varchar2, a_flow_id varchar2 default null);
12+
procedure test_failed(a_test_name varchar2, a_msg in varchar2 default null, a_details varchar2 default null, a_flow_id varchar2 default null);
13+
procedure test_std_out(a_test_name varchar2, a_out in varchar2, a_flow_id in varchar2 default null);
14+
procedure test_std_err(a_test_name varchar2, a_out in varchar2, a_flow_id in varchar2 default null);
15+
16+
procedure custom_message(a_text in varchar2, a_status in varchar2, a_error_deatils in varchar2 default null, a_flow_id in varchar2 default null);
17+
18+
end ut_teamcity_reporter_printer;
19+
/

0 commit comments

Comments
 (0)