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)
committerPeter Michael Green <plugwash@debian.org>
Thu, 19 Jan 2023 23:30:32 +0000 (23:30 +0000)
commita5ba4a6d358f7ac59751a2f8090f8074f0c6a30a
treead740040ab26967e63dbfaf7ba3c5a2b244789cc
parent20432b69293936aa7b05604830b507a09e546504
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