59.0 The Lobster

The Avocado team is proud to present another release: Avocado version 59.0, AKA “The Lobster”, is now available!

Release documentation: Avocado 59.0

The major changes introduced on this version are listed below, roughly categorized into major topics and intended audience:

Users/Test Writers

  • A new plugin enables users to list and execute tests based on the GLib test framework. This plugin allows individual tests inside a single binary to be listed and executed.
  • Users of the YAML test loader have now access to a few special keys that can tweak test attributes, including adding prefixes to test names. This allows users to easily differentiate among execution of the same test, but executed different configurations. For more information, look for “special keys” in the YAML Loader plugin documentation.
  • Users can now dump variants to a (JSON) file, and also reuse a previously created file in their future jobs execution. This allows users to avoid recomputing the variants on every job, which might bring significant speed ups in job execution or simply better control of the variants used during a job. Also notice that even when users do not manually dump a variants file to a specific location, Avocado will automatically save a suitable file at jobdata/variants.json as part of a Job results directory structure.
  • SIMPLE tests were limited to returning PASS, FAIL and WARN statuses. Now SIMPLE tests can now also return SKIP status. At the same time, SIMPLE tests were previously limited in how they would flag a WARN or SKIP from the underlying executable. This is now configurable by means of regular expressions.
  • The avocado.utils.process has seen a number of changes related to how it handles data from the executed processes. In a nutshell, process output (on both stdout and stderr) is now considered binary data. Users that need to deal with text instead, should use the newly added avocado.utils.process.CmdResult.stdout_text and avocado.utils.process.CmdResult.stderr_text, which are convenience properties that will attempt to decode the stdout or stderr data into a string-like type using the encoding set, and if none is set, falling back to the system default encoding. This change of behavior was needed to accommodate Python’s 2 and Python’s 3 differences in bytes and string-like types and handling.
  • The TAP result format plugin received improvements, including support for reporting Avocado tests with CANCEL status as SKIP (which is the closest status available in the TAP specification), and providing more visible warning information in case Avocado tests finish with WARN status (while maintaining the test as a PASS, since TAP doesn’t define a WARN status).
  • Removal of a number of already deprecated features related to the 36.0 LTS series, which reached End-Of-Life during this sprint.
  • Redundant (and deprecated) fields in the test sections of the JSON result output were removed. Now, instead of url, test and id carrying the same information, only id remains.
  • Python 3 (beta) support. After too many changes to mention individually, Avocado can now run satisfactorily on Python 3. The Avocado team is aware of a small number of issues, which maps to a couple of functional tests, and is conscientious of the fact that many other issues may come up as users deploy and run it on Python 3. Please notice that all code on Avocado already goes through the Python 3 versions of inspekt lint, inspekt style and runs all unittests. Because of the few issues mentioned earlier, functional tests do yet run on Avocado’s own CI, but are expected to be enable shortly after this release. For this release, expect packages to be available on PyPI (and consequently installable via pip). RPM packages should be available in the next release.

Bug Fixes

  • Avocado won’t crash when attempting, and not succeeding, to create a user-level configuration file ~/.config/avocado.conf. This is useful in restricted environments such as in containers, where the user may not have its own home directory. Avocado also won’t crash, but will report failure and exit, when it’s not able to create the job results directory.
  • Avocado will now properly respect the configuration files shipped in the Python module location, then the system wide (usually in /etc) configuration file, and finally the user level configuration files.
  • The YAML test loader will now correctly log messages intended to go the log files, instead of printing them in the UI.
  • Linux distributions detection code has been fixed for SuSE systems.
  • The avocado.utils.kernel library now supports fetching all major versions of the Linux kernel, and not only kernels from the 3.x series.

Internal Changes

  • Tests that perform checks on core Avocado features should not rely on upper level Avocado code. The functional/test_statuses.py selftest was changed in such a way, and doesn’t require the varianter_yaml_to_mux plugin anymore.
  • The Avocado assets and repository server now supports HTTPS connections. The documentation and code that refers to these services have been updated to use secure connections.

For more information, please check out the complete Avocado changelog.

Release Meeting

The Avocado release meetings are now open to the community via Hangouts on Air. The meetings are recorded and made available on the Avocado Test Framework YouTube channel.

For this release, you can watch the meeting on this link.