testsuite: Use separate setups for unstable tests instead of should_fail
authorSimon McVittie <smcv@debian.org>
Wed, 23 Nov 2022 19:13:32 +0000 (19:13 +0000)
committerSimon McVittie <smcv@debian.org>
Sat, 4 Feb 2023 15:14:39 +0000 (15:14 +0000)
commite140e2757e789d040b9716566a7f80c51c68facc
tree3358a6c41aa0ee2d217a0ea425c177469510fa0e
parent34e985d10accabac89bb879ff6042b9799d7e00a
testsuite: Use separate setups for unstable tests instead of should_fail

There are two possible interpretations of "expected failure": either
the test *must* fail (exactly the inverse of an ordinary test, with
success becoming failure and failure becoming success), or the test
*may* fail (with success intended, but failure possible in some
environments). Autotools had the second interpretation, which seems
more useful in practice, but Meson has the first.

Instead of using should_fail, we can put the tests in one of two new
suites: "flaky" is intended for tests that succeed or fail unpredictably
according to the test environment or chance, while "failing" is for
tests that ought to succeed but currently never do as a result of a
bug or missing functionality. With a sufficiently new version of Meson,
the flaky and failing tests are not run by default, but can be requested
by running a setup that does not exclude them, with a command like:

    meson test --setup=x11_unstable --suite=flaky --suite=failing

As a bonus, now that we're setting up setups and their excluded suites
programmatically, the gsk-compare-broadway tests are also excluded by
default when running the test setup for a non-broadway backend.

When running the tests in CI, --suite=gtk overrides the default
exclude_suites, so we have to specify --no-suite=flaky and
--no-suite=failing explicitly.

This arrangement is inspired by GNOME/glib!2987, which was contributed
by Marco Trevisan.

Signed-off-by: Simon McVittie <smcv@debian.org>
Applied-upstream: 4.9.2, commit:957dd49ef7d371926f90212bdf52b92742062e3e

Gbp-Pq: Name testsuite-Use-separate-setups-for-unstable-tests-instead-.patch
.gitlab-ci.yml
.gitlab-ci/run-tests.sh
testsuite/a11y/meson.build
testsuite/gdk/meson.build
testsuite/gtk/meson.build
testsuite/meson.build
testsuite/reftests/meson.build