Description
Describe the bug
When I run the utPLSQL tests against a Oracle Database Version
11.2.0.4.190115 (Enterprise Edition, Linux x86_64 within Docker) as follows
. development/env.sh
test/install_and_run_tests.sh
I the following result:
Failures:
1) test_bad_procedure_annotation
Actual: (clob)
'<UT_LOGICAL_SUITE><SELF_TYPE>UT_SUITE</SELF_TYPE><OBJECT_OWNER>UT3_TESTER</OBJECT_OWNER><OBJECT_NAME>some_package</OBJECT_NAME><NAME>some_package</NAME><DESCRIPTION>Cool</DESCRIPTION><PATH>some_package</PATH><ROLLBACK_TYPE>0</ROLLBACK_TYPE><DISABLED_FLAG>0</DISABLED_FLAG><LINE_NO>1</LINE_NO><PARSE_TIME>02.04.19 09:40:34.283553</PARSE_TIME><WARNINGS><VARCHAR2>Unsupported annotation "--%bad_procedure_annotation". Annotation ignored.
at "UT3_TESTER.SOME_PACKAGE.SOME_PROCEDURE", line 2</VARCHAR2></WARNINGS><ITEMS><UT_SUITE_ITEM><SELF_TYPE>UT_TEST</SELF_TYPE><OBJECT_OWNER>UT3_TESTER</OBJECT_OWNER><OBJECT_NAME>some_package</OBJECT_NAME><NAME>do_stuff</NAME><DESCRIPTION>A test</DESCRIPTION><PATH>some_package.do_stuff</PATH><ROLLBACK_TYPE>0</ROLLBACK_TYPE><DISABLED_FLAG>0</DISABLED_FLAG><LINE_NO>6</LINE_NO><PARSE_TIME>02.04.19 09:40:34.283553</PARSE_TIME><WARNINGS/><BEFORE_EACH_LIST/><BEFORE_TEST_LIST/><ITEM><SELF_TYPE>UT_EXECUTABLE_TEST</SELF_TYPE><EXECUTABLE_TYPE>test</EXECUTABLE_TYPE><OWNER_NAME>UT3_TESTER</OWNER_NAME><OBJECT_NAME>some_package</OBJECT_NAME><PROCEDURE_NAME>do_stuff</PROCEDURE_NAME></ITEM><AFTER_TEST_LIST/><AFTER_EACH_LIST/><ALL_EXPECTATIONS/><FAILED_EXPECTATIONS/></UT_SUITE_ITEM></ITEMS><BEFORE_ALL_LIST/><AFTER_ALL_LIST/></UT_LOGICAL_SUITE>'
was expected to be like:
'%<WARNINGS><VARCHAR2>Unsupported annotation "--\%bad_procedure_annotation". Annotation ignored.% line 2</VARCHAR2></WARNINGS>%'
, escape '\'
at "UT3_TESTER.TEST_SUITE_BUILDER", line 1098 ut.expect(l_actual).to_be_like('%<WARNINGS><VARCHAR2>Unsupported annotation "--\%bad_procedure_annotation". Annotation ignored.% line 2</VARCHAR2></WARNINGS>%', '\');
2) test_bad_package_annotation
Actual: (clob)
'<UT_LOGICAL_SUITE><SELF_TYPE>UT_SUITE</SELF_TYPE><OBJECT_OWNER>UT3_TESTER</OBJECT_OWNER><OBJECT_NAME>some_package</OBJECT_NAME><NAME>some_package</NAME><DESCRIPTION>Cool</DESCRIPTION><PATH>some_package</PATH><ROLLBACK_TYPE>0</ROLLBACK_TYPE><DISABLED_FLAG>0</DISABLED_FLAG><LINE_NO>1</LINE_NO><PARSE_TIME>02.04.19 09:40:34.335352</PARSE_TIME><WARNINGS><VARCHAR2>Unsupported annotation "--%bad_package_annotation". Annotation ignored.
at "UT3_TESTER.SOME_PACKAGE", line 17</VARCHAR2></WARNINGS><ITEMS><UT_SUITE_ITEM><SELF_TYPE>UT_TEST</SELF_TYPE><OBJECT_OWNER>UT3_TESTER</OBJECT_OWNER><OBJECT_NAME>some_package</OBJECT_NAME><NAME>do_stuff</NAME><DESCRIPTION>A test</DESCRIPTION><PATH>some_package.do_stuff</PATH><ROLLBACK_TYPE>0</ROLLBACK_TYPE><DISABLED_FLAG>0</DISABLED_FLAG><LINE_NO>24</LINE_NO><PARSE_TIME>02.04.19 09:40:34.335352</PARSE_TIME><WARNINGS/><BEFORE_EACH_LIST/><BEFORE_TEST_LIST/><ITEM><SELF_TYPE>UT_EXECUTABLE_TEST</SELF_TYPE><EXECUTABLE_TYPE>test</EXECUTABLE_TYPE><OWNER_NAME>UT3_TESTER</OWNER_NAME><OBJECT_NAME>some_package</OBJECT_NAME><PROCEDURE_NAME>do_stuff</PROCEDURE_NAME></ITEM><AFTER_TEST_LIST/><AFTER_EACH_LIST/><ALL_EXPECTATIONS/><FAILED_EXPECTATIONS/></UT_SUITE_ITEM></ITEMS><BEFORE_ALL_LIST/><AFTER_ALL_LIST/></UT_LOGICAL_SUITE>'
was expected to be like:
'%<WARNINGS><VARCHAR2>Unsupported annotation "--\%bad_package_annotation". Annotation ignored.% line 17</VARCHAR2></WARNINGS>%'
, escape '\'
at "UT3_TESTER.TEST_SUITE_BUILDER", line 1114 ut.expect(l_actual).to_be_like('%<WARNINGS><VARCHAR2>Unsupported annotation "--\%bad_package_annotation". Annotation ignored.% line 17</VARCHAR2></WARNINGS>%', '\');
3) before_after_mixed_with_test
Actual: (clob)
'<UT_LOGICAL_SUITE><SELF_TYPE>UT_SUITE</SELF_TYPE><OBJECT_OWNER>UT3_TESTER</OBJECT_OWNER><OBJECT_NAME>some_package</OBJECT_NAME><NAME>some_package</NAME><DESCRIPTION>Cool</DESCRIPTION><PATH>some_package</PATH><ROLLBACK_TYPE>0</ROLLBACK_TYPE><DISABLED_FLAG>0</DISABLED_FLAG><LINE_NO>1</LINE_NO><PARSE_TIME>02.04.19 09:40:35.989674</PARSE_TIME><WARNINGS><VARCHAR2>Annotation "--%afterall" cannot be used with "--%test". Annotation ignored.
at "UT3_TESTER.SOME_PACKAGE.DO_STUFF", line 5</VARCHAR2><VARCHAR2>Annotation "--%aftereach" cannot be used with "--%test". Annotation ignored.
at "UT3_TESTER.SOME_PACKAGE.DO_STUFF", line 4</VARCHAR2><VARCHAR2>Annotation "--%beforeall" cannot be used with "--%test". Annotation ignored.
at "UT3_TESTER.SOME_PACKAGE.DO_STUFF", line 2</VARCHAR2><VARCHAR2>Annotation "--%beforeeach" cannot be used with "--%test". Annotation ignored.
at "UT3_TESTER.SOME_PACKAGE.DO_STUFF", line 3</VARCHAR2></WARNINGS><ITEMS><UT_SUITE_ITEM><SELF_TYPE>UT_TEST</SELF_TYPE><OBJECT_OWNER>UT3_TESTER</OBJECT_OWNER><OBJECT_NAME>some_package</OBJECT_NAME><NAME>do_stuff</NAME><DESCRIPTION>A test</DESCRIPTION><PATH>some_package.do_stuff</PATH><ROLLBACK_TYPE>0</ROLLBACK_TYPE><DISABLED_FLAG>0</DISABLED_FLAG><LINE_NO>6</LINE_NO><PARSE_TIME>02.04.19 09:40:35.989674</PARSE_TIME><WARNINGS/><BEFORE_EACH_LIST/><BEFORE_TEST_LIST/><ITEM><SELF_TYPE>UT_EXECUTABLE_TEST</SELF_TYPE><EXECUTABLE_TYPE>test</EXECUTABLE_TYPE><OWNER_NAME>UT3_TESTER</OWNER_NAME><OBJECT_NAME>some_package</OBJECT_NAME><PROCEDURE_NAME>do_stuff</PROCEDURE_NAME></ITEM><AFTER_TEST_LIST/><AFTER_EACH_LIST/><ALL_EXPECTATIONS/><FAILED_EXPECTATIONS/></UT_SUITE_ITEM></ITEMS><BEFORE_ALL_LIST/><AFTER_ALL_LIST/></UT_LOGICAL_SUITE>'
was expected to be like: '%<WARNINGS>%Annotation "--\%beforeall"%line 2%</WARNINGS>%' , escape '\'
at "UT3_TESTER.TEST_SUITE_BUILDER", line 611 ut.expect(l_actual).to_be_like('%<WARNINGS>%Annotation "--\%beforeall"%line 2%</WARNINGS>%', '\');
Actual: (clob)
'<UT_LOGICAL_SUITE><SELF_TYPE>UT_SUITE</SELF_TYPE><OBJECT_OWNER>UT3_TESTER</OBJECT_OWNER><OBJECT_NAME>some_package</OBJECT_NAME><NAME>some_package</NAME><DESCRIPTION>Cool</DESCRIPTION><PATH>some_package</PATH><ROLLBACK_TYPE>0</ROLLBACK_TYPE><DISABLED_FLAG>0</DISABLED_FLAG><LINE_NO>1</LINE_NO><PARSE_TIME>02.04.19 09:40:35.989674</PARSE_TIME><WARNINGS><VARCHAR2>Annotation "--%afterall" cannot be used with "--%test". Annotation ignored.
at "UT3_TESTER.SOME_PACKAGE.DO_STUFF", line 5</VARCHAR2><VARCHAR2>Annotation "--%aftereach" cannot be used with "--%test". Annotation ignored.
at "UT3_TESTER.SOME_PACKAGE.DO_STUFF", line 4</VARCHAR2><VARCHAR2>Annotation "--%beforeall" cannot be used with "--%test". Annotation ignored.
at "UT3_TESTER.SOME_PACKAGE.DO_STUFF", line 2</VARCHAR2><VARCHAR2>Annotation "--%beforeeach" cannot be used with "--%test". Annotation ignored.
at "UT3_TESTER.SOME_PACKAGE.DO_STUFF", line 3</VARCHAR2></WARNINGS><ITEMS><UT_SUITE_ITEM><SELF_TYPE>UT_TEST</SELF_TYPE><OBJECT_OWNER>UT3_TESTER</OBJECT_OWNER><OBJECT_NAME>some_package</OBJECT_NAME><NAME>do_stuff</NAME><DESCRIPTION>A test</DESCRIPTION><PATH>some_package.do_stuff</PATH><ROLLBACK_TYPE>0</ROLLBACK_TYPE><DISABLED_FLAG>0</DISABLED_FLAG><LINE_NO>6</LINE_NO><PARSE_TIME>02.04.19 09:40:35.989674</PARSE_TIME><WARNINGS/><BEFORE_EACH_LIST/><BEFORE_TEST_LIST/><ITEM><SELF_TYPE>UT_EXECUTABLE_TEST</SELF_TYPE><EXECUTABLE_TYPE>test</EXECUTABLE_TYPE><OWNER_NAME>UT3_TESTER</OWNER_NAME><OBJECT_NAME>some_package</OBJECT_NAME><PROCEDURE_NAME>do_stuff</PROCEDURE_NAME></ITEM><AFTER_TEST_LIST/><AFTER_EACH_LIST/><ALL_EXPECTATIONS/><FAILED_EXPECTATIONS/></UT_SUITE_ITEM></ITEMS><BEFORE_ALL_LIST/><AFTER_ALL_LIST/></UT_LOGICAL_SUITE>'
was expected to be like: '%<WARNINGS>%Annotation "--\%beforeeach"%line 3%</WARNINGS>%' , escape '\'
at "UT3_TESTER.TEST_SUITE_BUILDER", line 612 ut.expect(l_actual).to_be_like('%<WARNINGS>%Annotation "--\%beforeeach"%line 3%</WARNINGS>%', '\');
Actual: (clob)
'<UT_LOGICAL_SUITE><SELF_TYPE>UT_SUITE</SELF_TYPE><OBJECT_OWNER>UT3_TESTER</OBJECT_OWNER><OBJECT_NAME>some_package</OBJECT_NAME><NAME>some_package</NAME><DESCRIPTION>Cool</DESCRIPTION><PATH>some_package</PATH><ROLLBACK_TYPE>0</ROLLBACK_TYPE><DISABLED_FLAG>0</DISABLED_FLAG><LINE_NO>1</LINE_NO><PARSE_TIME>02.04.19 09:40:35.989674</PARSE_TIME><WARNINGS><VARCHAR2>Annotation "--%afterall" cannot be used with "--%test". Annotation ignored.
at "UT3_TESTER.SOME_PACKAGE.DO_STUFF", line 5</VARCHAR2><VARCHAR2>Annotation "--%aftereach" cannot be used with "--%test". Annotation ignored.
at "UT3_TESTER.SOME_PACKAGE.DO_STUFF", line 4</VARCHAR2><VARCHAR2>Annotation "--%beforeall" cannot be used with "--%test". Annotation ignored.
at "UT3_TESTER.SOME_PACKAGE.DO_STUFF", line 2</VARCHAR2><VARCHAR2>Annotation "--%beforeeach" cannot be used with "--%test". Annotation ignored.
at "UT3_TESTER.SOME_PACKAGE.DO_STUFF", line 3</VARCHAR2></WARNINGS><ITEMS><UT_SUITE_ITEM><SELF_TYPE>UT_TEST</SELF_TYPE><OBJECT_OWNER>UT3_TESTER</OBJECT_OWNER><OBJECT_NAME>some_package</OBJECT_NAME><NAME>do_stuff</NAME><DESCRIPTION>A test</DESCRIPTION><PATH>some_package.do_stuff</PATH><ROLLBACK_TYPE>0</ROLLBACK_TYPE><DISABLED_FLAG>0</DISABLED_FLAG><LINE_NO>6</LINE_NO><PARSE_TIME>02.04.19 09:40:35.989674</PARSE_TIME><WARNINGS/><BEFORE_EACH_LIST/><BEFORE_TEST_LIST/><ITEM><SELF_TYPE>UT_EXECUTABLE_TEST</SELF_TYPE><EXECUTABLE_TYPE>test</EXECUTABLE_TYPE><OWNER_NAME>UT3_TESTER</OWNER_NAME><OBJECT_NAME>some_package</OBJECT_NAME><PROCEDURE_NAME>do_stuff</PROCEDURE_NAME></ITEM><AFTER_TEST_LIST/><AFTER_EACH_LIST/><ALL_EXPECTATIONS/><FAILED_EXPECTATIONS/></UT_SUITE_ITEM></ITEMS><BEFORE_ALL_LIST/><AFTER_ALL_LIST/></UT_LOGICAL_SUITE>'
was expected to be like: '%<WARNINGS>%Annotation "--\%aftereach"%line 4%</WARNINGS>%' , escape '\'
at "UT3_TESTER.TEST_SUITE_BUILDER", line 613 ut.expect(l_actual).to_be_like('%<WARNINGS>%Annotation "--\%aftereach"%line 4%</WARNINGS>%', '\');
Finished in 176.665283 seconds
799 tests, 3 failed, 0 errored, 1 disabled, 0 warning(s)
Provide version info
SQL> declare
2 l_version varchar2(255);
3 l_compatibility varchar2(255);
4 begin
5 dbms_utility.db_version( l_version, l_compatibility );
6 dbms_output.put_line( l_version );
7 dbms_output.put_line( l_compatibility );
8 end;
9 /
11.2.0.4.0
11.2.0.4.0
PL/SQL procedure successfully completed.
SQL> select substr(ut.version(),1,60) as ut_version from dual;
UT_VERSION
------------------------------------------------------------
v3.1.7.2795-develop
SQL> select * from v$version;
BANNER
--------------------------------------------------------------------------------
Oracle Database 11g Enterprise Edition Release 11.2.0.4.0 - 64bit Production
PL/SQL Release 11.2.0.4.0 - Production
CORE 11.2.0.4.0 Production
TNS for Linux: Version 11.2.0.4.0 - Production
NLSRTL Version 11.2.0.4.0 - Production
SQL> select * from nls_session_parameters;
PARAMETER VALUE
------------------------------ ----------------------------------------
NLS_LANGUAGE AMERICAN
NLS_TERRITORY SWITZERLAND
NLS_CURRENCY SFr.
NLS_ISO_CURRENCY SWITZERLAND
NLS_NUMERIC_CHARACTERS .'
NLS_CALENDAR GREGORIAN
NLS_DATE_FORMAT DD.MM.RR
NLS_DATE_LANGUAGE AMERICAN
NLS_SORT BINARY
NLS_TIME_FORMAT HH24:MI:SSXFF
NLS_TIMESTAMP_FORMAT DD.MM.RR HH24:MI:SSXFF
NLS_TIME_TZ_FORMAT HH24:MI:SSXFF TZR
NLS_TIMESTAMP_TZ_FORMAT DD.MM.RR HH24:MI:SSXFF TZR
NLS_DUAL_CURRENCY SF
NLS_COMP BINARY
NLS_LENGTH_SEMANTICS BYTE
NLS_NCHAR_CONV_EXCP FALSE
17 rows selected.
SQL> select substr(dbms_utility.port_string,1,60) as port_string from dual;
PORT_STRING
------------------------------------------------------------
x86_64/Linux 2.4.xx
Information about client software
current utPLSQL-cli
To Reproduce
- Install an Oracle Database containing this bug, e.g this
- install utPLSQL development environment
- run
test/install_and_run_tests.sh
Expected behavior
test/install_and_run_tests.sh
produces no errors.
Additional context
Further information about the Oracle bug are available on My Oracle Support:
- Wrong Results With LIKE On CLOB Using ESCAPE Clause (Doc ID 1489922.1)
- Bug 14402514 : WRONG RESULTS WITH LIKE ON CLOB USING ESCAPE CHARACTER
The recommended workaround is to use REGEXP_LIKE
instead of LIKE with an escape character.
Related lines in utPLSQL:
All these tests use to_be_like
with an escape character. Behind the scenes a LIKE
expression with an escape character is used and this leads in these cases to a wrong result.