Skip to content

Releases: avocado-framework/avocado

99.0

10 Nov 19:09
Compare
Choose a tag to compare
Release 99.0

The Thing

14 Jul 20:52
Compare
Choose a tag to compare

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

24 May 15:36
Compare
Choose a tag to compare

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

05 Apr 18:27
Compare
Choose a tag to compare

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
    and ERROR by default).

Bug Fixes

  • Python logging streams other than the ones in the avocado.*
    namespace will now be saved to the debug.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

09 Feb 22:33
Compare
Choose a tag to compare

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 to avocado list, for instance, is longer
    available. The nrunner 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 and nrunner architecture.

  • Test writers can now access a test's status while the tearDown
    method is being run.

  • Result plugins such as json and xunit 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, avoiding NoneType 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 RuntimeTasks 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

20 Dec 18:41
Compare
Choose a tag to compare

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's nrunner
    architecture in the default installation are now supported on a
    container (this includes avocado-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 and AVOCADO_TEST_WORKDIR are now
    available to exec-test tests run under the nrunner
    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 the nrunner
    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

17 Nov 22:30
93.0
75e91f1
Compare
Choose a tag to compare

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:

    1. The PYTHON_UNITTEST test type

    2. The --external-runner feature and its underlying test type.

    3. The ROBOT test type

    4. 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 the avocado 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:

    1. Ubuntu's provider now properly handles the version number when it
      compares versions with trailing zeroes.

    2. Ubuntu and OpenSUSE providers can now fetch the best (latest)
      version available when no version is given.

    3. 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 the jobdata 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 support set 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 the results.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

13 Sep 15:34
82.0
e975407
Compare
Choose a tag to compare

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
    relative import 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
    the avocado 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 using avocado 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 before PASS or
    FAIL.

  • The nrunner plugin will now properly set the job status in case
    of test failures, resulting in the job (and avocado 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

22 Nov 23:39
73.0
2501973
Compare
Choose a tag to compare

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 and robot. You can
    experiment it by running avocado nlist, similarly to how avocado 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 using sudo mode.

Utility APIs

  • The :mod:avocado.utils.vmimage library now allows a user to
    define the qemu-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 a interface_type
    parameter, while still defaulting to Ethernet.

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 with avocado 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>_.

Downton Abbey

15 Aug 16:25
71.0
d4d83d8
Compare
Choose a tag to compare

The Avocado team is proud to present another release: Avocado 70.0,
AKA "Downton Abbey", is now available!

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

Users/Test Writers

  • Avocado can now run on systems with nothing but Python 3 (and
    "quasi-standard-library" module setuptools). This means that it
    won't require extra packages, and should be easier to deploy on
    containers, embedded systems, etc. Optional plugins may have
    additional requirements.

  • A new and still experimental test runner implementation, known as
    "N(ext) Runner" has been introduced. It brings a number of
    different concepts, increasing the decoupling between a test (and
    its runner) and the job. For more information, please refer to
    :ref:the early documentation <nrunner>.

  • The new :func:avocado.cancel_on decorator has been added to the
    Test APIs, allowing you to define the conditions for a test to be
    considered canceled. See one example :ref:here <turning_errors_into_cancels>.

  • The glib plugin got a configuration option its safe/unsafe
    operation, that is, whether it will execute binaries in an attempt to
    find the whole list of tests. Look for the glib.conf shipped
    with the plugin to enable the unsafe mode.

  • Avocado can now use tags inside Python Unittests, and not only on
    its own Instrumented tests. It's expected that other forms or
    providing tags for other types of tests will also be introduced in
    the near future.

  • The HTML report will now show, as a handy pop-up, the contents of the
    test whiteboard. If you set, say, performance metrics there, you'll
    able to see straight from the report.

  • The HTML report now has filtering support by test status, and can
    show all records in the table.

  • The :mod:avocado.utils.runtime module, a badly designed mechanism
    for sharing Avocado runtime settings with the utility libraries, has
    been removed.

  • The test runner feature that would allow binaries to be run
    transparently inside GDB was removed. The reason for dropping such
    a feature have to do with how it limits the test runner to run one
    test at a time, and the use of the :mod:avocado.utils.runtime
    mechanism, also removed.

  • Initial examples for writing custom jobs, using the so called Job
    API, have been added to examples/jobs. These APIs are still
    non-public (under core), but they're supposed to become public
    and supported soon.

  • By means of a new plugin (merge_files, of type job.prepost),
    when using the :ref:output check record <output_check_record>
    features, duplicate files created by different tests/variants will
    be consolidated into unique files.

Bug Fixes

  • The HTML plugin now correctly shows the date for tests that were
    never executed because of interrupted jobs.

  • A temporarily workaround for a stack overflow problem in Python 3.7
    has been addressed.

  • The pict plugin (a varianter implementaion) now properly yields the
    variants paths as a list.

  • A Python 3 related fix to mod:avocado.utils.software_manager, that
    was using Python 2 next on get_source.

  • A Python 3 related fix to the docker plugin, that wasn't caught
    earlier.

Utility APIs

  • :mod:avocado.utils.partition now allows mkfs and mount
    flags to be set.

  • :func:avocado.utils.cpu.get_cpu_vendor_name now returns the CPU
    vendor name for POWER9.

  • :mod:avocado.utils.asset now allows a given location, as well as a
    list, to be given, simplifying the most common use case.

  • :meth:avocado.utils.process.SubProcess.stop now supports setting
    a timeout. Please refer to the documentation for the important
    details on its behavior.

  • :mod:avocado.utils.memory now properly handles hugepages for POWER
    platform.

Internal Changes

  • Removal of the stevedore library dependency (previously used for
    the dispatcher/plugins infrastructure).

  • make check now runs selftests using the experimental N(ext)
    Runner.

  • Formal support for Python 3.7, which is now on our CI checks,
    documentation and module information.

  • The Yaml to Mux plugin now uses a safe version of the Yaml loader,
    so that the execution of arbitrary Python code from Yaml input is
    now no longer possible.

  • Codecov coverage reports for have been enabled for Avocado, and
    can be seen on every pull request.

  • New tests have been added to many of the optional plugins.

  • Various pylint compliance improvements, including w0231, w0235,
    w0706, w0715 and w0221.

  • Avocado's selftests now use tempfile.TemporaryDirectory instead of
    mkdtemp and shutil.rmtree.

  • :class:avocado.core.job.Job instantiation now takes a config
    dictionary parameter, instead of a argparse.Namespace instance,
    and keeps it in a config attribute.

  • :class:avocado.core.job.Job instances don't have a references
    attribute anymore. That information is available in the config
    attribute, that is, myjob.config['references'].

  • Basic checks for Fedora and RHEL 8 using Cirrus CI have been added,
    and will be shown on every pull request.

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