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 totrue
if you want to copy in extracted sources to the local repodist-git-init
- set totrue
andfmf init
will be called inside extracted sources (atdist-git-extract
or top directory)dist-git-extract
- directory (glob supported) to copy from extracted sources (defaults to inner fmf root)dist-git-remove-fmf-root
- set totrue
to 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 totrue
if 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 -bp
them (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 -bp
them (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