gimp/libgimp/tests
Jehan 08fd3a3f0d app, libgimp, pdb: imagearray PDB type as GimpCoreObjectArray. 2024-10-25 23:28:42 +02:00
..
pygimp libgimp: add C tests to the libgimp testing infrastructure. 2024-02-29 16:19:49 +01:00
README.md libgimp: add C tests to the libgimp testing infrastructure. 2024-02-29 16:19:49 +01:00
c-test-header.c libgimp: add C tests to the libgimp testing infrastructure. 2024-02-29 16:19:49 +01:00
libgimp-run-c-test.sh libgimp: allow to run gimp_procedure_run_config() with no config object. 2024-02-29 16:33:32 +01:00
libgimp-run-python-test.sh
meson.build app, libgimp*, pdb, plug-ins: review and enhance MR !1549. 2024-08-18 22:46:47 +02:00
test-color-parser.c libgimp, libgimpcolor: make real unit test of old (compiled but unused) … 2024-04-20 12:39:52 +02:00
test-color-parser.py libgimp, libgimpcolor: make real unit test of old (compiled but unused) … 2024-04-20 12:39:52 +02:00
test-export-options.c app, libgimp, pdb: imagearray PDB type as GimpCoreObjectArray. 2024-10-25 23:28:42 +02:00
test-export-options.py app, libgimp*, pdb, plug-ins: review and enhance MR !1549. 2024-08-18 22:46:47 +02:00
test-image.c app, libgimp, pdb: imagearray PDB type as GimpCoreObjectArray. 2024-10-25 23:28:42 +02:00
test-image.py libgimp: also add a unit test of gimp_text_layer_new() with pixel unit. 2024-08-18 18:19:23 +02:00
test-palette.c libgimp: fixing "palette" libgimp API unit testing. 2024-09-23 12:14:19 +02:00
test-palette.py libgimp: fixing "palette" libgimp API unit testing. 2024-09-23 12:14:19 +02:00
test-selection-float.c app, libgimp, pdb, plug-ins: new GimpCoreObjectArray type and drawablearray… 2024-10-25 23:28:42 +02:00
test-selection-float.py plug-ins, tests: Update Python plug-ins after b1736a67 2024-07-07 12:37:33 +00:00
test-unit.c Issue #434: remove broken plural support for GimpUnit. 2024-08-06 11:39:57 +02:00
test-unit.py libgimp: fixing python unit test for GimpUnit API. 2024-08-06 14:32:25 +02:00

README.md

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:

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:

#!/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.