Skip to content
Merged
Show file tree
Hide file tree
Changes from 1 commit
Commits
Show all changes
21 commits
Select commit Hold shift + click to select a range
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
Prev Previous commit
Next Next commit
refactored
  • Loading branch information
Pazus committed Feb 23, 2017
commit fa52a091c52c5a84376739e8aa6790e6d295faa7
32 changes: 32 additions & 0 deletions examples/remove_rooms_by_name/test_remove_rooms_by_name.pkg
Original file line number Diff line number Diff line change
Expand Up @@ -5,11 +5,26 @@ create or replace package test_remove_rooms_by_name as

-- %beforeall
procedure setup_rooms;

-- %beforeeach
procedure setup_the_room;

-- %aftereach
procedure clean_the_room;

-- %afterall
procedure clean_rooms;

-- %test
-- %displayname(Removes a room without content in it)
procedure remove_empty_room;

-- %beforetest(remove_empty_room)
procedure setup_test_room;

-- %aftertest(remove_empty_room)
procedure clean_test_room;

-- %test
-- %displayname(Does not remove room when it has content)
procedure room_with_content;
Expand All @@ -24,6 +39,7 @@ create or replace package body test_remove_rooms_by_name as

procedure setup_rooms is
begin

insert all
into rooms values(1, 'Dining Room')
into rooms values(2, 'Living Room')
Expand All @@ -44,6 +60,22 @@ create or replace package body test_remove_rooms_by_name as
into room_contents values(9, 3, 'Whiteboard')
select 1 from dual;
end;

-- %beforeeach
procedure setup_the_room is begin null end;

-- %aftereach
procedure clean_the_room is begin null end;

-- %afterall
procedure clean_rooms is begin null end;

-- %beforetest(remove_empty_room)
procedure setup_test_room is begin null end;

-- %aftertest(remove_empty_room)
procedure clean_test_room is begin null end;


procedure remove_empty_room is
l_rooms_not_named_b sys_refcursor;
Expand Down
7 changes: 0 additions & 7 deletions source/core/types/ut_event_listener.tpb
Original file line number Diff line number Diff line change
Expand Up @@ -89,13 +89,6 @@ create or replace type body ut_event_listener is
end loop;

end fire_event;

overriding member procedure save_warning(self in out nocopy ut_event_listener, a_item ut_suite_item_base, a_message varchar2) is
begin
for i in 1..self.reporters.count loop
self.reporters(i).save_warning(a_item, a_message);
end loop;
end;

end;
/
3 changes: 1 addition & 2 deletions source/core/types/ut_event_listener.tps
Original file line number Diff line number Diff line change
Expand Up @@ -19,7 +19,6 @@ create or replace type ut_event_listener under ut_event_listener_base(
constructor function ut_event_listener(self in out nocopy ut_event_listener, a_reporters ut_reporters) return self as result,
overriding member procedure fire_before_event(self in out nocopy ut_event_listener, a_event_name varchar2, a_item ut_suite_item_base),
overriding member procedure fire_after_event(self in out nocopy ut_event_listener, a_event_name varchar2, a_item ut_suite_item_base),
overriding member procedure fire_event(self in out nocopy ut_event_listener, a_event_timing varchar2, a_event_name varchar2, a_item ut_suite_item_base),
overriding member procedure save_warning(self in out nocopy ut_event_listener, a_item ut_suite_item_base, a_message varchar2)
overriding member procedure fire_event(self in out nocopy ut_event_listener, a_event_timing varchar2, a_event_name varchar2, a_item ut_suite_item_base)
)
/
5 changes: 2 additions & 3 deletions source/core/types/ut_event_listener_base.tps
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
create or replace type ut_event_listener_base as object(
create or replace type ut_event_listener_base as object(
/*
utPLSQL - Version X.X.X.X
Copyright 2016 - 2017 utPLSQL Project
Expand All @@ -18,7 +18,6 @@ create or replace type ut_event_listener_base as object(
name varchar2(250),
member procedure fire_before_event(self in out nocopy ut_event_listener_base, a_event_name varchar2, a_item ut_suite_item_base),
member procedure fire_after_event(self in out nocopy ut_event_listener_base, a_event_name varchar2, a_item ut_suite_item_base),
member procedure fire_event(self in out nocopy ut_event_listener_base, a_event_timing varchar2, a_event_name varchar2, a_item ut_suite_item_base),
member procedure save_warning(self in out nocopy ut_event_listener_base,a_item ut_suite_item_base, a_message varchar2)
member procedure fire_event(self in out nocopy ut_event_listener_base, a_event_timing varchar2, a_event_name varchar2, a_item ut_suite_item_base)
) not final not instantiable
/
8 changes: 1 addition & 7 deletions source/core/types/ut_reporter_base.tpb
Original file line number Diff line number Diff line change
Expand Up @@ -21,7 +21,6 @@ create or replace type body ut_reporter_base is
self.self_type := a_self_type;
self.reporter_id := sys_guid();
self.start_date := sysdate();
self.warnings := ut_varchar2_list();
return;
end;

Expand Down Expand Up @@ -132,11 +131,6 @@ create or replace type body ut_reporter_base is
begin
ut_output_buffer.close(self);
end;

member procedure save_warning(self in out nocopy ut_reporter_base, a_item ut_suite_item_base, a_message varchar2) is
begin
self.warnings.extend;
self.warnings(self.warnings.last) := a_message;
end;

end;
/
7 changes: 2 additions & 5 deletions source/core/types/ut_reporter_base.tps
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
create or replace type ut_reporter_base force authid current_user as object(
create or replace type ut_reporter_base authid current_user as object(
/*
utPLSQL - Version X.X.X.X
Copyright 2016 - 2017 utPLSQL Project
Expand All @@ -18,7 +18,6 @@ create or replace type ut_reporter_base force authid current_user as object(
self_type varchar2(250),
reporter_id raw(32),
start_date date,
warnings ut_varchar2_list,
final member procedure init(self in out nocopy ut_reporter_base, a_self_type varchar2),
final member function get_reporter_id(self in out nocopy ut_reporter_base) return raw,

Expand Down Expand Up @@ -60,9 +59,7 @@ create or replace type ut_reporter_base force authid current_user as object(
member procedure after_calling_suite(self in out nocopy ut_reporter_base, a_suite in ut_logical_suite),

-- run hooks continued
member procedure after_calling_run (self in out nocopy ut_reporter_base, a_run in ut_run),

member procedure save_warning(self in out nocopy ut_reporter_base, a_item ut_suite_item_base, a_message varchar2)
member procedure after_calling_run (self in out nocopy ut_reporter_base, a_run in ut_run)

)
not final not instantiable
Expand Down
16 changes: 12 additions & 4 deletions source/core/types/ut_results_counter.tpb
Original file line number Diff line number Diff line change
Expand Up @@ -17,10 +17,11 @@ create or replace type body ut_results_counter as
*/
constructor function ut_results_counter(self in out nocopy ut_results_counter) return self as result is
begin
self.ignored_count := 0;
self.success_count := 0;
self.failure_count := 0;
self.errored_count := 0;
self.ignored_count := 0;
self.success_count := 0;
self.failure_count := 0;
self.errored_count := 0;
self.warnings_count := 0;
return;
end;

Expand All @@ -39,10 +40,17 @@ create or replace type body ut_results_counter as
self.success_count := self.success_count + a_item.success_count;
self.failure_count := self.failure_count + a_item.failure_count;
self.errored_count := self.errored_count + a_item.errored_count;
self.warnings_count := self.warnings_count + a_item.warnings_count;
end;

member procedure increase_warning_count(self in out nocopy ut_results_counter) is
begin
self.warnings_count := self.warnings_count + 1;
end;

member function total_count return integer is
begin
--skip warnings here
return self.ignored_count + self.success_count + self.failure_count + self.errored_count;
end;

Expand Down
2 changes: 2 additions & 0 deletions source/core/types/ut_results_counter.tps
Original file line number Diff line number Diff line change
Expand Up @@ -19,9 +19,11 @@ create or replace type ut_results_counter as object(
success_count integer,
failure_count integer,
errored_count integer,
warnings_count integer,
constructor function ut_results_counter(self in out nocopy ut_results_counter) return self as result,
constructor function ut_results_counter(self in out nocopy ut_results_counter, a_status integer) return self as result,
member procedure sum_counter_values(self in out nocopy ut_results_counter, a_item ut_results_counter),
member procedure increase_warning_count(self in out nocopy ut_results_counter),
member function total_count return integer,
member function result_status return integer
)
Expand Down
23 changes: 10 additions & 13 deletions source/core/types/ut_suite.tpb
Original file line number Diff line number Diff line change
Expand Up @@ -81,37 +81,34 @@ create or replace type body ut_suite as

--savepoint
l_item_savepoint := self.items(i).create_savepoint_if_needed();

--before each
--includes listener calls for before and after actions
l_completed_without_errors := self.before_each.do_execute(self, a_listener);

-- execute the item (test or suite)
if l_completed_without_errors then
l_completed_without_errors := self.items(i).do_execute(a_listener);

--after each
--includes listener calls for before and after actions
-- run afteeach even if a test raised an exception
l_completed_without_errors := self.after_each.do_execute(self, a_listener);

if not l_completed_without_errors then
a_listener.save_warning(self,'Aftereach procedure failed:'||chr(10)||ut_assert_processor.get_asserts_results()(1).error_message);
--self.items(i).fail(a_listener, 'Aftereach procedure failed:'||chr(10)||ut_assert_processor.get_asserts_results()(1).error_message);
end if;

else
self.items(i).fail(a_listener, 'Beforeach procedure failed:'||chr(10)||ut_assert_processor.get_asserts_results()(1).error_message);
end if;

--after each
--includes listener calls for before and after actions
--run afteeach even if a test raised an exception
l_completed_without_errors := self.after_each.do_execute(self, a_listener);
if not l_completed_without_errors then
self.put_warning('Aftereach procedure failed:'||chr(10)||ut_assert_processor.get_asserts_results()(1).error_message);
end if;

--rollback to savepoint
self.items(i).rollback_to_savepoint(l_item_savepoint);

-- exit when not l_completed_without_errors;
end loop;

l_suite_step_without_errors := self.after_all.do_execute(self, a_listener);
if not l_suite_step_without_errors then
a_listener.save_warning(self, 'Afterall procedure failed: '||chr(10)||ut_assert_processor.get_asserts_results()(1).error_message);
self.put_warning('Afterall procedure failed: '||chr(10)||ut_assert_processor.get_asserts_results()(1).error_message);
end if;
else
do_fail('Beforeall procedure failed: '||chr(10));
Expand Down
8 changes: 8 additions & 0 deletions source/core/types/ut_suite_item.tpb
Original file line number Diff line number Diff line change
Expand Up @@ -29,6 +29,7 @@ create or replace type body ut_suite_item as
self.rollback_type := a_rollback_type;
self.ignore_flag := ut_utils.boolean_to_int(a_ignore_flag);
self.results_count := ut_results_counter();
self.warnings := ut_varchar2_list();
end;

member procedure set_ignore_flag(self in out nocopy ut_suite_item, a_ignore_flag boolean) is
Expand Down Expand Up @@ -73,6 +74,13 @@ create or replace type body ut_suite_item as
begin
return ut_utils.time_diff(start_time, end_time);
end;

member procedure put_warning(self in out nocopy ut_suite_item, a_message varchar2) is
begin
self.warnings.extend;
self.warnings(self.warnings.last) := a_message;
self.results_count.increase_warning_count;
end;

end;
/
5 changes: 3 additions & 2 deletions source/core/types/ut_suite_item.tps
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
create or replace type ut_suite_item under ut_suite_item_base (
create or replace type ut_suite_item force under ut_suite_item_base (
/*
utPLSQL - Version X.X.X.X
Copyright 2016 - 2017 utPLSQL Project
Expand Down Expand Up @@ -29,7 +29,8 @@ create or replace type ut_suite_item under ut_suite_item_base (
not instantiable member function do_execute(self in out nocopy ut_suite_item, a_listener in out nocopy ut_event_listener_base) return boolean,
final member procedure do_execute(self in out nocopy ut_suite_item, a_listener in out nocopy ut_event_listener_base),
not instantiable member procedure calc_execution_result(self in out nocopy ut_suite_item),
not instantiable member procedure fail(self in out nocopy ut_suite_item, a_listener in out nocopy ut_event_listener_base, a_failure_msg varchar2)
not instantiable member procedure fail(self in out nocopy ut_suite_item, a_listener in out nocopy ut_event_listener_base, a_failure_msg varchar2),
member procedure put_warning(self in out nocopy ut_suite_item, a_message varchar2)

)
not final not instantiable
Expand Down
3 changes: 2 additions & 1 deletion source/core/types/ut_suite_item_base.tps
Original file line number Diff line number Diff line change
Expand Up @@ -53,7 +53,8 @@ create or replace type ut_suite_item_base authid current_user as object (
--execution result fields
start_time timestamp with time zone,
end_time timestamp with time zone,
result integer(1)
result integer(1),
warnings ut_varchar2_list

)
not final not instantiable
Expand Down
6 changes: 3 additions & 3 deletions source/core/types/ut_test.tpb
Original file line number Diff line number Diff line change
Expand Up @@ -65,10 +65,10 @@ create or replace type body ut_test as
if l_completed_without_errors then
-- execute the test
self.item.do_execute(self, a_listener);

-- perform cleanup regardless of the test failure
self.after_test.do_execute(self, a_listener);
end if;

-- perform cleanup regardless of the test failure
self.after_test.do_execute(self, a_listener);

self.rollback_to_savepoint(l_savepoint);

Expand Down
29 changes: 24 additions & 5 deletions source/reporters/ut_documentation_reporter.tpb
Original file line number Diff line number Diff line change
Expand Up @@ -67,6 +67,7 @@ create or replace type body ut_documentation_reporter is

overriding member procedure after_calling_run(self in out nocopy ut_documentation_reporter, a_run in ut_run) as
l_summary_text varchar2(4000);
l_warnings ut_varchar2_list := ut_varchar2_list();
procedure print_failure_for_assert(a_assert ut_assert_result) is
l_lines ut_varchar2_list;
begin
Expand Down Expand Up @@ -117,13 +118,31 @@ create or replace type body ut_documentation_reporter is
end if;
end;

procedure print_warnings is
procedure print_warnings is
procedure gather_warnings(a_item ut_suite_item) is
l_suite ut_logical_suite;
begin
--process warnings of child items first
if a_item is of(ut_logical_suite) then
l_suite := treat(a_item as ut_logical_suite);
for item_ind in 1..l_suite.items.count loop
gather_warnings(l_suite.items(item_ind));
end loop;
end if;

--then process self warnings
for warn_ind in 1..a_item.warnings.count loop
l_warnings.extend;
l_warnings(l_warnings.last) := a_item.warnings(warn_ind);
end loop;
end;
begin
if self.warnings is not null and self.warnings.count>0 then

if l_warnings.count>0 then
self.print_text( 'Warnings:' );
self.print_text( ' ' );
for i in 1 .. self.warnings.count loop
self.print_text(self.warnings(i));
for i in 1 .. l_warnings.count loop
self.print_text(l_warnings(i));
self.print_text(' ');
end loop;
end if;
Expand All @@ -138,7 +157,7 @@ create or replace type body ut_documentation_reporter is
||a_run.results_count.failure_count||' failed, '
||a_run.results_count.errored_count||' errored, '
||a_run.results_count.ignored_count||' ignored.'||
case when self.warnings.count>0 then ' '||self.warnings.count||' warning(s)' end;
case when l_warnings.count>0 then ' '||l_warnings.count||' warning(s)' end;
if a_run.results_count.failure_count > 0 then
self.print_red_text(l_summary_text);
else
Expand Down