Extension (plugin) APIs¶
Extension APIs that may be of interest to plugin writers.
Submodules¶
avocado.plugins.archive module¶
Result Archive Plugin
-
class
avocado.plugins.archive.
Archive
¶ Bases:
avocado.core.plugin_interfaces.Result
-
description
= 'Result archive (ZIP) support'¶
-
name
= 'zip_archive'¶
-
render
(result, job)¶
-
avocado.plugins.config module¶
avocado.plugins.diff module¶
Job Diff
-
class
avocado.plugins.diff.
Diff
¶ Bases:
avocado.core.plugin_interfaces.CLICmd
Implements the avocado ‘diff’ subcommand
-
configure
(parser)¶ Add the subparser for the diff action.
Parameters: parser – Main test runner parser.
-
description
= 'Shows the difference between 2 jobs.'¶
-
name
= 'diff'¶
-
run
(args)¶
-
avocado.plugins.distro module¶
-
avocado.plugins.distro.
DISTRO_PKG_INFO_LOADERS
= {'deb': <class 'avocado.plugins.distro.DistroPkgInfoLoaderDeb'>, 'rpm': <class 'avocado.plugins.distro.DistroPkgInfoLoaderRpm'>}¶ the type of distro that will determine what loader will be used
-
class
avocado.plugins.distro.
Distro
¶ Bases:
avocado.core.plugin_interfaces.CLICmd
Implements the avocado ‘distro’ subcommand
-
configure
(parser)¶
-
description
= 'Shows detected Linux distribution'¶
-
get_output_file_name
(args)¶ Adapt the output file name based on given args
It’s not uncommon for some distros to not have a release number, so adapt the output file name to that
-
name
= 'distro'¶
-
run
(args)¶
-
-
class
avocado.plugins.distro.
DistroDef
(name, version, release, arch)¶ Bases:
avocado.utils.distro.LinuxDistro
More complete information on a given Linux Distribution
Can and should include all the software packages that ship with the distro, so that an analysis can be made on whether a given package that may be responsible for a regression is part of the official set or an external package.
-
software_packages
= None¶ All the software packages that ship with this Linux distro
-
software_packages_type
= None¶ A simple text that denotes the software type that makes this distro
-
to_dict
()¶ Returns the representation as a dictionary
-
to_json
()¶ Returns the representation of the distro as JSON
-
-
class
avocado.plugins.distro.
DistroPkgInfoLoader
(path)¶ Bases:
object
Loads information from the distro installation tree into a DistroDef
It will go through all package files and inspect them with specific package utilities, collecting the necessary information.
-
get_package_info
(path)¶ Returns information about a given software package
Should be implemented by classes inheriting from
DistroDefinitionLoader
.Parameters: path (str) – path to the software package file Returns: tuple with name, version, release, checksum and arch Return type: tuple
-
get_packages_info
()¶ This method will go through each file, checking if it’s a valid software package file by calling
is_software_package()
and callingload_package_info()
if it’s so.
-
is_software_package
(path)¶ Determines if the given file at path is a software package
This check will be used to determine if
load_package_info()
will be called for file at path. This method should be implemented by classes inheriting fromDistroPkgInfoLoader
and could be as simple as checking for a file suffix.Parameters: path (str) – path to the software package file Returns: either True if the file is a valid software package or False otherwise Return type: bool
-
-
class
avocado.plugins.distro.
DistroPkgInfoLoaderDeb
(path)¶ Bases:
avocado.plugins.distro.DistroPkgInfoLoader
Loads package information for DEB files
-
get_package_info
(path)¶
-
is_software_package
(path)¶
-
-
class
avocado.plugins.distro.
DistroPkgInfoLoaderRpm
(path)¶ Bases:
avocado.plugins.distro.DistroPkgInfoLoader
Loads package information for RPM files
-
get_package_info
(path)¶
-
is_software_package
(path)¶ Systems needs to be able to run the rpm binary in order to fetch information on package files. If the rpm binary is not available on this system, we simply ignore the rpm files found
-
-
class
avocado.plugins.distro.
SoftwarePackage
(name, version, release, checksum, arch)¶ Bases:
object
Definition of relevant information on a software package
-
to_dict
()¶ Returns the representation as a dictionary
-
to_json
()¶ Returns the representation of the distro as JSON
-
-
avocado.plugins.distro.
load_distro
(path)¶ Loads the distro from an external file
Parameters: path (str) – the location for the input file Returns: a dict with the distro definition data Return type: dict
-
avocado.plugins.distro.
load_from_tree
(name, version, release, arch, package_type, path)¶ Loads a DistroDef from an installable tree
Parameters: - name (str) – a short name that precisely distinguishes this Linux Distribution among all others.
- version (str) – the major version of the distribution. Usually this is a single number that denotes a large development cycle and support file.
- release (str) – the release or minor version of the distribution. Usually this is also a single number, that is often omitted or starts with a 0 when the major version is initially release. It’s often associated with a shorter development cycle that contains incremental a collection of improvements and fixes.
- arch (str) – the main target for this Linux Distribution. It’s common for some architectures to ship with packages for previous and still compatible architectures, such as it’s the case with Intel/AMD 64 bit architecture that support 32 bit code. In cases like this, this should be set to the 64 bit architecture name.
- package_type (str) – one of the available package info loader types
- path (str) – top level directory of the distro installation tree files
avocado.plugins.envkeep module¶
avocado.plugins.exec_path module¶
Libexec PATHs modifier
-
class
avocado.plugins.exec_path.
ExecPath
¶ Bases:
avocado.core.plugin_interfaces.CLICmd
Implements the avocado ‘exec-path’ subcommand
-
description
= 'Returns path to avocado bash libraries and exits.'¶
-
name
= 'exec-path'¶
-
run
(args)¶ Print libexec path and finish
Parameters: args – Command line args received from the run subparser.
-
avocado.plugins.gdb module¶
Run tests with GDB goodies enabled.
avocado.plugins.human module¶
Human result UI
-
class
avocado.plugins.human.
Human
(args)¶ Bases:
avocado.core.plugin_interfaces.ResultEvents
Human result UI
-
description
= 'Human Interface UI'¶
-
end_test
(result, state)¶
-
name
= 'human'¶
-
output_mapping
= {'SKIP': '', 'PASS': '', 'INTERRUPTED': '', 'WARN': '', 'CANCEL': '', 'ERROR': '', 'FAIL': ''}¶
-
post_tests
(job)¶
-
pre_tests
(job)¶
-
start_test
(result, state)¶
-
test_progress
(progress=False)¶
-
-
class
avocado.plugins.human.
HumanJob
¶ Bases:
avocado.core.plugin_interfaces.JobPre
,avocado.core.plugin_interfaces.JobPost
Human result UI
-
description
= 'Human Interface UI'¶
-
name
= 'human'¶
-
post
(job)¶
-
pre
(job)¶
-
avocado.plugins.jobscripts module¶
-
class
avocado.plugins.jobscripts.
JobScripts
¶ Bases:
avocado.core.plugin_interfaces.JobPre
,avocado.core.plugin_interfaces.JobPost
-
description
= 'Runs scripts before/after the job is run'¶
-
name
= 'jobscripts'¶
-
post
(job)¶
-
pre
(job)¶
-
avocado.plugins.journal module¶
Journal Plugin
-
class
avocado.plugins.journal.
Journal
¶ Bases:
avocado.core.plugin_interfaces.CLI
Test journal
-
configure
(parser)¶
-
description
= "Journal options for the 'run' subcommand"¶
-
name
= 'journal'¶
-
run
(args)¶
-
-
class
avocado.plugins.journal.
JournalResult
(args)¶ Bases:
avocado.core.plugin_interfaces.ResultEvents
Test Result Journal class.
This class keeps a log of the test updates: started running, finished, etc. This information can be forwarded live to an avocado server and provide feedback to users from a central place.
Creates an instance of ResultJournal.
Parameters: job – an instance of avocado.core.job.Job
.-
description
= 'Journal event based results implementation'¶
-
end_test
(result, state)¶
-
lazy_init_journal
(state)¶
-
name
= 'journal'¶
-
post_tests
(job)¶
-
pre_tests
(job)¶
-
start_test
(result, state)¶
-
test_progress
(progress=False)¶
-
avocado.plugins.jsonresult module¶
JSON output module.
-
class
avocado.plugins.jsonresult.
JSONCLI
¶ Bases:
avocado.core.plugin_interfaces.CLI
JSON output
-
configure
(parser)¶
-
description
= "JSON output options for 'run' command"¶
-
name
= 'json'¶
-
run
(args)¶
-
-
class
avocado.plugins.jsonresult.
JSONResult
¶ Bases:
avocado.core.plugin_interfaces.Result
-
description
= 'JSON result support'¶
-
name
= 'json'¶
-
render
(result, job)¶
-
avocado.plugins.list module¶
avocado.plugins.multiplex module¶
-
class
avocado.plugins.multiplex.
Multiplex
(*args, **kwargs)¶ Bases:
avocado.plugins.variants.Variants
DEPRECATED version of the “avocado multiplex” command which is replaced by “avocado variants” one.
-
name
= 'multiplex'¶
-
run
(args)¶
-
avocado.plugins.plugins module¶
Plugins information plugin
avocado.plugins.replay module¶
avocado.plugins.run module¶
Base Test Runner Plugins.
-
class
avocado.plugins.run.
Run
¶ Bases:
avocado.core.plugin_interfaces.CLICmd
Implements the avocado ‘run’ subcommand
-
configure
(parser)¶ Add the subparser for the run action.
Parameters: parser – Main test runner parser.
-
description
= 'Runs one or more tests (native test, test alias, binary or script)'¶
-
name
= 'run'¶
-
run
(args)¶ Run test modules or simple tests.
Parameters: args – Command line args received from the run subparser.
-
avocado.plugins.sysinfo module¶
System information plugin
avocado.plugins.tap module¶
TAP output module.
-
class
avocado.plugins.tap.
TAP
¶ Bases:
avocado.core.plugin_interfaces.CLI
TAP Test Anything Protocol output avocado plugin
-
configure
(parser)¶
-
description
= 'TAP - Test Anything Protocol results'¶
-
name
= 'TAP'¶
-
run
(args)¶
-
-
class
avocado.plugins.tap.
TAPResult
(args)¶ Bases:
avocado.core.plugin_interfaces.ResultEvents
TAP output class
-
description
= 'TAP - Test Anything Protocol results'¶
-
end_test
(result, state)¶ Log the test status and details
-
name
= 'tap'¶
-
post_tests
(job)¶
-
pre_tests
(job)¶ Log the test plan
-
start_test
(result, state)¶
-
test_progress
(progress=False)¶
-
-
avocado.plugins.tap.
file_log_factory
(log_file)¶ Generates a function which simulates writes to logger and outputs to file
Parameters: log_file – The output file
avocado.plugins.teststmpdir module¶
Tests temporary directory plugin
-
class
avocado.plugins.teststmpdir.
TestsTmpDir
¶ Bases:
avocado.core.plugin_interfaces.JobPre
,avocado.core.plugin_interfaces.JobPost
-
description
= 'Creates a temporary directory for tests consumption'¶
-
name
= 'teststmpdir'¶
-
post
(job)¶
-
pre
(job)¶
-
avocado.plugins.variants module¶
-
class
avocado.plugins.variants.
Variants
(*args, **kwargs)¶ Bases:
avocado.core.plugin_interfaces.CLICmd
Implements “variants” command to visualize/debug test variants and params
-
configure
(parser)¶
-
description
= 'Tool to analyze and visualize test variants and params'¶
-
name
= 'variants'¶
-
run
(args)¶
-
-
avocado.plugins.variants.
map_verbosity_level
(level)¶
avocado.plugins.wrapper module¶
avocado.plugins.xunit module¶
xUnit module.
-
class
avocado.plugins.xunit.
XUnitCLI
¶ Bases:
avocado.core.plugin_interfaces.CLI
xUnit output
-
configure
(parser)¶
-
description
= 'xUnit output options'¶
-
name
= 'xunit'¶
-
run
(args)¶
-
-
class
avocado.plugins.xunit.
XUnitResult
¶ Bases:
avocado.core.plugin_interfaces.Result
-
PRINTABLE
= 'abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789!"#$%&\'()*+,-./:;<=>?@[\\]^_`{|}~\n\r '¶
-
UNKNOWN
= '<unknown>'¶
-
description
= 'XUnit result support'¶
-
name
= 'xunit'¶
-
render
(result, job)¶
-
avocado.plugins.yaml_to_mux module¶
Multiplexer plugin to parse yaml files to params
-
class
avocado.plugins.yaml_to_mux.
ListOfNodeObjects
¶ Bases:
list
Used to mark list as list of objects from whose node is going to be created
-
class
avocado.plugins.yaml_to_mux.
Value
¶ Bases:
tuple
Used to mark values to simplify checking for node vs. value
-
class
avocado.plugins.yaml_to_mux.
YamlToMux
¶ Bases:
avocado.core.mux.MuxPlugin
,avocado.core.plugin_interfaces.Varianter
Processes the mux options into varianter plugin
-
description
= 'Multiplexer plugin to parse yaml files to params'¶
-
initialize
(args)¶
-
name
= 'yaml_to_mux'¶
-
-
class
avocado.plugins.yaml_to_mux.
YamlToMuxCLI
¶ Bases:
avocado.core.plugin_interfaces.CLI
Defines arguments for YamlToMux plugin
-
configure
(parser)¶ Configures “run” and “multiplex” subparsers
-
description
= "YamlToMux options for the 'run' subcommand"¶
-
name
= 'yaml_to_mux'¶
-
run
(args)¶ The YamlToMux varianter plugin handles these
-
-
avocado.plugins.yaml_to_mux.
create_from_yaml
(paths, debug=False)¶ Create tree structure from yaml-like file :param fileobj: File object to be processed :raise SyntaxError: When yaml-file is corrupted :return: Root of the created tree structure