Releases: avocado-framework/avocado
100.0
The Avocado team is proud to present another release: Avocado 100.0,
AKA "The 100", is now available!
Users/Test Writers
-
Asset cache checksum can now use multiple hash algorithms. The
ability to store multiple hashes, created by different algorithm to
the cacheCHECKSUM
file was added. This is useful when
different tests refer to the same asset, but use different hash
algorithms. -
Information on a test's file name was introduced in the xunit/junit
result files. Although not a standard field everywhere, this
information is used and displayed on platforms such as GitLab. -
Python 3.11 (final) is now formally supported and tested on CI.
-
The
runner.output.utf8
andcore.input_encoding
were settings
were removed, and now default to the the system's setting (by using
:func:sys.getdefaultencoding()
. -
Command line options prefixed with
--nrunner-
had that prefixed
removed. A command line option such as--nrunner-spawner
is now
simply--spawner
. The matching configuration options such as
nrunner.something
becamerun.something
. This is due to the
fact that nrunner is now the only runner implementation offered by
default, so the differentiation and extra typing seems unnecessary.
If other runners are added in the future (or by custom, out of tree,
plugins) they can choose to respect the existing options if they
apply. -
The
avocado jobs get-output-files
command was removed. Its
original intended purpose has not been relevant for some time, and
the preservation of output files are already handled directly by all
spawner implementations.
Utility Modules
-
:mod:
avocado.utils.process
received the changes necessary to cope
with changes in :func:signal.default_int_handler
. It now passes
all the given arguments along. -
:mod:
avocado.utils.software_manager
now allows DNF/YUM repository
options to be customized.
Bug Fixes
-
Fixed a limit for
exec-test
andtap
tests, where the
STDOUT
orSTDERR
buffers could be exhausted, and the test
would get stuck forever on further writes. Theexec-test
and
tap
runners can now make use of the (optional)output_dir
parameter, resulting in a much more efficient I/O handling. When
output_dir
is used, the only limitation onSTDOUT
and
STDERR
is the file-system itself. -
The
--show
option was not being respected when running
avocado-instrumented
tests. The log messages generated by, say,
anavocado.test.foo
logger, should be presented at the Avocado
job UI as it happens, provided--show=avocado.test.foo
was
given. -
An existing aid for the usage of Avocado running from Python eggs
would result in unnecessary changes to thePYTHONPATH
. Those
changes could cause unpredictable Python module import behavior. -
Fixed a condition in which, when failing to import Python modules on
tests, the error message returned wasTest.__init__() got an unexpected keyword argument 'run.results_dir'
which was quite
cryptic and confused users. -
The assets fetch plugin won't attempt to fetch and cache the assets
of the same test more than once. -
Running tests' statuses are now properly marked as
INTERRUPTED
instead ofCANCEL
when they reach their own (or the job)
timeout. -
The
avocado jobs show
command used to show a simplified and
possibly incorrect information about the spawner used. This
information is no longer displayed, given that it's a test suite
attribute, and not really a job level information. -
The Podman spawner could fail to preserve the output directory when
users on the host and the container did not match. This has now
been fixed.
Internal Changes
-
The resolver received the same kind of test coverage as the legacy
loader architecture, in preparation for the removal of the loader. -
The Fedora version used on selftests related to the Podman spawner
were pinned to 36. The reason is that, because of the release of
Fedora 37, which has Python 3.11, nosetuptools
or Avocado eggs
are available for Python 3.11 yet. -
Removal of the generic
avocado-runner
runner, which is a
reminiscent of the all-in-onenrunner.py
file, for ease of
deployment. With the nrunner split and now deployed via Python eggs,
it does not have to exist anymore. -
Selftests will no longer not store temporary results in user's
default results directory.
For more information, please check out the complete
Avocado changelog.
99.0
The Thing
Hello everyone,
This is another Avocado release announcement: 98.0 is now available!
Release Notes
Since we host the release notes alongside our official documentation, please refer to the following link for the complete information about this release:
https://avocado-framework.readthedocs.io/en/98.0/releases/98_0.html
Installing Avocado
Instructions are available in our documentation on how to install either with packages or from source:
https://avocado-framework.readthedocs.io/en/98.0/guides/user/chapters/installing.html
RPM packages for the current Fedoras (35 and 36) and EL 8 (Red Hat Enterprise Linux, CentOS Stream, etc) will be available on those distributions' "avocado" module, on the "latest" stream. The installation should be straightforward, and you can find instructions here:
https://avocado-framework.readthedocs.io/en/98.0/guides/user/chapters/installing.html#fedora
Also, updated Python source and binary packages are available on PyPI:
https://pypi.org/project/avocado-framework/
Avocado-VT
This Avocado release is compatible with Avocado-VT 98.0, also released Today.
Happy hacking and testing!
97.0
Hello everyone,
This is another Avocado release announcement: 97.0 is now available!
Release Notes
Since we host the release notes alongside our official documentation,
please refer to the following link for the complete information about
this release:
https://avocado-framework.readthedocs.io/en/97.0/releases/97_0.html
Installing Avocado
Instructions are available in our documentation on how to install
either with packages or from source:
https://avocado-framework.readthedocs.io/en/97.0/guides/user/chapters/installing.html
RPM packages for the current Fedoras (34, 35 and 36) and EL 8 (Red Hat
Enterprise Linux, CentOS Stream, etc) will be available on those
distributions' "avocado" module, on the "latest" stream. The
installation should be straightforward, and you can find instructions
here:
https://avocado-framework.readthedocs.io/en/97.0/guides/user/chapters/installing.html#fedora
Also, updated Python source and binary packages are available on PyPI:
https://pypi.org/project/avocado-framework/
Avocado-VT
This Avocado release may work with the latest Avocado-VT code, but that
combination was not supported. The next Avocado release (98.0) will
have a matching Avocado-VT release, and compatibility will be guaranteed.
Happy hacking and testing!
Nueve reinas
The Avocado team is proud to present another release: Avocado 96.0,
AKA "Nueve reinas", is now available!
Release documentation: Avocado 96.0
Users/Test Writers
-
Plugins can now have a builtin priority in relation to other plugins
of the same type that will affect its :ref:execution order <plugins_execution_order>
. This is in addition to the configurable
plugins.$type.order
settings. -
Avocado will now print a more descriptive list of tests that
finished with a particular status at the end of the job (FAIL
andERROR
by default).
Bug Fixes
- Python logging streams other than the ones in the
avocado.*
namespace will now be saved to thedebug.log
files when set with
--store-logging-stream
option.
Utility APIs
-
The :mod:
avocado.utils.cloudinit
now allows for a finer grained
usage of the functionality in
:class:avocado.utils.cloudinit.PhoneHomeServer
. -
The :mod:
avocado.utils.network.ports
fixed some wrong premises
regarding the availability of open ports for different protocols
(such as a free TCP versus a free UDP port).
Internal Changes
-
Modernization of Python code with a switch to f-strings.
-
A :class:
avocado.core.nrunner.Task
's set of requirements are now
called dependencies instead. -
The dependencies of a :class:
avocado.core.nrunner.Task
are now
tracked on the more suitable
:class:avocado.core.task.runtime.RuntimeTask
. -
SRPMs for packit builds are now built in COPR.
PAW Patrol: The Movie
The Avocado team is proud to present another release: Avocado 95.0, AKA “PAW Patrol: The Movie”, is now available!
Release documentation: Avocado 95.0
Users/Test Writers
-
A large part of the legacy runner has been removed. The
--loader
options toavocado list
, for instance, is longer
available. Thenrunner
architecture and runner implementation
has been the default one since version 91.0, and the remaining parts
of the legacy runner will be removed soon. -
A script that provides the features of the legacy
--external-runner
feature has been added. It's built on the Job
API andnrunner
architecture. -
Test writers can now access a test's status while the
tearDown
method is being run. -
Result plugins such as
json
andxunit
now contain more accurate
values reflecting Avocado's concepts of a test's ID and name. -
Support was added for
Coverage.py
when running
avocado-instrumented
tests (currently limited to the
ProcessSpawner
). -
By setting the
spawner.podman.avocado_spawner_egg
configuration
users can now control the exact Avocado package that will be
automatically deployed within Podman containers.
Bug Fixes
-
A default value was added to the Spawner's attribute that tracks the
job's output directory, avoidingNoneType
errors when it's not
explicitly set. -
A crash when using the Podman spawner, after changes to the output
dir handling, has fixed.
Misc Changes
-
RuntimeTask
instances are now comparable, and should now be
unique when representing requirements, preventing having duplicates. -
The order of the
RuntimeTask
s are now defined in a dependency
graph, in accordance with BluePrint 004.
Internal Changes
-
setup.py test
now returns a non-zero error code when failures
occur. -
RHEL 9 Beta has been added to some CI checks, and Ubuntu has been
updated from 18.04 to 21.10. -
Pylint was updated to 2.12.2, along with many changes to conform to
the checks performed by that version. -
Many parts of Avocado, including most "optional plugins", are now
PEP420 compliant. -
Improvements to the contributor guide.
-
CI checks running on Cirrus-CI have been moved to GitHub Actions.
-
Packit builds have been added for CentOS Stream 8 and 9.
For more information, please check out the complete
Avocado changelog <https://github.com/avocado-framework/avocado/compare/94.0...95.0>
_.
Gran Torino
The Avocado team is proud to present another release: Avocado 94.0,
AKA "Gran Torino", is now available!
Release documentation: http://avocado-framework.readthedocs.io/en/94.0/
Users/Test Writers
-
The Podman Spawner now deploys Avocado inside a container using
Python eggs. This is a significant change from previous versions in
the sense that all test types supported by Avocado'snrunner
architecture in the default installation are now supported on a
container (this includesavocado-instrumented
,tap
, etc). -
A results plugin for
Beaker <https://beaker-project.org>
_ is
now available and works out of the box without any manual
configuration needed. -
The
AVOCADO_VERSION
andAVOCADO_TEST_WORKDIR
are now
available toexec-test
tests run under thenrunner
architecture. -
nrunner
task identifiers can now be configured as a format
string that utilizes the attributes of the runnable. This allows
users to define how test results will be named and presented. -
The
--output-check-record
has been dropped for the legacy
runner. A similar feature is planned to be added to thenrunner
architecture.
Bug Fixes
- Objects that could not be serialized as JSON were causing crashes
during job runs.
Utility APIs
-
mod:
avocado.utils.network
removed deprecated modules and methods. -
mod:
avocado.utils.vmimage
now uses https://cloud.debian.org for
obtaining Debian Cloud images.
Misc Changes
-
A Blue Print for a new architecture responsible for handling the
tasks dependencies has been approved -
More work towards the elimination of root logger usage
Internal Changes
-
Spanwers now better cooperate with runners with regards to the
output directory, avoiding duplicate directories and unnecessary
data copies. -
CodeCoverage CI jobs will run only once (on Python 3.10)
-
The
selftests/check.py
script now allows for the inclusion
(--select
) or exclusion (--skip
) of major test groups to be
run -
The import style used throughout Avocado has switched from relative
to absolute imports
The Book of Eli
The Avocado team is proud to present another release: Avocado 93.0,
AKA "The Book of Eli", is now available!
Release documentation: Avocado 93.0 <http://avocado-framework.readthedocs.io/en/93.0/>
_
Users/Test Writers
-
The
dict_variants
plugin now allows the configuration of the
keys that will determine the variant ID. -
The legacy runner (
--test-runner=runner
) is being dismantled.
In this release, the following features have removed:-
The
PYTHON_UNITTEST
test type -
The
--external-runner
feature and its underlying test type. -
The
ROBOT
test type -
The
GOLANG
test type
-
-
When using the Job API, test suites can be enabled or disabled.
Having a disabled test suite means it won't be executed. This eases
the creation of custom jobs where the user can choose to run a
subset of suites.
Bug Fixes
-
The :mod:
avocado.core.job
code was using the root logger, instead
of the logger at theavocado
namespace. -
The automatic status server was very prone to failures due to
AF_UNIX
's limitation on the length of paths, because it was
created inside a job's result directory. Now it's created on the
base system temporary directory, which makes it very hard to exceed
the path length limit. -
The :mod:
avocado.utils.vmimage
library received the following
improvements:-
Ubuntu's provider now properly handles the version number when it
compares versions with trailing zeroes. -
Ubuntu and OpenSUSE providers can now fetch the best (latest)
version available when no version is given. -
OpenSUSE provider will now use OpenStack images starting from
version 15.3, due to the other images having been discontinued.
-
-
The
variants.json
file, saved at thejobdata
directory
inside a job's result directory, now takes into consideration the
possible multiple suites in a job. The files are now named after
named with a numeric suffix and, if a name was given to the suite, a
name suffix as well. -
The serialization of the job configuration file, also saved in the
jobdata
directory, has been updated to supportset
data
types. -
avocado replay
executions with a--show
(which takes a set
of builtin loggers) now work properly due to the previous fix. -
Various fixes to the
runnable-run
interface behavior of all
shipped runners (detected as part of an improvement in functional
test coverage). -
When using the Job API, some code paths would still resort to using
the legacy runner. -
nrunner
based jobs (the default) can now run from Python egg
based deployments (meaning zero installation steps are required). -
The
resultsdb
plugin is now pinned to a known working version
due to a broken release. -
Test parameters given with the command line argument
-p
are now
internally converted into variants values. This fixes the issue
with those parameters not being displayed in theresults.html
files.
Utility APIs
- The new method
avocado.utils.network.interfaces.NetworkInterface.is_bond
that
allows users to check if a given interface is a bonding device.
Misc Changes
-
A few portability improvements for macOS systems.
-
Misc documentation improvements.
Internal Changes
-
The RPM packages can now be built without the execution of tests.
-
The spawner plugin interface now define two different types of
implementations, with the new one being a spawner that is capable of
deploying itself to the environments that will run the tasks. -
Avocado is now also being tested under Python 3.11.
-
Various CI improvements.
Avengers: End Game
The Avocado team is proud to present another release: Avocado 82.0,
AKA "Avengers: Endgame", is now available!
This release is also an :ref:LTS<rfc-long-term-stability>
Release,
with a different :ref:Release Notes<lts_82_0>
that covers the
changes since :ref:69.x LTS<lts_69_0>
.
Release documentation: Avocado 82.0 <http://avocado-framework.readthedocs.io/en/82.0/>
_
Bug Fixes
-
Avocado can now find tests on classes that are imported using
relativeimport
statements with multiple classes. Previously
only the first class imported in such a statement was properly
processed. -
avocado run
will now create test suites without an automatic
(and usually very verbose) name, but instead without a name, given
that there will be only one suite on such jobs. This restores
theavocado run
behavior users expected and are used to. -
Hint files are now being respected again, this time within the
context of test suite creation. -
Filtering by tags is now working properly when using the resolver,
that is, when usingavocado list --resolver -t $tag -- $reference
. -
Test suites now properly respect the configuration given to them, as
opposed to using a configuration composed by the default registered
option values. -
Fixed the "elapsed time" produced by the
avocado-instrumented
nrunner runner (that is,avocado-runner-avocado-instrumented
). -
avocado --verbose list --resolver -- $reference
has reinstated
the presentation of failed resolution information, which is useful
for understanding why a test reference was not resolved into a test. -
The "legacy replay plugin", that is,
avocado run --replay
, can
now replay a subset of tests based on their status. -
The
avocado diff
command won't crash anymore if given
sysinfo
files with binary content. It will log the issue, and
not attempt to present binary differences. -
The HTML report generated by
avocado diff
now runs properly
and won't crash. -
The asset fetcher plugin won't crash anymore due to differences in
the AST based node attributes. -
:class:
avocado.utils.process.FDDrainer
now properly respects the
presence and absence of newlines produced when running new processes
via :func:avocado.utils.process.run
and friends. This also fixes
tests that relied on the "output check" feature because of missing
newlines. -
The
nrunner
plugin will now always display test status in the
most natural order, that is,STARTED
beforePASS
or
FAIL
. -
The
nrunner
plugin will now properly set the job status in case
of test failures, resulting in the job (andavocado run
) exit
status to properly signal failures. -
A vast documentation review was performed, with many fixes and
improvements.
For more information, please check out the complete
Avocado changelog: 81.0...82.0
Pulp Fiction
The Avocado team is proud to present another release: Avocado 73.0,
AKA "Pulp Fiction", is now available!
Release documentation: Avocado 73.0 <http://avocado-framework.readthedocs.io/en/73.0/>
_
Users/Test Writers
-
INSTRUMENTED
tests using the
:func:avocado.core.test.Test.fetch_asset
can take advantage of
plugins that will attempt to download (and cache) assets before the
test execution. This should make the overall test execution more
reliable, and give better test execution times as the download
time will be excluded. Users can also manually execute the
avocado assets
command to manually fetch assets from tests. -
The still experimental "N(ext) Runner" support for Avocado
Instrumented tests is more complete and supports tag filtering and
passing tags to the tests. -
A new architecture for "finding" tests has been introduced as an
alternative to the :mod:avocado.core.loader
code. It's based
around the :mod:avocado.core.resolver
, and it's currently used in
the still experimental "N(ext) Runner". It currently supports tests
of the following types:avocado-instrumented
,exec-test
,
glib
,golang
,python-unittest
androbot
. You can
experiment it by runningavocado nlist
, similarly to howavocado list
is used. -
Avocado
sysinfo
feature file will now work out of the box on
pip
based installations. Previously, it would require
configuration files tweaks to adjust installation paths. -
A massive documentation overhaul, now designed around guides to
different target audiences. The "User's Guide", "Test Writer's
Guide" and "Contributor's Guide" can be easily found as first lever
sections contain curated content for those audiences.
Bug Fixes
-
Content supposed to be UI only could leak into TAP files, making
them invalid. -
Avocado's
sysinfo
feature will now run commands without a
shell, resulting in more proper captured output, without shell
related content. -
:func:
avocado.utils.process.SubProcess.send_signal
will now send a
signal to itself correctly even when usingsudo
mode.
Utility APIs
-
The :mod:
avocado.utils.vmimage
library now allows a user to
define theqemu-img
binary that will be used for creating
snapshot images via the :data:avocado.utils.vmimage.QEMU_IMG
variable. -
The :mod:
avocado.utils.configure_network
module introduced
a number of utilities, including MTU configuration support,
a method for validating network among peers, IPv6 support, etc. -
The :func:
avocado.utils.configure_network.set_ip
function now
supports different interface types through ainterface_type
parameter, while still defaulting toEthernet
.
Internal Changes
-
Package support for Enterprise Linux 8.
-
Increased CI coverage, having tests now run on four different
hardware architectures: amd64 (x86_64), arm64 (aarch64), ppc64le and
s390x. -
Packit support adding extended CI coverage, with RPM packages being
built for Pull Requests and results shown on GitHub. -
Pylint checks for w0703 were enabled.
-
Runners, such as the remote runner, vm runner, docker runner, and
the default local runner now conform to a "runner" interface and
can be seen as proper plugins withavocado plugins
. -
Avocado's configuration parser will now treat values with relative
paths as a special value, and evaluate their content in relation
to the Python's distribution directory where Avocado is installed.
For more information, please check out the complete
Avocado changelog <https://github.com/avocado-framework/avocado/compare/72.0...73.0>
_.