Discover Plugins
Common Keys
The following keys are accepted by all plugins of the discover step.
- name:
The name of the step phase.
- order:
Order in which the phase should be handled.
Default:
50- summary:
Concise summary describing purpose of the phase.
Default: not set
- where:
GUEST|ROLE Run this phase on given guest or guests with the given role only.
Default: not set
fmf
Warning
Please, be aware that the documentation below is a work in progress. We are working on fixing it, adding missing bits and generally making it better. Also, it was originally used for command line help only, therefore the formatting is often suboptimal.
Discover available tests from fmf metadata.
By default all available tests from the current repository are used so the minimal configuration looks like this:
discover:
how: fmf
Full config example:
discover:
how: fmf
url: https://github.com/teemtee/tmt
ref: main
path: /fmf/root
test: /tests/basic
filter: 'tier: 1'
If no ref is provided, the default branch from the origin is used.
For DistGit repo one can extract sources first and discover
tests from it by using distgit-source: true later in Prepare step.
It can be used together with ref, path and url,
however ref is not possible without using url.
discover:
how: fmf
dist-git-source: true
Related config options (all optional):
dist-git-merge- set totrueif you want to copy in extracted sources to the local repodist-git-init- set totrueandfmf initwill be called inside extracted sources (atdist-git-extractor top directory)dist-git-extract- directory (glob supported) to copy from extracted sources (defaults to inner fmf root)dist-git-remove-fmf-root- set totrueto remove fmf root from extracted sources
Selecting tests containing specified link is possible using link
key accepting RELATION:TARGET format of values. Regular
expressions are supported for both relation and target part of the
value. Relation can be omitted to target match any relation.
discover:
how: fmf
link: verifies:.*issue/850$
It is also possible to limit tests only to those that have changed in git since a given revision. This can be particularly useful when testing changes to tests themselves (e.g. in a pull request CI).
Related config options (all optional):
modified-only- set totrueif you want to filter modified testsmodified-url- fetched as “reference” remote in the test dirmodified-ref- the ref to compare against
Example to compare local repo against upstream main branch:
discover:
how: fmf
modified-only: True
modified-url: https://github.com/teemtee/tmt
modified-ref: reference/main
Note that internally the modified tests are appended to the list
specified via test, so those tests will also be selected even if
not modified.
Use the adjust-tests key to modify the discovered tests’
metadata directly from the plan. For example, extend the test
duration for slow hardware or modify the list of required packages
when you do not have write access to the remote test repository.
The value should follow the adjust rules syntax.
The following example adds an avc check for each discovered
test, doubles its duration and replaces each occurrence of the word
python3.11 in the list of required packages.
discover:
how: fmf
adjust-tests:
- check+:
- how: avc
- duration+: '*2'
because: Slow system under test
when: arch == i286
- require~:
- '/python3.11/python3.12/'
Configuration
See also Common Keys accepted by the plugin.
- adjust-tests:
Modify metadata of discovered tests from the plan itself. Use the same format as for adjust rules.
Default: not set
- dist-git-download-only:
true|false Just download the sources. No
rpmbuild -bp, nor installation of require or buildddeps happens.Default:
false- dist-git-extract:
What to copy from extracted sources, globbing is supported. Defaults to the top fmf root if it is present, otherwise top directory (shortcut “/”).
Default: not set
- dist-git-init:
true|false Initialize fmf root inside extracted sources (at dist-git-extract or top directory).
Default:
false- dist-git-install-builddeps:
true|false Install package build dependencies according to the specfile.
Default:
false- dist-git-merge:
true|false Merge copied sources and plan fmf root.
Default:
false- dist-git-remove-fmf-root:
true|false Remove fmf root from extracted source (top one or selected by copy-path, happens before dist-git-extract.
Default:
false- dist-git-require:
PACKAGE Additional required package to be present before sources are prepared.
Default: not set
- dist-git-source:
true|false Download DistGit sources and
rpmbuild -bpthem (can be skipped).Default:
false- dist-git-type:
fedora|centos|redhatgitlab Use the provided DistGit handler instead of the auto detection.
Default: not set
- exclude:
REGEXP Exclude tests matching given regular expression.
Default: not set
- filter:
FILTERS Include only tests matching the filter.
Default: not set
- fmf-id:
true|false Only print fmf identifiers of discovered tests to the standard output and exit.
Default:
false- link:
RELATION:TARGET Filter by linked objects (regular expressions are supported for both relation and target).
Default: not set
- modified-only:
true|false If set, select only tests modified since reference revision.
Default:
false- modified-ref:
REVISION Branch, tag or commit specifying the reference git revision (if not provided, the default branch is used).
Default: not set
- modified-url:
REPOSITORY URL of the reference git repository with fmf metadata.
Default: not set
- path:
ROOT Path to the metadata tree root.
Default: not set
- prune:
true|false Copy only immediate directories of executed tests and their required files.
Default:
false- ref:
REVISION Branch, tag or commit specifying the git revision.
Default: not set
repository:
Default: not set
revision:
Default: not set
- sync-repo:
true|false Force the sync of the whole git repo. By default, the repo is copied only if the used options require it.
Default:
false- test:
NAMES Select tests by name.
Default: not set
upgrade-path:
Default: not set
- url:
REPOSITORY URL of the git repository with fmf metadata.
Default: not set
shell
Warning
Please, be aware that the documentation below is a work in progress. We are working on fixing it, adding missing bits and generally making it better. Also, it was originally used for command line help only, therefore the formatting is often suboptimal.
Use provided list of shell script tests.
List of test cases to be executed can be defined manually directly in the plan as a list of dictionaries containing test name, actual test script and optionally a path to the test. Example config:
discover:
how: shell
tests:
- name: /help/main
test: tmt --help
- name: /help/test
test: tmt test --help
- name: /help/smoke
test: ./smoke.sh
path: /tests/shell
For DistGit repo one can download sources and use code from them in the tests.
Sources are extracted into $TMT_SOURCE_DIR, patches are applied by default.
See options to install build dependencies or to just download sources
without applying patches. To apply patches the prepare step has to be enabled.
discover:
how: shell
dist-git-source: true
tests:
- name: /upstream
test: cd $TMT_SOURCE_DIR/*/tests && make test
To clone a remote repository and use it as a source specify url.
It accepts also ref to checkout provided reference. Dynamic
reference feature is supported as well.
discover:
how: shell
url: https://github.com/teemtee/tmt.git
ref: "1.18.0"
tests:
- name: first test
test: ./script-from-the-repo.sh
Configuration
See also Common Keys accepted by the plugin.
- dist-git-download-only:
true|false Just download the sources. No
rpmbuild -bp, nor installation of require or buildddeps happens.Default:
false- dist-git-install-builddeps:
true|false Install package build dependencies according to the specfile.
Default:
false- dist-git-require:
PACKAGE Additional required package to be present before sources are prepared.
Default: not set
- dist-git-source:
true|false Download DistGit sources and
rpmbuild -bpthem (can be skipped).Default:
false- dist-git-type:
fedora|centos|redhatgitlab Use the provided DistGit handler instead of the auto detection.
Default: not set
- keep-git-metadata:
true|false Keep the git metadata if a repo is synced to guest.
Default:
false- ref:
REVISION Branch, tag or commit specifying the git revision.
Default: not set
tests:
Default: not set
- url:
REPOSITORY URL of the git repository with tests to be fetched.
Default: not set