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
Users/Test Writers
The remote spawner is a new optional plugin that makes use of remote 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).
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 astask.timeout.running
or--job-timeout
are the timeout users should worry about (see #5394).The
json
result file now contains the actual start and end time of tests in a format based ontime.time()
(see #5768).The
avocado jobs list
command now presents a sorted list of jobs based on the modification of the results file (see #5762).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).Python 3.12 is now formally supported (see #5789).
Resolvers can now choose to report a resolution result of type
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).When running
avocado-instrumented
tests with atimeout
defined, it’s possible to set atimeout_factor
parameter that will either extend or shorten the actual timeout for that execution (see #5820).
Utility Modules
The
avocado.utils.ssh.Session.cmd()
now supports setting atimeout
for the command execution (see #5775).The
avocado.utils.distro
module added specific detection for CentOS Stream (see #5667).The
avocado.utils.distro
module improved detection for Amazon Linux (see #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 themodulePath
parameter) is used explicitly by the Python module importer (see #5686).When dependencies are not fulfilled, test results would be missing, instead of being clearly shown as
CANCEL
(see #5667).avocado.utils.path.init_dir()
would raiseFileExistsError
if the directory already existed, usually causing crashes on its users (see #5746).The whiteboard file was being created with duplicate content because of the legacy runner implementation, which is now removed (see #5770).
The
avocado jobs show
command now presents the correct time tests have ended (see #5762).The
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).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).
Avocado has re-enabled
stdout
andstderr
files foravocado-instrumented
files (see #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).
The
tearDown()
ofavocado-instrumented
now gets called properly if a test times out (see #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).
When interrupting
avocado-instrumented
tests, thetearDown()
will be called to allow for cleanups. If an error occurred during the execution oftearDown()
the status of the test would change toERROR
(instead of keeping its originalINTERRUPT
status (see #5801).The HTML result plugin was not properly filtering tests based on their status (see #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).
Additional information
For more information, please check out the complete Avocado changelog.
For more information on the actual issues addressed, please check out the milestone information.
For more information on the release codename, please refer to IMDb.