80 lines
2.8 KiB
ReStructuredText
80 lines
2.8 KiB
ReStructuredText
|
Testing Anaconda
|
||
|
================
|
||
|
|
||
|
Before testing Anaconda you need to install all required dependencies,
|
||
|
prepare the environment and build the sources::
|
||
|
|
||
|
make -f Makefile.am install-test-requires
|
||
|
./autogen.sh
|
||
|
./configure
|
||
|
make
|
||
|
|
||
|
Executing the tests can be done with::
|
||
|
|
||
|
make check
|
||
|
|
||
|
To run a single test do::
|
||
|
|
||
|
make TESTS=install/run_install_test.sh check
|
||
|
|
||
|
See `tests/Makefile.am` for possible values. Alternatively you can try::
|
||
|
|
||
|
make ci
|
||
|
|
||
|
This has the advantage of producing Python test coverage for all tests.
|
||
|
In case the *ci* target fails there is also a *coverage-report* target
|
||
|
which can be used to combine the multiple `.coverage` files into one and
|
||
|
produce a human readable report.
|
||
|
|
||
|
.. NOTE::
|
||
|
|
||
|
When using the `ci' target you need to use a regular user account which
|
||
|
is a member of the `mock' group. You can update your account by running
|
||
|
the command::
|
||
|
|
||
|
# usermod -a -G mock <username>
|
||
|
|
||
|
Your regular user account also needs to execute `sudo' because some tests
|
||
|
require root privileges!
|
||
|
|
||
|
Test Suite Architecture
|
||
|
------------------------
|
||
|
|
||
|
Anaconda has a complex test suite structure where each top-level directory
|
||
|
represents a different class of tests. They are
|
||
|
|
||
|
- *cppcheck/* - static C/C++ code analysis using the *cppcheck* tool;
|
||
|
- *dd_tests/* - Python unit tests for driver disk utilities (utils/dd);
|
||
|
- *dracut_tests/* - Python unit tests for the dracut hooks used to configure the
|
||
|
installation environment and load Anaconda;
|
||
|
- *gettext/* - sanity tests of files used for translation; Written in Python and
|
||
|
Bash;
|
||
|
- *glade/* - sanity tests for .glade files. Written in Python;
|
||
|
- *gui/* - specialized test suite for the graphical interface of anaconda. This
|
||
|
is written in Python and uses the `dogtail <https://fedorahosted.org/dogtail/>`_
|
||
|
accessibility module. All tests are executed using ./anaconda.py from the local
|
||
|
directory;
|
||
|
- *install/* - basic RPM sanity test. Checks if anaconda.rpm can be installed in
|
||
|
a temporary directory without failing dependencies or other RPM issues;
|
||
|
- *lib/* - helper modules used during testing;
|
||
|
- *pyanaconda_tests/* - unit tests for the :mod:`pyanaconda` module;
|
||
|
- *pylint/* - checks the validity of Python source code using the *pocketlint*
|
||
|
tool;
|
||
|
- *regex_tests/* - Python unit tests for regular expressions defined in
|
||
|
:mod:`pyanaconda.regexes`;
|
||
|
- *storage/* - test cases used to verify partitioning scenarios for success or
|
||
|
expected failures. The scenarios are described using kickstart snippets.
|
||
|
Written in Python with a custom test case framework based on
|
||
|
`blivet <https://github.com/rhinstaller/blivet>`_;
|
||
|
|
||
|
|
||
|
|
||
|
.. NOTE::
|
||
|
|
||
|
All Python unit tests inherit from the standard :class:`unittest.TestCase`
|
||
|
class unless specified otherwise!
|
||
|
|
||
|
Some tests require root privileges and will be skipped if running as regular
|
||
|
user!
|
||
|
|