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

Skip to content

Commit c004cc5

Browse files
committed
Merge remote-tracking branch 'remotes/upstream/develop' into feature/using_released_to_test_develop
# Conflicts: # .travis.yml
2 parents c6d482c + 424a01c commit c004cc5

10 files changed

Lines changed: 221 additions & 4 deletions

.travis.yml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -90,7 +90,7 @@ script:
9090
- if [ "${TRAVIS_TAG}" = "" ]; then bash .travis/run_examples.sh; fi
9191
- if [ "${TRAVIS_TAG}" = "" ]; then bash .travis/run_old_tests.sh; fi
9292
- if [ "${TRAVIS_TAG}" = "" ]; then bash test/install_and_run_tests.sh; fi
93-
- if [ "${TRAVIS_TAG}" = "" ] && [ "${TRAVIS_REPO_SLUG}" = "${UTPLSQL_REPO}" ]; then sonar-scanner; fi
93+
- if [ "${TRAVIS_TAG}" = "" ] && [ "${TRAVIS_REPO_SLUG}" = "${UTPLSQL_REPO}" ] && [ "$TRAVIS_PULL_REQUEST" == "false" ]; then sonar-scanner; fi
9494
- if [ "${TRAVIS_TAG}" = "" ]; then bash .travis/coveralls_uploader.sh; fi
9595
- bash .travis/build_docs.sh
9696
- if [ "${TRAVIS_TAG}" = "" ]; then bash .travis/push_release_version.sh; fi

readme.md

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -73,7 +73,7 @@ select * from table(ut.run());
7373

7474
The above commands will run all the suites in the current schema and provide report to dbms_output or as a select statement.
7575

76-
# Command lien clients
76+
# Command line clients
7777

7878
To have more control over how the tests are invoked, use one of the utPLSQL command line clients: [utPLSQL-sql-cli](https://github.com/utPLSQL/utPLSQL-sql-cli) or [utPLSQL-cli](https://github.com/utPLSQL/utPLSQL-cli).
7979

source/core/types/ut_executable.tpb

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -96,6 +96,10 @@ create or replace type body ut_executable is
9696
begin
9797
if self.is_defined() then
9898
l_start_transaction_id := dbms_transaction.local_transaction_id(true);
99+
100+
-- report to application_info
101+
ut_utils.set_client_info(self.procedure_name);
102+
99103
--listener - before call to executable
100104
a_listener.fire_before_event(self.associated_event_name, a_item);
101105

@@ -144,6 +148,7 @@ create or replace type body ut_executable is
144148
if l_start_transaction_id != l_end_transaction_id or l_end_transaction_id is null then
145149
a_item.add_transaction_invalidator(self.form_name());
146150
end if;
151+
ut_utils.set_client_info(null);
147152
end if;
148153

149154
return l_completed_without_errors;

source/core/types/ut_suite.tpb

Lines changed: 5 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -41,7 +41,6 @@ create or replace type body ut_suite as
4141

4242
overriding member function do_execute(self in out nocopy ut_suite, a_listener in out nocopy ut_event_listener_base) return boolean is
4343
l_suite_savepoint varchar2(30);
44-
l_item_savepoint varchar2(30);
4544
l_suite_step_without_errors boolean;
4645

4746
procedure propagate_error(a_error_stack_trace varchar2) is
@@ -52,6 +51,9 @@ create or replace type body ut_suite as
5251
end;
5352
begin
5453
ut_utils.debug_log('ut_suite.execute');
54+
55+
ut_utils.set_action(self.object_name);
56+
5557
a_listener.fire_before_event(ut_utils.gc_suite,self);
5658

5759
self.start_time := current_timestamp;
@@ -92,6 +94,8 @@ create or replace type body ut_suite as
9294
self.calc_execution_result();
9395
self.end_time := current_timestamp;
9496
a_listener.fire_after_event(ut_utils.gc_suite,self);
97+
98+
ut_utils.set_action(null);
9599

96100
return l_suite_step_without_errors;
97101
end;

source/core/ut_metadata.pkb

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -128,7 +128,7 @@ create or replace package body ut_metadata as
128128
-- we fetch the source explicitly as dbms_preprocessor is very sow on 12.1 and 12.2 when grabbing the sources.
129129
l_lines := sys.dbms_preprocessor.get_post_processed_source(l_lines);
130130
for i in 1..l_lines.count loop
131-
ut_utils.append_to_clob(l_source, l_lines(i));
131+
ut_utils.append_to_clob(l_source, replace(l_lines(i), chr(13)||chr(10), chr(10)));
132132
end loop;
133133
return l_source;
134134
end;

source/core/ut_utils.pkb

Lines changed: 10 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -340,6 +340,16 @@ create or replace package body ut_utils is
340340
end if;
341341
return l_result;
342342
end;
343+
344+
procedure set_action(a_text in varchar2) is
345+
begin
346+
dbms_application_info.set_module('utPLSQL', a_text);
347+
end;
348+
349+
procedure set_client_info(a_text in varchar2) is
350+
begin
351+
dbms_application_info.set_client_info(a_text);
352+
end;
343353

344354
function to_xpath(a_list varchar2, a_ancestors varchar2 := '/*/') return varchar2 is
345355
l_xpath varchar2(32767) := a_list;

source/core/ut_utils.pks

Lines changed: 10 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -218,6 +218,16 @@ create or replace package ut_utils authid definer is
218218
procedure append_to_clob(a_src_clob in out nocopy clob, a_new_data varchar2);
219219

220220
function convert_collection(a_collection ut_varchar2_list) return ut_varchar2_rows;
221+
222+
/**
223+
* Set session's action and module using dbms_application_info
224+
*/
225+
procedure set_action(a_text in varchar2);
226+
227+
/**
228+
* Set session's client info using dbms_application_info
229+
*/
230+
procedure set_client_info(a_text in varchar2);
221231

222232
function to_xpath(a_list varchar2, a_ancestors varchar2 := '/*/') return varchar2;
223233

tests/RunAll.sql

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -49,6 +49,7 @@ exec ut_coverage.coverage_start_develop();
4949
@@lib/RunTest.sql ut_annotations/ut_annotations.parse_package_annotations.ParsePackageLevelAnnotationWithKeyValue.sql
5050
@@lib/RunTest.sql ut_annotations/ut_annotations.parse_package_annotations.ParsePackageLevelAnnotationWithMultilineComment.sql
5151
@@lib/RunTest.sql ut_annotations/ut_annotations.parse_package_annotations.spaceBeforeAnnotationParams.sql
52+
@@lib/RunTest.sql ut_annotations/ut_annotations.parse_package_annotations.ParseAnnotationWithWindowsNewline.sql
5253
@@lib/RunTest.sql ut_expectation_processor/who_called_expectation.parseStackTrace.sql
5354
@@lib/RunTest.sql ut_expectation_processor/who_called_expectation.parseStackTraceWith0x.sql
5455
@@ut_expectations/ut.expect.not_to_be_null.sql
@@ -233,6 +234,7 @@ exec ut_coverage.coverage_start_develop();
233234
@@lib/RunTest.sql ut_test/ut_test.TestOutputGathering.sql
234235
@@lib/RunTest.sql ut_test/ut_test.TestOutputGatheringWhenEmpty.sql
235236
@@lib/RunTest.sql ut_test/ut_test.ReportWarningOnRollbackFailed.sql
237+
@@lib/RunTest.sql ut_test/ut_test.ApplicationInfoOnExecution.sql
236238

237239
@@lib/RunTest.sql ut_test_suite/ut_test_suite.ErrorsATestWhenAfterTestFails.sql
238240
@@lib/RunTest.sql ut_test_suite/ut_test_suite.ErrorsATestWhenBeforeTestFails.sql
Lines changed: 37 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,37 @@
1+
PROMPT Parse package level annotations with windows newline
2+
3+
--Arrange
4+
declare
5+
l_source clob;
6+
l_parsing_result ut_annotations.typ_annotated_package;
7+
l_expected ut_annotations.typ_annotated_package;
8+
l_ann_param ut_annotations.typ_annotation_param;
9+
10+
begin
11+
l_source := 'PACKAGE test_tt AS
12+
-- %suite
13+
-- %displayname(Name of suite)' || chr(13) || chr(10)
14+
|| ' -- %suitepath(all.globaltests)
15+
END;';
16+
17+
--Act
18+
l_parsing_result := ut_annotations.parse_package_annotations(l_source);
19+
20+
--Assert
21+
l_ann_param := null;
22+
l_ann_param.val := 'Name of suite';
23+
l_expected.package_annotations('suite').params := cast( null as ut_annotations.tt_annotation_params);
24+
l_expected.package_annotations('displayname').params(1) := l_ann_param;
25+
26+
l_ann_param := null;
27+
l_ann_param.val := 'all.globaltests';
28+
l_expected.package_annotations('suitepath').params(1) := l_ann_param;
29+
30+
check_annotation_parsing(l_expected, l_parsing_result);
31+
32+
if ut_expectation_processor.get_status = ut_utils.tr_success then
33+
:test_result := ut_utils.tr_success;
34+
end if;
35+
36+
end;
37+
/
Lines changed: 149 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,149 @@
1+
create or replace package ut_output_tests
2+
as
3+
--%suite
4+
5+
gv_before_all_client_info varchar2(200);
6+
gv_before_each_client_info varchar2(200);
7+
gv_before_test_client_info varchar2(200);
8+
gv_after_test_client_info varchar2(200);
9+
gv_after_each_client_info varchar2(200);
10+
gv_after_all_client_info varchar2(200);
11+
12+
--%test
13+
--%beforetest(before_test)
14+
--%aftertest(after_test)
15+
procedure the_test;
16+
17+
--%beforeall
18+
procedure beforeall;
19+
20+
--%beforeeach
21+
procedure beforeeach;
22+
23+
procedure before_test;
24+
procedure after_test;
25+
26+
--%aftereach
27+
procedure aftereach;
28+
29+
--%afterall
30+
procedure afterall;
31+
32+
end;
33+
/
34+
35+
create or replace package body ut_output_tests
36+
as
37+
38+
procedure the_test
39+
as
40+
l_module_name varchar2(4000);
41+
l_action_name varchar2(4000);
42+
l_client_info varchar2(4000);
43+
begin
44+
--Generate empty output
45+
dbms_output.put_line('');
46+
ut.expect(1,'Test 1 Should Pass').to_equal(1);
47+
dbms_application_info.read_module(module_name => l_module_name, action_name => l_action_name);
48+
dbms_application_info.read_client_info(l_client_info);
49+
ut.expect(l_module_name).to_equal('utPLSQL');
50+
ut.expect(l_action_name).to_be_like('ut_output_tests');
51+
ut.expect(l_client_info).to_be_like('the_test');
52+
end;
53+
54+
procedure beforeall is
55+
begin
56+
dbms_application_info.read_client_info(gv_before_all_client_info);
57+
end;
58+
59+
procedure beforeeach is
60+
begin
61+
dbms_application_info.read_client_info(gv_before_each_client_info);
62+
end;
63+
64+
procedure before_test is
65+
begin
66+
dbms_application_info.read_client_info(gv_before_test_client_info);
67+
end;
68+
procedure after_test is
69+
begin
70+
dbms_application_info.read_client_info(gv_after_test_client_info);
71+
end;
72+
73+
procedure aftereach is
74+
begin
75+
dbms_application_info.read_client_info(gv_after_each_client_info);
76+
end;
77+
78+
procedure afterall is
79+
begin
80+
dbms_application_info.read_client_info(gv_after_all_client_info);
81+
end;
82+
83+
end;
84+
/
85+
86+
declare
87+
l_output_data dbms_output.chararr;
88+
l_num_lines integer := 100000;
89+
l_output clob;
90+
l_result boolean := true;
91+
l_client_info varchar2(4000);
92+
begin
93+
--act
94+
ut.run('ut_output_tests');
95+
96+
--assert
97+
dbms_output.get_lines( l_output_data, l_num_lines);
98+
dbms_lob.createtemporary(l_output,true);
99+
for i in 1 .. l_num_lines loop
100+
dbms_lob.append(l_output,l_output_data(i));
101+
end loop;
102+
103+
execute immediate 'begin :i := ut_output_tests.gv_before_all_client_info; end;' using out l_client_info;
104+
if not nvl(l_client_info = 'beforeall', false) then
105+
dbms_output.put_line('Wrong before all text: '||l_client_info);
106+
l_result := false;
107+
end if;
108+
execute immediate 'begin :i := ut_output_tests.gv_before_each_client_info; end;' using out l_client_info;
109+
if not nvl(l_client_info = 'beforeeach', false) then
110+
dbms_output.put_line('Wrong before each text: '||l_client_info);
111+
l_result := false;
112+
end if;
113+
execute immediate 'begin :i := ut_output_tests.gv_before_test_client_info; end;' using out l_client_info;
114+
if not nvl(l_client_info = 'before_test', false) then
115+
dbms_output.put_line('Wrong before test text: '||l_client_info);
116+
l_result := false;
117+
end if;
118+
execute immediate 'begin :i := ut_output_tests.gv_after_test_client_info; end;' using out l_client_info;
119+
if not nvl(l_client_info = 'after_test', false) then
120+
dbms_output.put_line('Wrong after test text: '||l_client_info);
121+
l_result := false;
122+
end if;
123+
execute immediate 'begin :i := ut_output_tests.gv_after_each_client_info; end;' using out l_client_info;
124+
if not nvl(l_client_info = 'aftereach', false) then
125+
dbms_output.put_line('Wrong after each text: '||l_client_info);
126+
l_result := false;
127+
end if;
128+
execute immediate 'begin :i := ut_output_tests.gv_after_all_client_info; end;' using out l_client_info;
129+
if not nvl(l_client_info = 'afterall', false) then
130+
dbms_output.put_line('Wrong after all text: '||l_client_info);
131+
l_result := false;
132+
end if;
133+
134+
if not nvl(l_output like '%0 failed, 0 errored, 0 disabled, 0 warning(s)%',false) then
135+
l_result := false;
136+
for i in 1 .. l_num_lines loop
137+
dbms_output.put_line(l_output_data(i));
138+
end loop;
139+
dbms_output.put_line('Failed: Wrong output');
140+
end if;
141+
if l_result then
142+
:test_result := ut_utils.tr_success;
143+
end if;
144+
end;
145+
/
146+
147+
drop package ut_output_tests
148+
/
149+

0 commit comments

Comments
 (0)