avocado-framework/avocado

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

Summary

Maintainability
Test Coverage
========================
103.0 - Sound of Freedom
========================

The Avocado team is proud to present another release: Avocado 103.0,
AKA "Sound of Freedom", is now available!

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

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

* The remote spawner is a new optional plugin that makes use of remote
  `aexpect <https://github.com/avocado-framework/aexpect/>`__ sessions
  (to remote hosts or equivalently remote containers behind remote hosts
  forwarded via specific ports) as slots to schedule test runs on.

* The format of test log messages have been reverted to more closely
  match previous LTS (92.x) format like line number and Python module
  name (see `#5721
  <https://github.com/avocado-framework/avocado/issues/5721>`__).

* The ``avocado-instrumented`` runner used to have an internal timeout
  of 24 hours that users might not have intended to use or respect.
  This internal timeout has been removed and configuration such as
  ``task.timeout.running`` or ``--job-timeout`` are the timeout users
  should worry about (see `#5394
  <https://github.com/avocado-framework/avocado/issues/5394>`__).

* The ``json`` result file now contains the actual start and end time
  of tests in a format based on :func:`time.time` (see `#5768
  <https://github.com/avocado-framework/avocado/pull/5768>`__).

* The ``avocado jobs list`` command now presents a sorted list of jobs
  based on the modification of the results file (see `#5762
  <https://github.com/avocado-framework/avocado/pull/5762/commits/a956ff05ad18cec8fad88401a51d95a9da4a1462>`__).

* If the status server is manually configured (that is,
  ``--status-server-disable-auto`` is set), and either the URI
  (``--status-server-uri`` or the listen address is given
  (``--status-server-listen``) the other will automatically be set to
  the same value for convenience (see `#5748
  <https://github.com/avocado-framework/avocado/pull/5748>`__).

* Python 3.12 is now formally supported (see `#5789
  <https://github.com/avocado-framework/avocado/pull/5789>`__).

* Resolvers can now choose to report a resolution result of type
  :data:`avocado.core.resolver.ReferenceResolutionResult.CORRUPT`, which
  can be used when the reference seems to be accurate to the resolver in
  question, but something is broken in the resolved entity (such as a
  corrupt test file. See `#5710
  <https://github.com/avocado-framework/avocado/issues/5710>`__).

* When running ``avocado-instrumented`` tests with a ``timeout``
  defined, it's possible to set a ``timeout_factor`` parameter that
  will either extend or shorten the actual timeout for that execution
  (see `#5820
  <https://github.com/avocado-framework/avocado/issues/5820>`__).

Utility Modules
===============

* The :meth:`avocado.utils.ssh.Session.cmd` now supports setting a
  ``timeout`` for the command execution (see `#5775
  <https://github.com/avocado-framework/avocado/issues/5775>`__).

* The :mod:`avocado.utils.distro` module added specific detection for
  CentOS Stream (see `#5667
  <https://github.com/avocado-framework/avocado/issues/5667>`__).

* The :mod:`avocado.utils.distro` module improved detection for
  Amazon Linux (see `#5668
  <https://github.com/avocado-framework/avocado/issues/5668>`__).

Bug Fixes
=========

* The loader for ``avocado-instrumented`` tests could end up using the
  wrong Python module if a module of the same name existed elsewhere
  in the import path.  Now, the actual path of the Python file
  containing the test (given in the ``modulePath`` parameter) is used
  explicitly by the Python module importer (see `#5686
  <https://github.com/avocado-framework/avocado/issues/5686>`__).

* When :ref:`dependencies <managing-requirements>` are not fulfilled,
  test results would be missing, instead of being clearly shown as
  ``CANCEL`` (see `#5667
  <https://github.com/avocado-framework/avocado/issues/5667>`__).

* :func:`avocado.utils.path.init_dir` would raise
  :class:`FileExistsError` if the directory already existed, usually
  causing crashes on its users (see `#5746
  <https://github.com/avocado-framework/avocado/pull/5746>`__).

* The :ref:`whiteboard <saving-test-generated-custom-data>` file was
  being created with duplicate content because of the legacy runner
  implementation, which is now removed (see `#5770
  <https://github.com/avocado-framework/avocado/issues/5770>`__).

* The ``avocado jobs show`` command now presents the correct time
  tests have ended (see `#5762
  <https://github.com/avocado-framework/avocado/pull/5762/commits/b7ec30e69b2a51f97eb97ee445b12997366b5652>`__).

* The :func:`avocado.utils.download.url_open` function used to
  misleadingly says that a URL had been retrieved at a stage where
  only a response was obtained.  It now presents an accurate message
  (see `#5742
  <https://github.com/avocado-framework/avocado/issues/5742>`__).

* The Podman Spawner had a race condition where the state of the
  container (and thus the task) would not take into account the
  transition from "created" to "running" (see `#5783
  <https://github.com/avocado-framework/avocado/pull/5783>`__).

* Avocado has re-enabled ``stdout`` and ``stderr`` files for
  ``avocado-instrumented`` files (see `#5779
  <https://github.com/avocado-framework/avocado/issues/5779>`__).

* The Spawner interface and implementations now properly checks if the
  termination of a task was successful or not.  The statemachine uses
  that information to let users know of situations where a task could
  not be terminated (see `#5788
  <https://github.com/avocado-framework/avocado/pull/5788>`__).

* The ``tearDown()`` of ``avocado-instrumented`` now gets called
  properly if a test times out (see `#5795
  <https://github.com/avocado-framework/avocado/pull/5795>`__).

* The Process Spawner now properly handles a situation where, during
  the termination of a task, the process itself finishes before the
  spawner has the chance to do so (see `#5805
  <https://github.com/avocado-framework/avocado/pull/5805>`__).

* When interrupting ``avocado-instrumented`` tests, the ``tearDown()``
  will be called to allow for cleanups.  If an error occurred during
  the execution of ``tearDown()`` the status of the test would change
  to ``ERROR`` (instead of keeping its original ``INTERRUPT`` status
  (see `#5801
  <https://github.com/avocado-framework/avocado/issues/5801>`__).

* The HTML result plugin was not properly filtering tests based on
  their status (see `#5828
  <https://github.com/avocado-framework/avocado/issues/5828>`__).

* The ``testlogs`` plugin was not showing tests with all "not ok"
  statuses and was showing test names instead of test IDs which are
  unique in a suite (see `#5827
  <https://github.com/avocado-framework/avocado/issues/5827>`__).

Additional information
======================

For more information, please check out the complete
`Avocado changelog
<https://github.com/avocado-framework/avocado/compare/102.0...103.0>`_.

For more information on the actual issues addressed, please check out
the `milestone information
<https://github.com/avocado-framework/avocado/milestone/29?closed=1>`_.

For more information on the release codename, please refer to `IMDb
<https://www.imdb.com/title/tt7599146>`_.