avocado-framework/avocado

View on GitHub
docs/source/releases/89_0.rst

Summary

Maintainability
Test Coverage
==========
89.0 Shrek
==========

The Avocado team is proud to present another release: Avocado 89.0,
AKA "Shrek", is now available!

Release documentation: `Avocado 89.0
<http://avocado-framework.readthedocs.io/en/89.0/>`_

Important Announcement
======================

The Avocado team is planning to switch the default runner, from the
implementation most people currently use (internally simply called
``runner``), to the newer architecture and implementation called
``nrunner``.  This may happen as soon as version 90.0 (the next
release).

**Users installing and relying on the latest Avocado release will be
impacted by this change and should plan accordingly.**

To keep using the current (soon to be legacy) runner, you **must** set
the ``--test-runner=runner`` command line option (or the equivalent
``test_runner`` configuration option, under section ``[run]``).

Known issues are being tracked on our GitHub project page, with the
``nrunner`` tag, and new issue reports are appreciated.

.. tip:: To select the ``nrunner`` on this release (89.0 and earlier),
         run ``avocado run --test-runner=nrunner``.

Users/Test Writers
==================

* A new ``asset`` requirement type has been introduced, allowing
  users to declare any asset obtainable with
  :mod:`avocado.utils.asset` to be downloaded, cached and thus be
  available to tests.

* ``--dry-run`` is now supported for the ``nrunner``.

* The man page has been thoroughly updated and put in sync with the
  current ``avocado`` command features and options.

* Avocado can now run from Python eggs.  It's expected that official
  egg builds will be made available starting with Avocado 90.0.
  Avocado is planning to use eggs as an automatic and transparent
  deployment mechanism for environments such as containers and VMs.

* The ``datadir.paths.logs_dir`` and ``datadir.paths.data_dir`` are
  set to more consistent and predictable values, and won't rely
  anymore on dynamic probes for "suitable" directories.

Bug Fixes
=========

* The ``nrunner`` now properly sets all test status status to the
  suite summary, making sure that errors are communicated to the
  end user through, among other means, the ``avocado`` execution
  exit code.

* When running tests in parallel, multiple downloads of the same image
  (when using :mod:`avocado.utils.vmimage`) is now prevented by a better
  (early) locking.

* A condition in which tests running in parallel could collide over
  the existence of the asset's cache directory (created by other
  running tests) is now fixed.

Utility APIs
============

* :meth:`avocado.utils.software_manager.SoftwareManager.extract_from_package`
  is a new method that lets users extract the content of supported
  package types (currently ``RPM`` and ``deb``).

* :meth:`avocado.utils.vmimage.get` is now deprecated in favor of
  :meth:`avocado.utils.vmimage.Image.from_parameters`

Internal Changes
================

* :class:`avocado.core.plugin_interfaces.Discoverer` is a new type of
  plugin interface that has been introduced to allow tests to be
  discovered without the need of references.

* Avocado now uses :func:`time.monotonic` pretty much everywhere it's
  possible.  This time function will survive clock updates, and will
  never go back.

* The safeloader, the Avocado component that looks for
  ``avocado-instrumented`` and ``python-unittest`` tests without
  executing possibly untrusted code, has seen a big refactor in this
  release, with an extended test coverage too.

* The ``avocado-runner-requirement-package`` will now check for a
  package before installing it.  This is an optimization and reduces
  the chance of multiple instances attempting to install packages
  at the same time.

* Improvements to the handling and saving of messages generated by the
  ``nrunner``.

* The ``nrunner`` received some prep work for supporting variants.
  Jobs using the ``nrunner`` can now see the variants being applied
  to test suites, but be aware that the parameters on variants are
  still not passed to the tests.

* The requirement runnables now have access to their "parent"
  configuration.

Misc Changes
============

* The documentation has been update and gives more precise instructions
  for the set up of development environments.

* Major changes to the CI, in a trend towards using more GH Actions based
  jobs.

For more information, please check out the complete
`Avocado changelog
<https://github.com/avocado-framework/avocado/compare/(88).0...89.0>`_.