Skip to content

Commit eef5938

Browse files
test 26 event-based XML documents produced by the revised reporter
1 parent 17ed198 commit eef5938

1 file changed

Lines changed: 143 additions & 97 deletions

File tree

test/core/reporters/test_realtime_reporter.pkb

Lines changed: 143 additions & 97 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
create or replace package body test_realtime_reporter as
22

3-
g_actual_xml_report xmltype;
3+
g_xml_reports test_xmltype_list := test_xmltype_list();
44

55
procedure create_test_suites_and_run is
66
pragma autonomous_transaction;
@@ -101,118 +101,157 @@ create or replace package body test_realtime_reporter as
101101
end;]';
102102

103103
<<run_report_and_cache_result>>
104-
declare
105-
l_results ut3.ut_varchar2_list;
104+
declare
105+
l_clob clob;
106106
begin
107-
select *
108-
bulk collect into l_results
109-
from table(ut3.ut.run('ut3_tester:realtime_reporting', ut3.ut_realtime_reporter()));
110-
g_actual_xml_report := xmltype(ut3.ut_utils.table_to_clob(l_results));
107+
g_xml_reports.delete;
108+
<<report_lines>>
109+
for r in (
110+
with
111+
base as (
112+
select sum(case when column_value like '<?xml%' then 1 else 0 end) over(order by rownum) group_no,
113+
rownum as rn,
114+
column_value as line
115+
from table(ut3.ut.run('ut3_tester:realtime_reporting', ut3.ut_realtime_reporter()))
116+
)
117+
select group_no,
118+
lead(group_no, 1, -1) over (order by rn) as next_group_no,
119+
rn,
120+
line
121+
from base
122+
order by rn
123+
) loop
124+
ut3.ut_utils.append_to_clob(l_clob, r.line);
125+
ut3.ut_utils.append_to_clob(l_clob, chr(10));
126+
if r.group_no != r.next_group_no then
127+
g_xml_reports.extend;
128+
g_xml_reports(g_xml_reports.count) := xmltype(l_clob);
129+
l_clob := null;
130+
end if;
131+
end loop report_lines;
111132
end run_report_and_cache_result;
112133
end create_test_suites_and_run;
113134

114135
procedure xml_report_structure is
115-
l_actual clob;
116-
l_expected_list ut3.ut_varchar2_list;
117-
l_expected clob;
136+
l_actual sys_refcursor;
137+
l_expected sys_refcursor;
118138
begin
119-
l_actual := g_actual_xml_report.getclobval();
120-
ut3.ut_utils.append_to_list(l_expected_list, '<?xml version="1.0"?>');
121-
ut3.ut_utils.append_to_list(l_expected_list, '%<report>');
122-
ut3.ut_utils.append_to_list(l_expected_list, '% <preRun>');
123-
ut3.ut_utils.append_to_list(l_expected_list, '% <suites>');
124-
ut3.ut_utils.append_to_list(l_expected_list, '% <suite id="%">');
125-
ut3.ut_utils.append_to_list(l_expected_list, '% %<test id="%">');
126-
ut3.ut_utils.append_to_list(l_expected_list, '% %</test>');
127-
ut3.ut_utils.append_to_list(l_expected_list, '% </suite>');
128-
ut3.ut_utils.append_to_list(l_expected_list, '% </suites>');
129-
ut3.ut_utils.append_to_list(l_expected_list, '% <totalNumberOfTests>%</totalNumberOfTests>');
130-
ut3.ut_utils.append_to_list(l_expected_list, '% </preRun>');
131-
ut3.ut_utils.append_to_list(l_expected_list, '% <runEvents>');
132-
ut3.ut_utils.append_to_list(l_expected_list, '% <startSuiteEvent id="%">');
133-
ut3.ut_utils.append_to_list(l_expected_list, '% </startTestEvent>');
134-
ut3.ut_utils.append_to_list(l_expected_list, '% <startTestEvent id="%">');
135-
ut3.ut_utils.append_to_list(l_expected_list, '% </startTestEvent>');
136-
ut3.ut_utils.append_to_list(l_expected_list, '% <endTestEvent id="%">');
137-
ut3.ut_utils.append_to_list(l_expected_list, '% </endTestEvent>');
138-
ut3.ut_utils.append_to_list(l_expected_list, '% <endSuiteEvent id="%">');
139-
ut3.ut_utils.append_to_list(l_expected_list, '% </endSuiteEvent>');
140-
ut3.ut_utils.append_to_list(l_expected_list, '% </runEvents>');
141-
ut3.ut_utils.append_to_list(l_expected_list, '%</report>');
142-
l_expected := ut3.ut_utils.table_to_clob(l_expected_list, null);
143-
ut.expect(l_actual).to_be_like(l_expected);
139+
open l_actual for
140+
select t.column_value.extract('/event/@type').getstringval() as event_type,
141+
t.column_value.extract('/event/suite/@id|/event/test/@id').getstringval() as item_id
142+
from table(g_xml_reports) t;
143+
open l_expected for
144+
select 'pre-run' as event_type, null as item_id from dual union all
145+
select 'pre-suite' as event_type, 'realtime_reporting' as item_id from dual union all
146+
select 'pre-suite' as event_type, 'realtime_reporting.check_realtime_reporting3' as item_id from dual union all
147+
select 'pre-test' as event_type, 'realtime_reporting.check_realtime_reporting3.test_6_with_runtime_error' as item_id from dual union all
148+
select 'post-test' as event_type, 'realtime_reporting.check_realtime_reporting3.test_6_with_runtime_error' as item_id from dual union all
149+
select 'pre-test' as event_type, 'realtime_reporting.check_realtime_reporting3.test_7_with_serveroutput' as item_id from dual union all
150+
select 'post-test' as event_type, 'realtime_reporting.check_realtime_reporting3.test_7_with_serveroutput' as item_id from dual union all
151+
select 'post-suite' as event_type, 'realtime_reporting.check_realtime_reporting3' as item_id from dual union all
152+
select 'pre-suite' as event_type, 'realtime_reporting.check_realtime_reporting2' as item_id from dual union all
153+
select 'pre-test' as event_type, 'realtime_reporting.check_realtime_reporting2.test_3_ok' as item_id from dual union all
154+
select 'post-test' as event_type, 'realtime_reporting.check_realtime_reporting2.test_3_ok' as item_id from dual union all
155+
select 'pre-test' as event_type, 'realtime_reporting.check_realtime_reporting2.test_4_nok' as item_id from dual union all
156+
select 'post-test' as event_type, 'realtime_reporting.check_realtime_reporting2.test_4_nok' as item_id from dual union all
157+
select 'pre-test' as event_type, 'realtime_reporting.check_realtime_reporting2.test_5' as item_id from dual union all
158+
select 'post-test' as event_type, 'realtime_reporting.check_realtime_reporting2.test_5' as item_id from dual union all
159+
select 'post-suite' as event_type, 'realtime_reporting.check_realtime_reporting2' as item_id from dual union all
160+
select 'pre-suite' as event_type, 'realtime_reporting.check_realtime_reporting1' as item_id from dual union all
161+
select 'pre-suite' as event_type, 'realtime_reporting.check_realtime_reporting1.test context' as item_id from dual union all
162+
select 'pre-test' as event_type, 'realtime_reporting.check_realtime_reporting1.test context.test_1_ok' as item_id from dual union all
163+
select 'post-test' as event_type, 'realtime_reporting.check_realtime_reporting1.test context.test_1_ok' as item_id from dual union all
164+
select 'pre-test' as event_type, 'realtime_reporting.check_realtime_reporting1.test context.test_2_nok' as item_id from dual union all
165+
select 'post-test' as event_type, 'realtime_reporting.check_realtime_reporting1.test context.test_2_nok' as item_id from dual union all
166+
select 'post-suite' as event_type, 'realtime_reporting.check_realtime_reporting1.test context' as item_id from dual union all
167+
select 'post-suite' as event_type, 'realtime_reporting.check_realtime_reporting1' as item_id from dual union all
168+
select 'post-suite' as event_type, 'realtime_reporting' as item_id from dual union all
169+
select 'post-run' as event_type, null as item_id from dual;
170+
ut.expect(l_actual).to_equal(l_expected);
144171
end xml_report_structure;
145172

146173
procedure total_number_of_tests is
147174
l_actual integer;
148175
l_expected integer := 7;
149176
begin
150-
l_actual := g_actual_xml_report.extract('/report/preRun/totalNumberOfTests/text()').getnumberval();
151-
ut.expect(l_actual).to_equal(l_expected);
177+
select t.column_value.extract('/event/totalNumberOfTests/text()').getnumberval()
178+
into l_actual
179+
from table(g_xml_reports) t
180+
where t.column_value.extract('/event/@type').getstringval() = 'pre-run';
152181
end total_number_of_tests;
153182

154183
procedure escaped_characters is
155184
l_actual varchar2(32767);
156185
l_expected varchar2(20) := 'suite &lt;A&gt;';
157186
begin
158-
l_actual :=
159-
g_actual_xml_report.extract(
160-
'//suite[@id="realtime_reporting.check_realtime_reporting1"]/description/text()'
161-
).getstringval();
187+
select t.column_value.extract(
188+
'//suite[@id="realtime_reporting.check_realtime_reporting1"]/description/text()'
189+
).getstringval()
190+
into l_actual
191+
from table(g_xml_reports) t
192+
where t.column_value.extract('/event/@type').getstringval() = 'pre-run';
162193
ut.expect(l_actual).to_equal(l_expected);
163194
end escaped_characters;
164195

165-
procedure number_of_starttestevent_nodes is
166-
l_actual integer;
167-
l_expected integer := 7;
196+
procedure pre_test_nodes is
197+
l_actual sys_refcursor;
198+
l_expected sys_refcursor;
168199
begin
169-
select count(*)
170-
into l_actual
171-
from xmltable(
172-
'/report/runEvents/startTestEvent'
173-
passing g_actual_xml_report
174-
columns id varchar2(4000) path '@id',
175-
test_number integer path 'testNumber',
176-
total_number_of_tests integer path 'totalNumberOfTests'
177-
)
178-
where id is not null
179-
and test_number is not null
180-
and total_number_of_tests is not null;
181-
ut.expect(l_actual).to_equal(l_expected);
182-
end number_of_starttestevent_nodes;
200+
open l_actual for
201+
select t.column_value.extract('//test/testNumber/text()')
202+
.getnumberval() as test_number,
203+
t.column_value.extract('//test/totalNumberOfTests/text()')
204+
.getnumberval() as total_number_of_tests
205+
from table(g_xml_reports) t
206+
where t.column_value.extract('/event/@type').getstringval() = 'pre-test'
207+
and t.column_value.extract('//test/@id').getstringval() is not null;
208+
open l_expected for
209+
select level as test_number,
210+
7 as total_number_of_tests
211+
from dual
212+
connect by level <= 7;
213+
ut.expect(l_actual).to_equal(l_expected).unordered;
214+
end pre_test_nodes;
183215

184-
procedure endtestevent_nodes is
216+
procedure post_test_nodes is
185217
l_actual sys_refcursor;
186218
l_expected sys_refcursor;
187219
begin
188220
open l_actual for
189-
select test_number, total_number_of_tests
190-
from xmltable(
191-
'/report/runEvents/endTestEvent'
192-
passing g_actual_xml_report
193-
columns id varchar2(4000) path '@id',
194-
test_number integer path 'testNumber',
195-
total_number_of_tests integer path 'totalNumberOfTests'
196-
)
197-
where id is not null
198-
and test_number is not null
199-
and total_number_of_tests is not null;
221+
select t.column_value.extract('//test/testNumber/text()')
222+
.getnumberval() as test_number,
223+
t.column_value.extract('//test/totalNumberOfTests/text()')
224+
.getnumberval() as total_number_of_tests
225+
from table(g_xml_reports) t
226+
where t.column_value.extract('/event/@type').getstringval() = 'post-test'
227+
and t.column_value.extract('//test/@id').getstringval() is not null
228+
and t.column_value.extract('//test/startTime/text()').getstringval() is not null
229+
and t.column_value.extract('//test/endTime/text()').getstringval() is not null
230+
and t.column_value.extract('//test/executionTime/text()').getnumberval() is not null
231+
and t.column_value.extract('//test/counter/disabled/text()').getnumberval() is not null
232+
and t.column_value.extract('//test/counter/success/text()').getnumberval() is not null
233+
and t.column_value.extract('//test/counter/failure/text()').getnumberval() is not null
234+
and t.column_value.extract('//test/counter/error/text()').getnumberval() is not null
235+
and t.column_value.extract('//test/counter/warning/text()').getnumberval() is not null;
200236
open l_expected for
201237
select level as test_number,
202238
7 as total_number_of_tests
203239
from dual
204240
connect by level <= 7;
205241
ut.expect(l_actual).to_equal(l_expected).unordered;
206-
end endtestevent_nodes;
242+
end post_test_nodes;
207243

208244
procedure single_failed_message is
209245
l_actual varchar2(32767);
210246
l_expected varchar2(80) := '<![CDATA[Actual: 1 (number) was expected to equal: 2 (number) ]]>';
211247
begin
212-
l_actual :=
213-
g_actual_xml_report.extract(
214-
'/report/runEvents/endTestEvent[@id="realtime_reporting.check_realtime_reporting1.test context.test_2_nok"]/failedExpectations/expectation[1]/message/text()'
215-
).getstringval();
248+
select t.column_value.extract(
249+
'/event/test/failedExpectations/expectation[1]/message/text()'
250+
).getstringval()
251+
into l_actual
252+
from table(g_xml_reports) t
253+
where t.column_value.extract('/event[@type="post-test"]/test/@id').getstringval()
254+
= 'realtime_reporting.check_realtime_reporting1.test context.test_2_nok';
216255
ut.expect(l_actual).to_equal(l_expected);
217256
end single_failed_message;
218257

@@ -222,14 +261,17 @@ create or replace package body test_realtime_reporter as
222261
begin
223262
select count(*)
224263
into l_actual
225-
from xmltable(
226-
'/report/runEvents/endTestEvent[@id="realtime_reporting.check_realtime_reporting2.test_4_nok"]/failedExpectations/expectation'
227-
passing g_actual_xml_report
264+
from table(g_xml_reports) t,
265+
xmltable(
266+
'/event/test/failedExpectations/expectation'
267+
passing t.column_value
228268
columns message clob path 'message',
229269
caller clob path 'caller'
230-
)
231-
where message is not null
232-
and caller is not null;
270+
) x
271+
where t.column_value.extract('/event[@type="post-test"]/test/@id').getstringval()
272+
= 'realtime_reporting.check_realtime_reporting2.test_4_nok'
273+
and x.message is not null
274+
and x.caller is not null;
233275
ut.expect(l_actual).to_equal(l_expected);
234276
end multiple_failed_messages;
235277

@@ -238,10 +280,11 @@ create or replace package body test_realtime_reporter as
238280
l_expected_list ut3.ut_varchar2_list;
239281
l_expected clob;
240282
begin
241-
l_actual :=
242-
g_actual_xml_report.extract(
243-
'/report/runEvents/endTestEvent[@id="realtime_reporting.check_realtime_reporting3.test_7_with_serveroutput"]/serverOutput/text()'
244-
).getclobval();
283+
select t.column_value.extract('//event/test/serverOutput/text()').getstringval()
284+
into l_actual
285+
from table(g_xml_reports) t
286+
where t.column_value.extract('/event[@type="post-test"]/test/@id').getstringval()
287+
= 'realtime_reporting.check_realtime_reporting3.test_7_with_serveroutput';
245288
ut3.ut_utils.append_to_list(l_expected_list, '<![CDATA[before test 7');
246289
ut3.ut_utils.append_to_list(l_expected_list, 'after test 7');
247290
ut3.ut_utils.append_to_list(l_expected_list, ']]>');
@@ -254,10 +297,11 @@ create or replace package body test_realtime_reporter as
254297
l_expected_list ut3.ut_varchar2_list;
255298
l_expected clob;
256299
begin
257-
l_actual :=
258-
g_actual_xml_report.extract(
259-
'/report/runEvents/endSuiteEvent[@id="realtime_reporting.check_realtime_reporting3"]/serverOutput/text()'
260-
).getclobval();
300+
select t.column_value.extract('//event/suite/serverOutput/text()').getstringval()
301+
into l_actual
302+
from table(g_xml_reports) t
303+
where t.column_value.extract('/event[@type="post-suite"]/suite/@id').getstringval()
304+
= 'realtime_reporting.check_realtime_reporting3';
261305
ut3.ut_utils.append_to_list(l_expected_list, '<![CDATA[Now, a no_data_found exception is raised');
262306
ut3.ut_utils.append_to_list(l_expected_list, 'dbms_output and error stack is reported for this suite.');
263307
ut3.ut_utils.append_to_list(l_expected_list, 'A runtime error in afterall is counted as a warning.');
@@ -271,10 +315,11 @@ create or replace package body test_realtime_reporter as
271315
l_expected_list ut3.ut_varchar2_list;
272316
l_expected clob;
273317
begin
274-
l_actual :=
275-
g_actual_xml_report.extract(
276-
'/report/runEvents/endTestEvent[@id="realtime_reporting.check_realtime_reporting3.test_6_with_runtime_error"]/errorStack/text()'
277-
).getclobval();
318+
select t.column_value.extract('//event/test/errorStack/text()').getstringval()
319+
into l_actual
320+
from table(g_xml_reports) t
321+
where t.column_value.extract('/event[@type="post-test"]/test/@id').getstringval()
322+
= 'realtime_reporting.check_realtime_reporting3.test_6_with_runtime_error';
278323
ut3.ut_utils.append_to_list(l_expected_list, '<![CDATA[ORA-00942: table or view does not exist');
279324
ut3.ut_utils.append_to_list(l_expected_list, 'ORA-06512: at "%.CHECK_REALTIME_REPORTING3", line 5');
280325
ut3.ut_utils.append_to_list(l_expected_list, '%ORA-06512: at line 6]]>');
@@ -287,10 +332,11 @@ create or replace package body test_realtime_reporter as
287332
l_expected_list ut3.ut_varchar2_list;
288333
l_expected clob;
289334
begin
290-
l_actual :=
291-
g_actual_xml_report.extract(
292-
'/report/runEvents/endSuiteEvent[@id="realtime_reporting.check_realtime_reporting3"]/errorStack/text()'
293-
).getclobval();
335+
select t.column_value.extract('//event/suite/errorStack/text()').getstringval()
336+
into l_actual
337+
from table(g_xml_reports) t
338+
where t.column_value.extract('/event[@type="post-suite"]/suite/@id').getstringval()
339+
= 'realtime_reporting.check_realtime_reporting3';
294340
ut3.ut_utils.append_to_list(l_expected_list, '<![CDATA[ORA-01403: no data found');
295341
ut3.ut_utils.append_to_list(l_expected_list, 'ORA-06512: at "%.CHECK_REALTIME_REPORTING3", line 21');
296342
ut3.ut_utils.append_to_list(l_expected_list, '%ORA-06512: at line 6]]>');

0 commit comments

Comments
 (0)