mirror of https://github.com/GNOME/gimp.git
69 lines
2.1 KiB
Markdown
69 lines
2.1 KiB
Markdown
# Unit testing for libgimp
|
|
|
|
We should test every function in our released libraries and ensure they return
|
|
the correct data. This test infrastructure does this for the C library and the
|
|
Python 3 binding.
|
|
|
|
Every new test unit should be added both in C and Python 3.
|
|
|
|
## Procedure to add the C unit
|
|
|
|
C functions are tested in a real plug-in which is run by the unit test
|
|
infrastructure. Most of the boiler-plate code is contained in `c-test-header.c`
|
|
therefore you don't have to care about it.
|
|
|
|
All you must do is create a `gimp_c_test_run()` function with the following
|
|
template:
|
|
|
|
```C
|
|
static GimpValueArray *
|
|
gimp_c_test_run (GimpProcedure *procedure,
|
|
GimpRunMode run_mode,
|
|
GimpImage *image,
|
|
gint n_drawables,
|
|
GimpDrawable **drawables,
|
|
GimpProcedureConfig *config,
|
|
gpointer run_data)
|
|
{
|
|
/* Each test must be surrounded by GIMP_TEST_START() and GIMP_TEST_END()
|
|
* macros this way:
|
|
*/
|
|
GIMP_TEST_START("Test name for easy debugging")
|
|
/* Run some code and finish by an assert-like test. */
|
|
GIMP_TEST_END(testme > 0)
|
|
|
|
/* Do more tests as needed. */
|
|
|
|
/* Mandatorily end the function by this macro: */
|
|
GIMP_TEST_RETURN
|
|
}
|
|
```
|
|
|
|
This code must be in a file named only with alphanumeric letters and hyphens,
|
|
and prepended with `test-`, such as: `test-palette.c`.
|
|
|
|
The part between `test-` and `.c` must be added to the `tests` list in
|
|
`libgimp/tests/meson.build`.
|
|
|
|
## Procedure to add the Python 3 unit
|
|
|
|
Unlike C, the Python 3 API is not run as a standalone plug-in, but as Python
|
|
code directly interpreted through the `python-fu-eval` batch plug-in.
|
|
|
|
Simply add your code in a file named the same as the C file, but with `.py`
|
|
extension instead of `.c`.
|
|
|
|
The file must mandatorily start with a shebang: `#!/usr/bin/env python3`
|
|
|
|
For testing, use `gimp_assert()` as follows:
|
|
|
|
```py
|
|
#!/usr/bin/env python3
|
|
|
|
# Add your test code here.
|
|
# Then test that it succeeded with the assert-like test:
|
|
gimp_assert('Test name for easy debugging', testme > 0)
|
|
|
|
# Repeat with more tests as needed.
|
|
```
|