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

Skip to content

Commit baaa5cc

Browse files
committed
Package body cache is now invalidated after every test run.
Fixed issues with self-testing. Fixed issues with version compare for short version numbers.
1 parent b75dc53 commit baaa5cc

6 files changed

Lines changed: 100 additions & 6 deletions

File tree

source/api/ut_runner.pkb

Lines changed: 5 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -49,8 +49,8 @@ create or replace package body ut_runner is
4949
l_current ut_utils.t_version := ut_utils.to_version(coalesce(a_current,version()));
5050
begin
5151
if l_requested.major = l_current.major
52-
and (l_requested.minor < l_current.minor
53-
or l_requested.minor = l_current.minor and l_requested.bugfix <= l_current.bugfix) then
52+
and (l_requested.minor < l_current.minor or l_requested.minor is null
53+
or l_requested.minor = l_current.minor and (l_requested.bugfix <= l_current.bugfix or l_requested.bugfix is null)) then
5454
l_result := true;
5555
end if;
5656
return ut_utils.boolean_to_int(l_result);
@@ -86,10 +86,12 @@ create or replace package body ut_runner is
8686

8787
ut_utils.cleanup_temp_tables;
8888
ut_output_buffer.close(l_listener.reporters);
89-
exception
89+
ut_metadata.reset_source_definition_cache;
90+
exception
9091
when others then
9192
ut_utils.cleanup_temp_tables;
9293
ut_output_buffer.close(l_listener.reporters);
94+
ut_metadata.reset_source_definition_cache;
9395
dbms_output.put_line(dbms_utility.format_error_backtrace);
9496
dbms_output.put_line(dbms_utility.format_error_stack);
9597
raise;

source/core/ut_metadata.pkb

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -159,6 +159,12 @@ create or replace package body ut_metadata as
159159
return l_line;
160160
end;
161161

162+
procedure reset_source_definition_cache is
163+
begin
164+
g_source_cache := null;
165+
g_cached_object := null;
166+
end;
167+
162168
function get_dba_view(a_view_name varchar2) return varchar2 is
163169
l_invalid_object_name exception;
164170
l_result varchar2(128) := lower(a_view_name);
@@ -170,5 +176,6 @@ create or replace package body ut_metadata as
170176
when l_invalid_object_name then
171177
return replace(l_result,'dba_','all_');
172178
end;
179+
173180
end;
174181
/

source/core/ut_metadata.pks

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -79,6 +79,9 @@ create or replace package ut_metadata authid current_user as
7979
*/
8080
function get_source_definition_line(a_owner varchar2, a_object_name varchar2, a_line_no integer) return varchar2;
8181

82+
83+
procedure reset_source_definition_cache;
84+
8285
/*
8386
function: get_dba_view
8487

test/install_tests.sql

Lines changed: 27 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,5 @@
1+
whenever sqlerror exit failure rollback
2+
whenever oserror exit failure rollback
13

24
@core.pks
35
@ut_utils/test_ut_utils.pks
@@ -23,6 +25,30 @@
2325
@ut_expectations/test_expectations_cursor.pkb
2426
@@ut_runner/test_ut_runner.pkb
2527

26-
show errors
28+
set linesize 200
29+
set define on
30+
column text format a100
31+
column error_count noprint new_value error_count
32+
33+
prompt Validating installation
34+
35+
set heading on
36+
select type, name, sequence, line, position, text, count(1) over() error_count
37+
from all_errors
38+
where owner = USER
39+
and name not like 'BIN$%' --not recycled
40+
-- errors only. ignore warnings
41+
and attribute = 'ERROR'
42+
order by name, type, sequence
43+
/
44+
45+
begin
46+
if to_number('&&error_count') > 0 then
47+
raise_application_error(-20000, 'Not all sources were successfully installed.');
48+
else
49+
dbms_output.put_line('Installation completed successfully');
50+
end if;
51+
end;
52+
/
2753

2854
exit

test/ut_runner/test_ut_runner.pkb

Lines changed: 56 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -41,5 +41,61 @@ create or replace package body test_ut_runner is
4141
throws('v3.0.0.0','bad_ver');
4242
end;
4343

44+
procedure create_test_spec
45+
as
46+
pragma autonomous_transaction;
47+
begin
48+
execute immediate q'[create or replace package test_cache as
49+
--%suite
50+
51+
--%test
52+
procedure failing_test;
53+
end;
54+
]';
55+
end;
56+
57+
procedure create_test_body(a_number integer)
58+
as
59+
pragma autonomous_transaction;
60+
begin
61+
execute immediate 'create or replace package body test_cache as
62+
procedure failing_test is
63+
begin
64+
ut3.ut.expect('||a_number||').to_be_null;
65+
end;
66+
end;';
67+
end;
68+
69+
procedure drop_test_package
70+
as
71+
pragma autonomous_transaction;
72+
begin
73+
execute immediate 'drop package test_cache';
74+
end;
75+
76+
procedure run_reset_package_body_cache is
77+
l_results ut3.ut_varchar2_list;
78+
l_expected clob;
79+
l_actual clob;
80+
begin
81+
--Arrange
82+
create_test_spec();
83+
create_test_body(0);
84+
select *
85+
bulk collect into l_results
86+
from table(ut3.ut.run('test_cache'));
87+
88+
--Act
89+
create_test_body(1);
90+
select *
91+
bulk collect into l_results
92+
from table(ut3.ut.run('test_cache'));
93+
--Assert
94+
l_actual := ut3.ut_utils.table_to_clob(l_results);
95+
l_expected := '%ut3.ut.expect(1).to_be_null;%';
96+
ut.expect(l_actual).to_be_like(l_expected);
97+
drop_test_package();
98+
end;
99+
44100
end;
45101
/

test/ut_runner/test_ut_runner.pks

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -15,8 +15,8 @@ create or replace package test_ut_runner is
1515
--%test(version_compatibility_check raises exception when invalid version passed)
1616
procedure version_comp_check_exception;
1717

18-
--%test(version_compatibility_check raises exception when invalid version passed)
19-
procedure version_comp_check_exception;
18+
--%test(run resets cache of package body after every run)
19+
procedure run_reset_package_body_cache;
2020

2121
end;
2222
/

0 commit comments

Comments
 (0)