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

Skip to content

utPLSQL tests fails on Oracle 11.2.0.4 due to Oracle Bug 14402514  #891

Closed
@PhilippSalvisberg

Description

@PhilippSalvisberg

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 &quot;--%bad_procedure_annotation&quot;. Annotation ignored.
          at &quot;UT3_TESTER.SOME_PACKAGE.SOME_PROCEDURE&quot;, 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 &quot;--\%bad_procedure_annotation&quot;. 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 &quot;--\%bad_procedure_annotation&quot;. 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 &quot;--%bad_package_annotation&quot;. Annotation ignored.
          at &quot;UT3_TESTER.SOME_PACKAGE&quot;, 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 &quot;--\%bad_package_annotation&quot;. 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 &quot;--\%bad_package_annotation&quot;. 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 &quot;--%afterall&quot; cannot be used with &quot;--%test&quot;. Annotation ignored.
          at &quot;UT3_TESTER.SOME_PACKAGE.DO_STUFF&quot;, line 5</VARCHAR2><VARCHAR2>Annotation &quot;--%aftereach&quot; cannot be used with &quot;--%test&quot;. Annotation ignored.
          at &quot;UT3_TESTER.SOME_PACKAGE.DO_STUFF&quot;, line 4</VARCHAR2><VARCHAR2>Annotation &quot;--%beforeall&quot; cannot be used with &quot;--%test&quot;. Annotation ignored.
          at &quot;UT3_TESTER.SOME_PACKAGE.DO_STUFF&quot;, line 2</VARCHAR2><VARCHAR2>Annotation &quot;--%beforeeach&quot; cannot be used with &quot;--%test&quot;. Annotation ignored.
          at &quot;UT3_TESTER.SOME_PACKAGE.DO_STUFF&quot;, 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 &quot;--\%beforeall&quot;%line 2%</WARNINGS>%'  , escape '\'
      at "UT3_TESTER.TEST_SUITE_BUILDER", line 611 ut.expect(l_actual).to_be_like('%<WARNINGS>%Annotation &quot;--\%beforeall&quot;%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 &quot;--%afterall&quot; cannot be used with &quot;--%test&quot;. Annotation ignored.
          at &quot;UT3_TESTER.SOME_PACKAGE.DO_STUFF&quot;, line 5</VARCHAR2><VARCHAR2>Annotation &quot;--%aftereach&quot; cannot be used with &quot;--%test&quot;. Annotation ignored.
          at &quot;UT3_TESTER.SOME_PACKAGE.DO_STUFF&quot;, line 4</VARCHAR2><VARCHAR2>Annotation &quot;--%beforeall&quot; cannot be used with &quot;--%test&quot;. Annotation ignored.
          at &quot;UT3_TESTER.SOME_PACKAGE.DO_STUFF&quot;, line 2</VARCHAR2><VARCHAR2>Annotation &quot;--%beforeeach&quot; cannot be used with &quot;--%test&quot;. Annotation ignored.
          at &quot;UT3_TESTER.SOME_PACKAGE.DO_STUFF&quot;, 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 &quot;--\%beforeeach&quot;%line 3%</WARNINGS>%'  , escape '\'
      at "UT3_TESTER.TEST_SUITE_BUILDER", line 612 ut.expect(l_actual).to_be_like('%<WARNINGS>%Annotation &quot;--\%beforeeach&quot;%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 &quot;--%afterall&quot; cannot be used with &quot;--%test&quot;. Annotation ignored.
          at &quot;UT3_TESTER.SOME_PACKAGE.DO_STUFF&quot;, line 5</VARCHAR2><VARCHAR2>Annotation &quot;--%aftereach&quot; cannot be used with &quot;--%test&quot;. Annotation ignored.
          at &quot;UT3_TESTER.SOME_PACKAGE.DO_STUFF&quot;, line 4</VARCHAR2><VARCHAR2>Annotation &quot;--%beforeall&quot; cannot be used with &quot;--%test&quot;. Annotation ignored.
          at &quot;UT3_TESTER.SOME_PACKAGE.DO_STUFF&quot;, line 2</VARCHAR2><VARCHAR2>Annotation &quot;--%beforeeach&quot; cannot be used with &quot;--%test&quot;. Annotation ignored.
          at &quot;UT3_TESTER.SOME_PACKAGE.DO_STUFF&quot;, 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 &quot;--\%aftereach&quot;%line 4%</WARNINGS>%'  , escape '\'
      at "UT3_TESTER.TEST_SUITE_BUILDER", line 613 ut.expect(l_actual).to_be_like('%<WARNINGS>%Annotation &quot;--\%aftereach&quot;%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

  1. Install an Oracle Database containing this bug, e.g this
  2. install utPLSQL development environment
  3. 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:

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.

Metadata

Metadata

Labels

Type

No type

Projects

No projects

Milestone

Relationships

None yet

Development

No branches or pull requests

Issue actions