Skip to content

@lwasylow lwasylow released this Jun 18, 2019

Changes in release 3.1.7

New features


  • Added optional install with DDL trigger to speed up framework start #901
  • Removed dependency on dbms_utility.name_resolve #569 #885
  • New output buffer table structures improving performance and addressing timeout issues #915

Bug fixes

  • Fixed ut_realtime_reporter missing warnings in test and suite output structures #936
  • Fixed output_buffer purging error #934
  • Fixed join_by / exclude / include invalid syntax on collection in anydata compare #912
  • Fixed ut_junit_reporter producing invalid output on failing tests with long failure message #927
  • Fixed ut_sonar_test_reporter producing invalid output on failing tests with long failure message #925
  • Fixed ut_coverage_cobertura_reporter producing wrong line breaks which breaks the xml validation against DTD #917
  • Fixed exclude option for ref cursor where column order was not resolved correctly #911
  • Fixed unordered option for ref cursor with null values #914
  • Fixed number precision when selecting from dual #907
  • Fixed ref cursor errors with generated column names #902
  • Fixed ORA-00907 when comparing ref cursors with BINARY_ columns #899
  • Fixed wrong results when comparing CLOBs with to_be_like in Oracle Database due to Oracle Bug 14402514 #891
  • Fixed performance issue with code coverage report on huge PL/SQL code base #882

Documentation improvements

  • Added install instructions for DDL trigger #874

Internal enhancements

  • Fixed SQL vulnerability on all input parameters used in dynamic SQL and PL/SQL #921
  • Fixed message id in output buffer #916
  • Included 19c database in self testing #909
  • Introduced testing with multiple schemas and different grants #893
  • Fixed installation script warnings #879
Assets 6

@lwasylow lwasylow released this Mar 24, 2019

Bugfix release for v3.1.5

Bug fixes

  • Fixed a bug in release 3.1.5 where to_equal matcher was failing due to privileges when comparing non sql diffable types #870


  • Reduced number of information displaying about user defined type. We will now display only type name instead of full structure #866
Assets 6

@jgebal jgebal released this Mar 20, 2019

Bugfix release for v3.1.4

Bug fixes

  • Fixed a bug in release 3.1.4 where to_be_empty matcher was failing due to privileges #864
Assets 6

@jgebal jgebal released this Mar 19, 2019

Changes in release 3.1.4

This release contains a bug that is fixed by release 3.1.5
Please use release 3.1.5 rather than this release.

New features

  • Added to_contain matcher for collections and cursors #79
  • Added unordered_columns (uc) option for cursor comparison to ignore the order of the columns #779
  • Added ut_debug_reporter for debug logging #480
  • Added ut_realtime_reporter for utPLSQL-SQLDeveloper extension #795


  • Improved performance of cursor comparison #780
  • Added support for installation on databases with block size < 8KB #848
  • Added initial timeout to ut_output_buffer #840
  • Enhanced performance of get_reporters_list function #814
  • Moved calls of dbms_lock.sleep to dbms_session for newer DB versions #806
  • utPLSQL coverage will now work without re-install after DB-upgrade from 12.1 to 12.2 #803

Bug fixes

  • Fixed problem with REGEXP in annotation parsing with NLS CANADIAN FRENCH #844
  • Fixed issue with Rollback to savepoint failing on distributed transaction #839
  • Fixed reporting of differences when comparing collections scalar values #835
  • Fixed issue with test run failing due to too many transaction invalidators #834
  • Fixed randomly occurring error during cursor comparison #827
  • utPLSQL install script will now support special characters in passwords #804

Documentation improvements

  • Fixed documentation examples for context annotation #851
  • Added description on how to check version of utPLSQL #822

Internal enhancements

  • Implemented Sonar analysis on DBA Views #850
  • Finished migration from old-tests #475
  • Fixed shell scripts to support multiple unix dialects (especially for macOS) #796
  • Added info on project support from Redgate #841
  • Added code_of_conduct #836
  • Added issue templates #842
  • Added utPLSQL logo #845
Assets 6

@jgebal jgebal released this Nov 20, 2018 · 577 commits to master since this release

Changes in release 3.1.3

New features

  • added function ut_runner.is_test #788
  • added function ut_runner.is_suite #787
  • added function ut_runner.has_suites #786
  • added ability to disable automatic rollback for a test-run #784
  • when invoked with package name, utPLSQL will now run only tests from specified package even if package has child packages by suitepath #776


  • Improved performance of schema-scanning and utPLSQL startup #778
  • Improved performance of output-buffer #777
  • Improved documentation to mention ability to pass client encoding for HTML & XML reports #775
  • Improved documentation for cursor comparison to mention challenges with TIMESTAMP bind variables


  • utPLSQL code coverage will now work properly with long object names #716
  • utPLSQL installation will now also work properly, when user performing the install has ANY grants #737
  • fixed documentation bug for --%context with --%displayname #726
  • fixed Teamcity reporter issues with missing escape for some characters and long messages #747
  • fixed issue with sonar test results reporter when contexts are used #749
  • fixed issue with ORA-07455 getting thrown on cursor comparison #752
  • fixed issue with wrong failure message for unordered data #764
  • fixed missing privilege issue for unordered/join-by cursor data comparison #765 #770

Internal enhancements

  • added suite-level cache to allow for faster retrieval of suite contents and enable implementation of additional features #783
Assets 6

@jgebal jgebal released this Jul 22, 2018 · 724 commits to master since this release

Changes in release 3.1.2

New features

  • Added ability to join and compare cursor content by specific columns (PK/UK) #453
  • Added support for comma separated list of suite paths/packages when calling #479
  • Added ability to run a test package that got invalidated due to dependency invalidation #489
  • Added support for package level constants and predefined exceptions in --%throws annotation #685
  • Added support for standalone --%beforeall, --%beforeeach, --%afterall, --%aftereach annotations with list of procedures to execute #649
  • Added support for list of procedure names in before/after annotations #649
  • Added support for BLOB/CLOB in is_empty() matcher #707


  • utPLSQL will now provide additional warnings, when unsupported annotations are found in a unit test suite package #624
  • utPLSQL will now produce valid XML in UT_JUNIT_REPORTER when dbms_output or test results contain <![CDATA[ text #643
  • improved installation process for non-DBA users #658
  • added uninstall_all.sql script that completely removes utPLSQL objects #673
  • Changed the way contexts are named #674
  • Added ability to pass client encoding information for XML/HTML reporting (requires utPLSQL-cli 3.1.1) #676
  • Exposed base objects for expectations, so that IDE like DataGrip can provide auto-complete #675
  • Both context-name as well as procedure inside context can now be passed as parameter to #679
  • Added validation of privileges before installation of utPLSQL #693


  • UT_JUNIT_REPORTER does not report tests when procedure names are not all lower-case #659 #696
  • Fixed utPLSQL installation order to avoid warnings/failures on install #657
  • Fixed uninstall process for utPLSQL #673
  • Fixed syntax errors in HTML coverage report #681 #682
  • Fixed install requirements documentation #687
  • Fixed capturing of DBMS_OUTPUT buffer at the start of test run #686

Internal enhancements

  • Added continuous testing of XML/HTML reports format #684
  • Added sonarcloud branch-based and PR code analysis #708
  • Added ability to trigger builds on sub-projects #501
Assets 6

@jgebal jgebal released this Apr 29, 2018 · 985 commits to master since this release

Changes in this release


  • #653 Block coverage reporting doesn't work on schema other than framework owner
  • #652 Reporter threads timeout and do not produce outputs when running with utplsql-cli and idle time exceeds 1 minute.
Assets 6

@jgebal jgebal released this Apr 25, 2018 · 1003 commits to master since this release

Important Notice

Starting with this release, utPLSQL-sql-cli is no longer supported.
Use utPLSQL-cli release 3.1.0 or above to interact with this and upcoming versions of utPLSQL.

Changes in this release



  • Added support for extended block coverage on Oracle 12.2 and above. Coverage reporters will now indicate partly covered lines (where applicable by coverage format).
  • Added new ut_tfs_junit_reporter for MS Team Foundation Server to support old JUnit xml format
  • Added new coverage reporter ut_coverage_cobertura_reporter
  • Fixed compatibility issues with ut_xunit_reporter. The reporter now conforms to the format specification.
  • Added ut_junit_reporter as a base for ut_xunit_reporter. The ut_xunit_reporter remains active for backward compatibility but is considered depreciated
  • Added reporting of differences when comparing cursors, oracle object and table types
  • Aligned ut_documentation_reporter to display tests annotated--%disabled as DISABLED
  • Added support for reporters that don't provide output to the API (reporters saving data to DB)
  • Improved API so that it's possible to support custom reporters from utPLSQL-java-api without code changes


  • added throws annotation to simplify writing tests for code that throws an exception
  • added context to enable grouping of tests into sub-suite in a test suite package
  • added warnings on invalid/misplaced annotations
  • added support for multiple declarations of before/after procedures
  • added propagation of rollback type defined on parent suite within suitepath


  • Added have_count matcher for checking cursor rows/collection elements count
  • Added include() and exclude() extensions to cursor and object/collection data comparison
  • Added diff functionality for cursor, object and collection data
  • When comparing cursors, column data-type is now also checked for equality
  • #548 - Changed behavior of execution of ut.expect() on closed cursor.
  • Added support for cursors with implicitly named columns

General improvements

  • Output buffer for reporting is now reporter-agnostic.
  • cli is no longer not interacting with output buffer but uses reporters to retrieve data instead.
  • Added ability to mark expectation syntax as deprecated and report warnings on deprecation
  • Added ability to get a list of annotations for a schema
  • Refactoring of annotation parsing
  • Refactoring of suite building
  • Migrated part of old script-based tests to new utPLSQL v3 tests
  • Documentation fixes and improvements
  • Reporters now provide a method to get description
  • Test execution continues even when encountered Existing state of packages was discarded/invalidated exceptions (ORA-04068/ORA-04061). The whole suite will execute, test result reports will be available and the exception will be re-thrown to the user after the run was finished. (#504)


  • #511 Coverage schema had to be explicitly provided, even when using a_include_objects
  • #514 / #516 utPLSQL fails to run, when one of suite packages has no newline between --%suite and procedure-specific annotations.
  • #539 Fixed false-negative code coverage reporting on labelled end loop elements
  • #547 Fixed issue with invalid suite grouping when running xunit_reporter
  • #562 Code coverage was always showing first report gathered in a session
  • #572 Wrong format of time in XUnit_reporter when running on German locale (using comma as decimal separator)
  • #601 Fixed issue with wrong exception getting thrown when suite failed and there was a pending distributed transaction
  • #568 Fixed file-mapper issue where two files were mapped into the same object and caused ORA-00001: unique constraint (UTP3.UT_COVERAGE_SOURCES_TMP_PK) violated
Assets 6

@jgebal jgebal released this Nov 3, 2017 · 1447 commits to master since this release


  • #509(#506) Savepoint name is now generated from sys_guid to avoid issues on Windows-based Oracle instances
  • #500(#499/#487) Fixed XML/HTML special characters in reporters and unified handling of failure reporting across reporters


  • #503 Fixed link to contributing guide in the doc
  • #502 Added example of handling exceptions to documentation
  • #486(#485) Added example for custom expectation-fail message in docs


  • #497(#478) Removed overloaded procedures
  • #496(#441) utPLSQL will not not open new transaction when running tests
  • #495(#482) Added buffering of dbms_output before the run
  • #494 Removed ut_expectation sub-types
  • #492 Restructured annotations and added caching to improve framework start-up time
Assets 6

@Pazus Pazus released this Aug 30, 2017 · 1506 commits to master since this release

Changes in this release

New features

#242 Added ability to exclude columns/attributes for cursor/object/collection comparison. Xpath can be used for column/attribute exclusion
#428 Added reporting to module, action, client_info fields of the v$session.
#408 Calling procedures can now raise exception if any test failed
#430 Added ability to check version compatibility ut_runner.version_compatibility_check

Improvements and fixes

#469 Fixed bug with framework executing multiple packages with similar names when using suitepaths
#462 Cursor comparison now supports cursors on Global Temporary Table
#461 Increased allowed chars for annotation name to 250
#445 Cursor comparison now supports cursors with more than 1000 rows
#431 dba_ views are now used (if available), increasing performance of the framework
#430 Changed how version number reporting in functions ut_runner.version, ut_run.version
#364 Improved warning message when implicit commit occurs
#413 Fixed Sonar Unit Test reporting for test suites with suitepth
#435 Fixed problem with identifying annotations when windows newline is used in package sources

Documentation fixes

#467 Moved to project root and updated content
#434 Fixed coverage format documentation
#439 Small documentation fixes

Internal improvements

#450 Added self-testing using released version of utPLSQL
#438 Sonar reporting disabled for PRs
#424 Moved to project-owned Docker images created by scripts from utPLSQL/docker-scripts project
#212 Added source_path and test_path parameters for coverage reporters
#420 Changed the way ut_file_mapper handles default parameters
#417 Improved performance and stability of access to internal framework tables
#425 Updated myStats library to v3
#402 ut_output_buffer is now abstracted from caller

Assets 6
You can’t perform that action at this time.