Geeqie incorporates a number of forms of validation, including functional tests,
unit tests, and static analysis. These tests are defined towards the end of the
root meson.build
file (search the file for test(
).
You can run all enabled suites using:
meson test -C build
Three test suites exist: functional
, unit
, and analysis
. You can pick out
particular suites to execute with commands like:
meson test -C build --suite functional
meson test -C build --suite analysis --suite unit
See the Unit tests section for how to enable unit tests.
Unit tests live under src/tests
. Because they include a lot of extra code in
the Geeqie binary, they must be manually enabled with a command like:
meson setup -D unit_tests=enabled build
After that point, they can be executed with:
meson test -C build -v --suite unit
Or you can run them by hand by starting geeqie with the --run-unit-tests
argument:
$ ninja -C build
...
$ ./build/src/geeqie --run-unit-tests
[==========] Running N tests from 1 test suite.
...
[==========] N tests from 1 test suite ran. (0 ms total)
[ PASSED ] N tests.
Geeqie uses the Googletest framework, which is well-documented:
http://google.github.io/googletest/
To add a new testcase in an existing test file, just add it to the test file. That testcase will be automatically picked up and executed.
To create a new test file, create the file under src/tests/
with a name that
matches the file being tested. Then make sure to add the file to
src/tests/meson.build
or it won't be seen or executed.
The Geeqie functional tests rely on xvfb
in order to be able to start the app
in a standard way without requiring access to a real X server on the test
machine. If xvfb
is not present, these tests will not run.
This just ensures that Geeqie will start. It uses the --version
flag to keep
Geeqie from staying running.
The image tests are only enabled in unit_test mode. You can set that with:
meson setup -C build -D unit_test=enabled
This tests that Geeqie can successfully open and provide metadata info about a library of images of different types.
See scripts/image-test.py
for more details.
Verifies that Geeqie can successfully run lua scripts by opening a stock test image and running a variety of lua operations on it.
See scripts/lua-test.sh
for more details.
Runs clang-tidy
code correctness checks for every source file in the project.
Note that this will only execute when running from a clone of the Geeqie git
project.
See .clang-tidy
and https://clang.llvm.org/extra/clang-tidy/checks/list.html
for more details.
Checks for single-value enums.
See scripts/enum-check.sh
for more details.
Checks for DEBUG_0
, DEBUG_BT
, or DEBUG_FD
statements in the source tree.
See scripts/debug-check.sh
for more details.
Checks for comments starting with //~
in the source tree.
See scripts/temporary-comments-check.sh
for more details.
Checks that gtk functions for which there is a Geeqie GTK4 compatibility
function have a gq_
prefix.
See scripts/gtk4-migration-regression-check.sh
for more details.
Checks for strings that haven't been marked for translation (starting with _(
)
in the source tree.
See scripts/untranslated-text.sh
for more details.
Performs validation of non-source files within the project. This includes
linting of appdata
files, desktop
files, Markdown files, GTK UI builder
files and shell scripts, all options are in the bash completions file,
as well as ensuring that all relevant build options
are covered in the functional test configuration.
These checks also require xvfb
for the GTK UI builder validator to run.
See scripts/test-ancillary-files.sh
for more details.