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

Skip to content

Commit 1d1d780

Browse files
Reviews solved
1 parent 3feae88 commit 1d1d780

11 files changed

Lines changed: 198 additions & 121 deletions

source/core/types/ut_executable.tpb

Lines changed: 3 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -69,13 +69,10 @@ create or replace type body ut_executable is
6969
l_statement varchar2(4000);
7070
l_status number;
7171
l_cursor_number number;
72-
l_owner varchar2(200) := self.owner_name;
73-
l_object_name varchar2(200) := self.object_name;
74-
l_procedure_name varchar2(200) := self.procedure_name;
75-
7672
l_completed_without_errors boolean := true;
7773
l_start_transaction_id varchar2(250);
7874
l_end_transaction_id varchar2(250);
75+
7976
procedure save_dbms_output is
8077
l_status number;
8178
l_line varchar2(32767);
@@ -103,15 +100,15 @@ create or replace type body ut_executable is
103100
--listener - before call to executable
104101
a_listener.fire_before_event(self.associated_event_name, a_item);
105102

106-
ut_metadata.do_resolve(a_owner => l_owner, a_object => l_object_name, a_procedure_name => l_procedure_name);
103+
ut_metadata.do_resolve(a_owner => self.owner_name, a_object => self.object_name, a_procedure_name => self.procedure_name);
107104

108105
l_statement :=
109106
'declare' || chr(10) ||
110107
' l_error_stack varchar2(32767);' || chr(10) ||
111108
' l_error_backtrace varchar2(32767);' || chr(10) ||
112109
'begin' || chr(10) ||
113110
' begin' || chr(10) ||
114-
' ' || ut_metadata.form_name(l_owner, l_object_name, l_procedure_name) || ';' || chr(10) ||
111+
' ' || ut_metadata.form_name(self.owner_name, self.object_name, self.procedure_name) || ';' || chr(10) ||
115112
' exception' || chr(10) ||
116113
' when others then ' || chr(10) ||
117114
' l_error_stack := dbms_utility.format_error_stack;' || chr(10) ||

source/core/types/ut_executable_test.tpb

Lines changed: 14 additions & 18 deletions
Original file line numberDiff line numberDiff line change
@@ -11,21 +11,21 @@ create or replace type body ut_executable_test as
1111
return;
1212
end;
1313

14-
member procedure do_execute(self in out nocopy ut_executable_test, a_item in out nocopy ut_suite_item, a_listener in out nocopy ut_event_listener_base,
15-
a_expected_error_codes in ut_varchar2_list := null) is
14+
member procedure do_execute(
15+
self in out nocopy ut_executable_test, a_item in out nocopy ut_suite_item,
16+
a_listener in out nocopy ut_event_listener_base, a_expected_error_codes in ut_varchar2_list := null
17+
) is
1618
l_completed_without_errors boolean;
1719
begin
1820
l_completed_without_errors := self.do_execute(a_item, a_listener, a_expected_error_codes);
1921
end do_execute;
2022

21-
member function do_execute(self in out nocopy ut_executable_test, a_item in out nocopy ut_suite_item, a_listener in out nocopy ut_event_listener_base,
22-
a_expected_error_codes in ut_varchar2_list := null) return boolean is
23+
member function do_execute(
24+
self in out nocopy ut_executable_test, a_item in out nocopy ut_suite_item,
25+
a_listener in out nocopy ut_event_listener_base, a_expected_error_codes in ut_varchar2_list := null
26+
) return boolean is
2327
l_ut_executable ut_executable;
2428
l_expected_except_message varchar2(4000);
25-
l_owner varchar2(200) := self.owner_name;
26-
l_object_name varchar2(200) := self.object_name;
27-
l_procedure_name varchar2(200) := self.procedure_name;
28-
l_completed_without_errors boolean;
2929

3030
function failed_expec_errnum_message(a_error_stack in varchar2, a_expected_error_codes in ut_varchar2_list) return varchar is
3131
l_actual_error_no integer;
@@ -54,26 +54,22 @@ create or replace type body ut_executable_test as
5454
--Create a ut_executable object and call do_execute after that get the data to know the test's execution result
5555
l_ut_executable := treat(self as ut_executable);
5656
l_ut_executable.do_execute(a_item, a_listener);
57-
self.error_stack := l_ut_executable.error_stack;
58-
self.error_backtrace := l_ut_executable.error_backtrace;
5957
self.serveroutput := l_ut_executable.serveroutput;
6058

6159
if a_expected_error_codes is not null and a_expected_error_codes is not empty then
62-
l_expected_except_message := failed_expec_errnum_message(self.error_stack, a_expected_error_codes);
60+
l_expected_except_message := failed_expec_errnum_message(l_ut_executable.error_stack, a_expected_error_codes);
6361

6462
if l_expected_except_message is not null then
6563
ut_expectation_processor.add_expectation_result(
66-
ut_expectation_result(ut_utils.tr_failure, null, l_owner||'.'||l_object_name||'.'||l_procedure_name||' '||l_expected_except_message, false)
64+
ut_expectation_result(ut_utils.tr_failure, null, self.owner_name||'.'||self.object_name||'.'||self.procedure_name||' '||l_expected_except_message, false)
6765
);
6866
end if;
69-
70-
self.error_stack := null;
71-
self.error_backtrace := null;
67+
else
68+
self.error_stack := l_ut_executable.error_stack;
69+
self.error_backtrace := l_ut_executable.error_backtrace;
7270
end if;
7371

74-
l_completed_without_errors := (self.error_stack||self.error_backtrace) is null;
75-
76-
return l_completed_without_errors;
72+
return (self.error_stack||self.error_backtrace) is null;
7773
end;
7874
end;
7975
/

source/core/types/ut_executable_test.tps

Lines changed: 15 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -15,10 +15,20 @@ create or replace type ut_executable_test authid current_user under ut_executabl
1515
See the License for the specific language governing permissions and
1616
limitations under the License.
1717
*/
18-
constructor function ut_executable_test( self in out nocopy ut_executable_test, a_context ut_suite_item, a_procedure_name varchar2, a_associated_event_name varchar2) return self as result,
19-
member procedure do_execute(self in out nocopy ut_executable_test, a_item in out nocopy ut_suite_item, a_listener in out nocopy ut_event_listener_base,
20-
a_expected_error_codes in ut_varchar2_list := null),
21-
member function do_execute(self in out nocopy ut_executable_test, a_item in out nocopy ut_suite_item, a_listener in out nocopy ut_event_listener_base,
22-
a_expected_error_codes in ut_varchar2_list := null) return boolean
18+
constructor function ut_executable_test(
19+
self in out nocopy ut_executable_test, a_context ut_suite_item,
20+
a_procedure_name varchar2, a_associated_event_name varchar2
21+
) return self as result,
22+
23+
member procedure do_execute(
24+
self in out nocopy ut_executable_test, a_item in out nocopy ut_suite_item,
25+
a_listener in out nocopy ut_event_listener_base, a_expected_error_codes in ut_varchar2_list := null
26+
),
27+
28+
member function do_execute(
29+
self in out nocopy ut_executable_test, a_item in out nocopy ut_suite_item,
30+
a_listener in out nocopy ut_event_listener_base, a_expected_error_codes in ut_varchar2_list := null
31+
) return boolean
32+
2333
) final;
2434
/

source/core/ut_suite_builder.pkb

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -57,7 +57,7 @@ create or replace package body ut_suite_builder is
5757
begin
5858
/*the a_expected_error_codes is converted to a ut_varchar2_list after that is trimmed and filtered to left only valid exception numbers*/
5959
l_exception_number_list := ut_utils.string_to_table(a_exception_numbers, ',', 'Y');
60-
l_exception_number_list := ut_utils.trim_list_elements(l_exception_number_list, '[:space:]');
60+
l_exception_number_list := ut_utils.trim_list_elements(l_exception_number_list);
6161
l_exception_number_list := ut_utils.filter_list(l_exception_number_list, l_regexp_for_excep_nums);
6262

6363
return l_exception_number_list;

source/core/ut_utils.pkb

Lines changed: 26 additions & 20 deletions
Original file line numberDiff line numberDiff line change
@@ -492,35 +492,41 @@ procedure append_to_clob(a_src_clob in out nocopy clob, a_clob_table t_clob_tab,
492492
return to_char(a_value, gc_number_format, 'NLS_NUMERIC_CHARACTERS=''. ''');
493493
end;
494494

495-
function trim_list_elements(a_list IN ut_varchar2_list, a_characters_to_trim in varchar2) return ut_varchar2_list is
496-
l_trimmed_list ut_varchar2_list := ut_varchar2_list();
495+
function trim_list_elements(a_list IN ut_varchar2_list, a_regexp_to_trim in varchar2 default '[:space:]') return ut_varchar2_list is
496+
l_trimmed_list ut_varchar2_list;
497497
l_index integer;
498498
begin
499-
l_index := a_list.first;
500-
501-
while (l_index is not null) loop
502-
l_trimmed_list.extend;
503-
l_trimmed_list(l_trimmed_list.count) := regexp_replace(a_list(l_index), '(^['||a_characters_to_trim||']*)|(['||a_characters_to_trim||']*$)');
504-
l_index := a_list.next(l_index);
505-
end loop;
499+
if a_list is not null then
500+
l_trimmed_list := ut_varchar2_list();
501+
l_index := a_list.first;
502+
503+
while (l_index is not null) loop
504+
l_trimmed_list.extend;
505+
l_trimmed_list(l_trimmed_list.count) := regexp_replace(a_list(l_index), '(^['||a_regexp_to_trim||']*)|(['||a_regexp_to_trim||']*$)');
506+
l_index := a_list.next(l_index);
507+
end loop;
508+
end if;
506509

507510
return l_trimmed_list;
508511
end;
509512

510513
function filter_list(a_list IN ut_varchar2_list, a_regexp_filter in varchar2) return ut_varchar2_list is
511-
l_filtered_list ut_varchar2_list := ut_varchar2_list();
514+
l_filtered_list ut_varchar2_list;
512515
l_index integer;
513516
begin
514-
l_index := a_list.first;
515-
516-
while (l_index is not null) loop
517-
if regexp_like(a_list(l_index), a_regexp_filter) then
518-
l_filtered_list.extend;
519-
l_filtered_list(l_filtered_list.count) := a_list(l_index);
520-
end if;
521-
l_index := a_list.next(l_index);
522-
end loop;
523-
517+
if a_list is not null then
518+
l_filtered_list := ut_varchar2_list();
519+
l_index := a_list.first;
520+
521+
while (l_index is not null) loop
522+
if regexp_like(a_list(l_index), a_regexp_filter) then
523+
l_filtered_list.extend;
524+
l_filtered_list(l_filtered_list.count) := a_list(l_index);
525+
end if;
526+
l_index := a_list.next(l_index);
527+
end loop;
528+
end if;
529+
524530
return l_filtered_list;
525531
end;
526532

source/core/ut_utils.pks

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -294,7 +294,7 @@ create or replace package ut_utils authid definer is
294294
function to_xml_number_format(a_value number) return varchar2;
295295

296296
/*It takes a collection of type ut_varchar2_list and it trims the characters passed as arguments for every element*/
297-
function trim_list_elements(a_list IN ut_varchar2_list, a_characters_to_trim in varchar2) return ut_varchar2_list;
297+
function trim_list_elements(a_list IN ut_varchar2_list, a_regexp_to_trim in varchar2 default '[:space:]') return ut_varchar2_list;
298298

299299
/*It takes a collection of type ut_varchar2_list and it only returns the elements which meets the regular expression*/
300300
function filter_list(a_list IN ut_varchar2_list, a_regexp_filter in varchar2) return ut_varchar2_list;

test/api/test_ut_runner.pkb

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -190,7 +190,6 @@ end;';
190190
'Another line',
191191
lpad('A very long line',10000,'a')
192192
);
193-
dbms_output.enable;
194193
dbms_output.put_line(l_expected(1));
195194
dbms_output.put_line(l_expected(2));
196195
dbms_output.put_line(l_expected(3));

test/core/annotations/test_annot_throws_exception.pkb

Lines changed: 54 additions & 34 deletions
Original file line numberDiff line numberDiff line change
@@ -1,16 +1,19 @@
11
create or replace package body test_annot_throws_exception
22
is
3-
procedure create_package is
3+
g_tests_results ut3.ut_varchar2_list;
4+
5+
procedure recolect_tests_results is
46
pragma autonomous_transaction;
57

68
l_package_spec VARCHAR2(32737);
79
l_package_body VARCHAR2(32737);
10+
l_drop_statment VARCHAR2(32737);
811
begin
912
l_package_spec := '
1013
create package annotated_package_with_throws is
1114
--%suite(Dummy package to test annotation throws)
1215

13-
--%test(Throws samme annoted exception)
16+
--%test(Throws same annoted exception)
1417
--%throws(-20145)
1518
procedure raised_same_exception;
1619

@@ -90,98 +93,115 @@ is
9093

9194
execute immediate l_package_spec;
9295
execute immediate l_package_body;
93-
end;
94-
95-
procedure drop_package is
96-
pragma autonomous_transaction;
97-
98-
l_drop_statment VARCHAR2(32737);
99-
begin
96+
97+
select * bulk collect into g_tests_results from table(ut3.ut.run(('annotated_package_with_throws')));
98+
10099
l_drop_statment := 'drop package annotated_package_with_throws';
101100
execute immediate l_drop_statment;
102101
end;
103-
104-
function execution_test_result(a_procedure_test_name in varchar) return varchar2 is
105-
l_result varchar2(32737);
102+
103+
function test_result(a_test_results in ut3.ut_varchar2_list, a_procedure_name in varchar2) return varchar2
104+
is
105+
l_test_result varchar2(200);
106+
l_index integer;
107+
l_regexp_failure varchar2(200) := '^[ ]*[0-9]+\) '||a_procedure_name||'$';
108+
l_regexp_errored varchar2(200) := '^[ ]*ORA-[0-9]*:';
106109
begin
107-
select column_value
108-
into l_result
109-
from table(ut3.ut.run('annotated_package_with_throws.'||a_procedure_test_name, ut3.ut_documentation_reporter()))
110-
where regexp_like(column_value, '^([0-9]+) tests, [0-9]+ failed, [0-9]+ errored, [0-9]+ disabled, [0-9]+ warning\(s\)$');
111-
112-
return l_result;
110+
if a_test_results is not null then
111+
l_index := a_test_results.first;
112+
113+
while(l_index is not null) loop
114+
if regexp_like(a_test_results(l_index), l_regexp_failure) then
115+
if regexp_like(a_test_results(l_index + 1), l_regexp_errored) then
116+
l_test_result := 'ERRORED';
117+
exit;
118+
else
119+
l_test_result := 'FAILED';
120+
exit;
121+
end if;
122+
end if;
123+
124+
l_index := a_test_results.next(l_index);
125+
end loop;
126+
-- if nothing was found it returns SUCCESSFUL
127+
if l_test_result is null then
128+
l_test_result := 'SUCCESSFUL';
129+
end if;
130+
end if;
131+
132+
return l_test_result;
113133
end;
114134

115135
procedure throws_same_annotated_except is
116136
l_result VARCHAR2(32737);
117137
begin
118138
--Act
119-
l_result := execution_test_result('raised_same_exception');
139+
l_result := test_result(g_tests_results, 'raised_same_exception');
120140
--Assert
121-
ut.expect(l_result).to_equal('1 tests, 0 failed, 0 errored, 0 disabled, 0 warning(s)');
141+
ut.expect(l_result).to_equal('SUCCESSFUL');
122142
end;
123143

124144
procedure throws_one_of_annotated_excpt is
125145
l_result VARCHAR2(32737);
126146
begin
127147
--Act
128-
l_result := execution_test_result('raised_one_listed_exception');
148+
l_result := test_result(g_tests_results, 'raised_one_listed_exception');
129149
--Assert
130-
ut.expect(l_result).to_equal('1 tests, 0 failed, 0 errored, 0 disabled, 0 warning(s)');
150+
ut.expect(l_result).to_equal('SUCCESSFUL');
131151
end;
132152

133153
procedure throws_diff_annotated_except is
134154
l_result VARCHAR2(32737);
135155
begin
136156
--Act
137-
l_result := execution_test_result('raised_diff_exception');
157+
l_result := test_result(g_tests_results, 'raised_diff_exception');
138158
--Assert
139-
ut.expect(l_result).to_equal('1 tests, 1 failed, 0 errored, 0 disabled, 0 warning(s)');
159+
ut.expect(l_result).to_equal('FAILED');
140160
end;
141161

142162
procedure throws_empty is
143163
l_result VARCHAR2(32737);
144164
begin
145165
--Act
146-
l_result := execution_test_result('empty_throws');
166+
l_result := test_result(g_tests_results, 'empty_throws');
147167
--Assert
148-
ut.expect(l_result).to_equal('1 tests, 0 failed, 1 errored, 0 disabled, 0 warning(s)');
168+
ut.expect(l_result).to_equal('ERRORED');
149169
end;
150170

151171
procedure bad_paramters_with_except is
152172
l_result VARCHAR2(32737);
153173
begin
154174
--Act
155-
l_result := execution_test_result('bad_paramters_with_except');
175+
l_result := test_result(g_tests_results, 'bad_paramters_with_except');
156176
--Assert
157-
ut.expect(l_result).to_equal('1 tests, 0 failed, 1 errored, 0 disabled, 0 warning(s)');
177+
ut.expect(l_result).to_equal('ERRORED');
158178
end;
159179

160180
procedure bad_paramters_without_except is
161181
l_result VARCHAR2(32737);
162182
begin
163183
--Act
164-
l_result := execution_test_result('bad_paramters_without_except');
184+
l_result := test_result(g_tests_results, 'bad_paramters_without_except');
165185
--Assert
166-
ut.expect(l_result).to_equal('1 tests, 0 failed, 0 errored, 0 disabled, 0 warning(s)');
186+
ut.expect(l_result).to_equal('SUCCESSFUL');
167187
end;
168188

169189
procedure one_valid_exception_number is
170190
l_result VARCHAR2(32737);
171191
begin
172192
--Act
173-
l_result := execution_test_result('one_valid_exception_number');
193+
l_result := test_result(g_tests_results, 'one_valid_exception_number');
174194
--Assert
175-
ut.expect(l_result).to_equal('1 tests, 0 failed, 0 errored, 0 disabled, 0 warning(s)');
195+
ut.expect(l_result).to_equal('SUCCESSFUL');
176196
end;
177197

178198
procedure nothing_thrown is
179199
l_result VARCHAR2(32737);
180200
begin
181201
--Act
182-
l_result := execution_test_result('nothing_thrown');
202+
l_result := test_result(g_tests_results, 'nothing_thrown');
183203
--Assert
184-
ut.expect(l_result).to_equal('1 tests, 1 failed, 0 errored, 0 disabled, 0 warning(s)');
204+
ut.expect(l_result).to_equal('FAILED');
185205
end;
186206
end;
187207
/

0 commit comments

Comments
 (0)