Apertis Tests Cases and Renderer
This repository contains all the Apertis test cases written using the YAML format
defined at the format/
directory.
The repository also contains the renderer-test-case
program, which is used to
generate the test case pages in HTML format from the YAML files.
Format Rules/Notes
-
The renderer heavily uses
lists
of strings to parse those into the different HTML components. Each string in a list can be started with a special character to get a specific format if it is supported by the YAML directive containing such a string.For the
pre-conditions
,notes
,expected
,run.steps
(only manual tests) andpost-conditions
directives, start a line with the following characters to give the described format:-
$
: Command line. -
>
: Command output. -
@
: Attach image. -
~
: Add a web link.
For the
run.steps
field in the automated tests, only the following formatting rules apply:-
#
: Add a comment. - Everything else is a command line.
-
-
Test cases with an
install.deps
directive will automatically add apre-conditions
section to the test case page with the list of packages to install specified in such a directive.
Macro helpers
Some test cases share the same set of instructions, for those, some macros
are
available: macro_ostree_preconditions
, macro_install_packages_preconditions
,
and macro_modules_preconditions
. Please check the tests cases for example about
how to use them.
Images
Test cases can contain images. These are attached to a test case page starting a
line in one of the special directives with the character @
followed by the image
name, then this image should be placed under the renderer/images
directory.
Renderer
The main program is named atc
in the parent directory and can be directly invoked
like:
$ ./atc --help
The above command will show the help.
To render a single test case, use something like:
$ ./atc test-cases/<test-case-name>.yaml
That will create a <test-case-name>.html
page.
To render a complete set of test cases inside a directory, just pass a directory
instead of a file to the command, and optionally pass a new directory path with
the -d
flag so all the newly generated test cases are saved there instead of the
current directory:
$ ./atc test-cases/ -d apertis-test-cases-v0.1/
Now all the html tests cases should be available inside the
apertis-test-cases-v0.1/
directory.
Renderer (parser) behaviour
-
The renderer parser will always abort with a failure if a mandatory field is missing.
-
The renderer parser will abort with a failure for those fields set to values with incorrect types.
-
The renderer parser will show warning messages for unrecognized values of fields with multiple choices (for example, image-type, execution-type).
Tests
The module renderer/tests.py
contains tests for the parser, renderer and
different formatting methods. There are also a set of tests files located inside
the renderer/tests_files/
directory that are used by some of these tests.
The unittest can be executed from the parent directory with:
$ python3 -m unittest discover -v
It is highly recommended to execute these tests if changes are applied to any
of the renderer
components since merge requests will only be accepted if all the
tests pass.