Announcing utPLSQL 3.1.0 and 3.1.1

On April 25th, a major release 3.1.0 of utPLSQL was published on github and the information was not published on our site.

Right after the release two issues were found resulting in bug fixes and release 3.1.1

Version 3.1.1 bug-fixes

Release 3.1.1 download page

Version 3.1.0 release notes

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.

Enhancements

Reporting

  • 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

Annotations

  • 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

Expectations

  • 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
  • Changed behavior of execution of ut.expect() on closed cursor (#548)
  • 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)

Bug-fixes

  • Coverage schema had to be explicitly provided, even when using a_include_objects (#511)
  • utPLSQL fails to run, when one of suite packages has no newline between --%suite and procedure-specific annotations. (#514 / #516)
  • Fixed false-negative code coverage reporting on labelled end loop elements (#539)
  • Fixed issue with invalid suite grouping when running xunit_reporter (#547)
  • Code coverage was always showing first report gathered in a session (#562)
  • Wrong format of time in XUnit_reporter when running on German locale (using comma as decimal separator) (#572)
  • Fixed issue with wrong exception getting thrown when suite failed and there was a pending distributed transaction (#601)
  • 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 (#568)