================ 90.0 Bladerunner ================ The Avocado team is proud to present another release: Avocado 90.0, AKA "Bladerunner", is now available! Release documentation: `Avocado 90.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 is scheduled to happen on version 91.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 (90.0 and earlier), run ``avocado run --test-runner=nrunner``. Users/Test Writers ================== * Avocado's safeloader (the system used to find Python based tests without executing them) received a major overhaul and now supports: 1. Multi-level module imports, such as ``from my.base.test import Test`` where a project may contain a ``my/base`` directory structure containing ``test.py`` that defines a custom ``Test`` class. 2. Support for following the import/inheritance hierarchy when a module contains an import for a given symbol, instead of the actual ``class`` definition of a symbol. 3. Considers coroutines (AKA ``async def``) as valid tests, reducing the number of boiler plate code necessary for tests of ``asyncio`` based code. 4. Supports class definitions (containing tests or not) that use a typing hint with subscription, commonly used in generics. * Test parameters given with ``-p`` are now support when using the ``nrunner``. * All status server URIs in the configuration are now respected for ``nrunner`` executions. * The resolver plugins now have access to the job/suite configuration. * The data directories now have less heuristics and are now more predictable and consistent with the configuration set. * The JSON results (``results.json``) now contain a field with the path of the test log file. * The root logger for Python's :mod:`logging` should no longer be impacted by Avocado's own logging initialization and clean up (which now limits itself to ``avocado.*`` loggers). Bug Fixes ========= * The ``whiteboard`` file and data are now properly saved when using the ``nrunner`` * The Podman spawner will now respect the Podman binary set in the job configuration. * The date and time fields shown on some result formats, such as in the HTML report, now are proper dates/times, and not Python's "monotonic" date/time. * The correct failure reason for tests executed with the ``nrunner`` are now being captured, instead of a possible exception caused by a error within the runner itself. Utility APIs ============ * :mod:`avocado.utils.ssh` now respects the username set when copying files via ``scp``. Misc Changes ============ * Update of all executable script's "shebangs" to ``/usr/bin/env python3`` from ``/usr/bin/env python`` * Better handling of ``KeyboardInterrupt`` exceptions on early stages of the Avocado execution. * The list of external resources was updated adding a number of projects that either are extensions of Avocado, or that use Avocado for their testing needs. Internal Changes ================ * ``selftests/check_tmp_dirs`` will only check for directories, ignoring files. * The examples in the documentation no longer contain user references to specific users, using generic names and paths instead. * A duplicated step has been removed from pre-release test plan. * A setuptools command to build the man page was added. * Updates to the Travis CI jobs, testing only Python 3.9 on s390x, ppc64le, and arm64, following the move to GHA. * A weekly GHA CI job was introduced. * Better standardization of the messages that ``nrunner`` runners generate by means of new utility methods. * Allows the exclusion of optional plugins when doing ``python3 setup.py develop``. For more information, please check out the complete `Avocado changelog `_.