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 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
pyanaconda
module; - pylint/ - checks the validity of Python source code using the pocketlint tool;
- regex_tests/ - Python unit tests for regular expressions defined in
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;
Note
All Python unit tests inherit from the standard unittest.TestCase
class unless specified otherwise!
Some tests require root privileges and will be skipped if running as regular user!