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 as task.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 on time.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 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).

Utility Modules

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).

  • 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 raise FileExistsError 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 and stderr files for avocado-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() of avocado-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, 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).

  • 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.