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

Skip to content

Commit 56d72c2

Browse files
committed
Handled (ignored) exception savepoint never established
Add validation test
1 parent f19f5b6 commit 56d72c2

5 files changed

Lines changed: 30 additions & 0 deletions

File tree

source/core/types/ut_suite_item.tpb

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -36,10 +36,15 @@ create or replace type body ut_suite_item as
3636
end;
3737

3838
member procedure rollback_to_savepoint(self in ut_suite_item, a_savepoint varchar2) is
39+
ex_savepoint_not_exists exception;
40+
pragma exception_init(ex_savepoint_not_exists, -1086);
3941
begin
4042
if self.rollback_type = ut_utils.gc_rollback_auto and a_savepoint is not null then
4143
execute immediate 'rollback to ' || a_savepoint;
4244
end if;
45+
exception
46+
when ex_savepoint_not_exists then
47+
null;
4348
end;
4449

4550
member function execution_time return number is

tests/RunAll.sql

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -90,6 +90,7 @@ create table ut$test_table (val varchar2(1));
9090
@@lib/RunTest.sql ut_test/ut_test.TeardownExecutedAfterTest.sql
9191
@@lib/RunTest.sql ut_test/ut_test.TeardownProcedureNameInvalid.sql
9292
@@lib/RunTest.sql ut_test/ut_test.TeardownProcedureNameNull.sql
93+
@@lib/RunTest.sql ut_test/ut_test.IgnoreTollbackToSavepointException.sql
9394
@@lib/RunTest.sql ut_test_suite/ut_test_suite.IgnoreFlagSkipSuite.sql
9495
@@lib/RunTest.sql ut_test_suite/ut_test_suite.Rollback_type.Auto.sql
9596
@@lib/RunTest.sql ut_test_suite/ut_test_suite.Rollback_type.AutoOnFailure.sql

tests/helpers/ut_example_tests.pkb

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -19,6 +19,12 @@ as
1919
g_char := 'a';
2020
ut.expect(1,'Test 1 Should Pass').to_equal(1);
2121
end;
22+
23+
procedure ut_commit_test
24+
is
25+
begin
26+
commit;
27+
end;
2228

2329
end;
2430
/

tests/helpers/ut_example_tests.pks

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -5,5 +5,6 @@ as
55
procedure setup;
66
procedure teardown;
77
procedure ut_passing_test;
8+
procedure ut_commit_test;
89
end;
910
/
Lines changed: 17 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,17 @@
1+
PROMPT Checks that rollback exception doesn't make run to fail
2+
3+
--Arrange
4+
declare
5+
simple_test ut_test := ut_test(a_object_name => 'ut_example_tests', a_name => 'ut_commit_test',a_rollback_type => ut_utils.gc_rollback_auto);
6+
listener ut_event_listener := ut_event_listener(ut_reporters());
7+
begin
8+
--Act
9+
simple_test.do_execute(listener);
10+
--Assert
11+
if simple_test.result = ut_utils.tr_success then
12+
:test_result := ut_utils.tr_success;
13+
else
14+
dbms_output.put_line('simple_test.result = '||ut_utils.test_result_to_char(simple_test.result));
15+
end if;
16+
end;
17+
/

0 commit comments

Comments
 (0)