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 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 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
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 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
https://github.com/avocado-framework/avocado/pull/5748).
* Python 3.12 is now formally supported (see
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
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 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
https://github.com/avocado-framework/avocado/issues/5775).
* The :mod:`avocado.utils.distro` module added specific detection for
CentOS Stream (see https://github.com/avocado-framework/avocado/issues/5667).
* The :mod:`avocado.utils.distro` module improved detection for
Amazon Linux (see 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
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 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>`_.