71.0 Downton Abbey

The Avocado team is proud to present another release: Avocado 70.0, AKA “Downton Abbey”, is now available!

Release documentation: Avocado 71.0

Users/Test Writers

  • Avocado can now run on systems with nothing but Python 3 (and “quasi-standard-library” module setuptools). This means that it won’t require extra packages, and should be easier to deploy on containers, embedded systems, etc. Optional plugins may have additional requirements.

  • A new and still experimental test runner implementation, known as “N(ext) Runner” has been introduced. It brings a number of different concepts, increasing the decoupling between a test (and its runner) and the job. For more information, please refer to the early documentation <nrunner>.

  • The new avocado.cancel_on() decorator has been added to the Test APIs, allowing you to define the conditions for a test to be considered canceled. See one example here.

  • The glib plugin got a configuration option its safe/unsafe operation, that is, whether it will execute binaries in an attempt to find the whole list of tests. Look for the glib.conf shipped with the plugin to enable the unsafe mode.

  • Avocado can now use tags inside Python Unittests, and not only on its own Instrumented tests. It’s expected that other forms or providing tags for other types of tests will also be introduced in the near future.

  • The HTML report will now show, as a handy pop-up, the contents of the test whiteboard. If you set, say, performance metrics there, you’ll able to see straight from the report.

  • The HTML report now has filtering support by test status, and can show all records in the table.

  • The avocado.utils.runtime module, a badly designed mechanism for sharing Avocado runtime settings with the utility libraries, has been removed.

  • The test runner feature that would allow binaries to be run transparently inside GDB was removed. The reason for dropping such a feature have to do with how it limits the test runner to run one test at a time, and the use of the avocado.utils.runtime mechanism, also removed.

  • Initial examples for writing custom jobs, using the so called Job API, have been added to examples/jobs. These APIs are still non-public (under core), but they’re supposed to become public and supported soon.

  • By means of a new plugin (merge_files, of type job.prepost), when using the output check record output_check_record features, duplicate files created by different tests/variants will be consolidated into unique files.

Bug Fixes

  • The HTML plugin now correctly shows the date for tests that were never executed because of interrupted jobs.

  • A temporarily workaround for a stack overflow problem in Python 3.7 has been addressed.

  • The pict plugin (a varianter implementation) now properly yields the variants paths as a list.

  • A Python 3 related fix to mod:avocado.utils.software_manager, that was using Python 2 next on get_source.

  • A Python 3 related fix to the docker plugin, that wasn’t caught earlier.

Utility APIs

Internal Changes

  • Removal of the stevedore library dependency (previously used for the dispatcher/plugins infrastructure).

  • make check now runs selftests using the experimental N(ext) Runner.

  • Formal support for Python 3.7, which is now on our CI checks, documentation and module information.

  • The Yaml to Mux plugin now uses a safe version of the Yaml loader, so that the execution of arbitrary Python code from Yaml input is now no longer possible.

  • Codecov coverage reports for have been enabled for Avocado, and can be seen on every pull request.

  • New tests have been added to many of the optional plugins.

  • Various pylint compliance improvements, including w0231, w0235, w0706, w0715 and w0221.

  • Avocado’s selftests now use tempfile.TemporaryDirectory instead of mkdtemp and shutil.rmtree.

  • avocado.core.job.Job instantiation now takes a config dictionary parameter, instead of a argparse.Namespace instance, and keeps it in a config attribute.

  • avocado.core.job.Job instances don’t have a references attribute anymore. That information is available in the config attribute, that is, myjob.config['references'].

  • Basic checks for Fedora and RHEL 8 using Cirrus CI have been added, and will be shown on every pull request.

For more information, please check out the complete Avocado changelog.