This is becoming pretty critical as it blocks updating gjs. I notice that 0.55.1 has been released, but it doesn't include the fix (I've opened a backport PR for that at https://github.com/mesonbuild/meson/pull/7618).
So, whether we want to update to 0.55.1 first and then add the patch or the other way around, we need this, so please sponsor:). Tag: patch
diff -Nru meson-0.55.0/debian/changelog meson-0.55.0/debian/changelog --- meson-0.55.0/debian/changelog 2020-07-16 18:19:52.000000000 +0200 +++ meson-0.55.0/debian/changelog 2020-08-20 02:51:42.000000000 +0200 @@ -1,3 +1,9 @@ +meson (0.55.0-3) UNRELEASED; urgency=medium + + * Don't consider skipped tests as failures. Closes: #966923 + + -- Marco Trevisan (TreviƱo) <ma...@ubuntu.com> Thu, 20 Aug 2020 02:51:42 +0200 + meson (0.55.0-2) unstable; urgency=medium * Fix crossbuild test from Gianfranco Costamagna. Closes: #963546 diff -Nru meson-0.55.0/debian/patches/3-mtest_TestResult_SKIP_is_not_a_failure.patch meson-0.55.0/debian/patches/3-mtest_TestResult_SKIP_is_not_a_failure.patch --- meson-0.55.0/debian/patches/3-mtest_TestResult_SKIP_is_not_a_failure.patch 1970-01-01 01:00:00.000000000 +0100 +++ meson-0.55.0/debian/patches/3-mtest_TestResult_SKIP_is_not_a_failure.patch 2020-08-20 02:51:14.000000000 +0200 @@ -0,0 +1,123 @@ +From 998ee63e9596d8b3315ddce3d6f4612fec3588ef Mon Sep 17 00:00:00 2001 +From: Simon McVittie <s...@debian.org> +Date: Mon, 3 Aug 2020 13:31:42 +0100 +Subject: [PATCH] mtest: TestResult.SKIP is not a failure + +If some but not all tests in a run were skipped, then the overall result +is given by whether there were any failures among the non-skipped tests. + +Resolves: https://github.com/mesonbuild/meson/issues/7515 +Signed-off-by: Simon McVittie <s...@debian.org> + +Origin: https://github.com/mesonbuild/meson/pull/7525 +Applied-Upstream: yes +--- + mesonbuild/mtest.py | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + +diff --git a/mesonbuild/mtest.py b/mesonbuild/mtest.py +index 0d8169218f..817550e666 100644 +--- a/mesonbuild/mtest.py ++++ b/mesonbuild/mtest.py +@@ -489,7 +489,7 @@ def make_tap(cls, test: 'TestSerialisation', test_env: T.Dict[str, str], + failed = True + elif isinstance(i, TAPParser.Test): + results.append(i.result) +- if i.result not in {TestResult.OK, TestResult.EXPECTEDFAIL}: ++ if i.result not in {TestResult.OK, TestResult.EXPECTEDFAIL, TestResult.SKIP}: + failed = True + elif isinstance(i, TAPParser.Error): + results.append(TestResult.ERROR) + +diff --git a/test cases/common/213 tap tests/cat.c b/test cases/common/213 tap tests/cat.c +new file mode 100644 +index 0000000000..4b92010ade +--- /dev/null ++++ b/test cases/common/213 tap tests/cat.c +@@ -0,0 +1,26 @@ ++#include <errno.h> ++#include <stdio.h> ++ ++int main(int argc, char **argv) { ++ char buf[1024]; ++ size_t len; ++ FILE *fh; ++ ++ if (argc != 2) { ++ fprintf(stderr, "Incorrect number of arguments, got %i\n", argc); ++ return 1; ++ } ++ fh = fopen(argv[1], "r"); ++ if (fh == NULL) { ++ fprintf(stderr, "Opening %s: errno=%i\n", argv[1], errno); ++ return 1; ++ } ++ do { ++ len = fread(buf, 1, sizeof(buf), fh); ++ if (len > 0) { ++ fwrite(buf, 1, len, stdout); ++ } ++ } while (len > 0); ++ fclose(fh); ++ return 0; ++} +diff --git a/test cases/common/213 tap tests/issue7515.txt b/test cases/common/213 tap tests/issue7515.txt +new file mode 100644 +index 0000000000..ca8563778d +--- /dev/null ++++ b/test cases/common/213 tap tests/issue7515.txt +@@ -0,0 +1,27 @@ ++1..26 ++ok 1 Gtk overrides UI template sets up internal and public template children ++ok 2 Gtk overrides UI template sets up public template children with the correct widgets ++ok 3 Gtk overrides UI template sets up internal template children with the correct widgets ++ok 4 Gtk overrides UI template connects template callbacks to the correct handler ++ok 5 Gtk overrides UI template binds template callbacks to the correct object ++ok 6 Gtk overrides UI template from resource sets up internal and public template children ++ok 7 Gtk overrides UI template from resource sets up public template children with the correct widgets ++ok 8 Gtk overrides UI template from resource sets up internal template children with the correct widgets ++ok 9 Gtk overrides UI template from resource connects template callbacks to the correct handler ++ok 10 Gtk overrides UI template from resource binds template callbacks to the correct object ++ok 11 Gtk overrides UI template from file sets up internal and public template children ++ok 12 Gtk overrides UI template from file sets up public template children with the correct widgets ++ok 13 Gtk overrides UI template from file sets up internal template children with the correct widgets ++ok 14 Gtk overrides UI template from file connects template callbacks to the correct handler ++ok 15 Gtk overrides UI template from file binds template callbacks to the correct object ++ok 16 Gtk overrides Class inheriting from template class sets up internal and public template children # SKIP pending ++ok 17 Gtk overrides Class inheriting from template class sets up public template children with the correct widgets # SKIP pending ++ok 18 Gtk overrides Class inheriting from template class sets up internal template children with the correct widgets # SKIP pending ++ok 19 Gtk overrides Class inheriting from template class connects template callbacks to the correct handler # SKIP pending ++ok 20 Gtk overrides Class inheriting from template class binds template callbacks to the correct object # SKIP pending ++ok 21 Gtk overrides sets CSS names on classes ++ok 22 Gtk overrides avoid crashing when GTK vfuncs are called in garbage collection ++ok 23 Gtk overrides accepts string in place of GdkAtom ++ok 24 Gtk overrides accepts null in place of GdkAtom as GDK_NONE ++ok 25 Gtk overrides uses the correct GType for null child properties ++ok 26 Gtk overrides can create a Gtk.TreeIter with accessible stamp field +diff --git a/test cases/common/213 tap tests/meson.build b/test cases/common/213 tap tests/meson.build +index 58529a72eb..c762c733e2 100644 +--- a/test cases/common/213 tap tests/meson.build ++++ b/test cases/common/213 tap tests/meson.build +@@ -1,10 +1,13 @@ + project('test features', 'c') + + tester = executable('tester', 'tester.c') ++cat = executable('cat', 'cat.c') + test('pass', tester, args : ['ok'], protocol: 'tap') + test('fail', tester, args : ['not ok'], should_fail: true, protocol: 'tap') + test('xfail', tester, args : ['not ok # todo'], protocol: 'tap') + test('xpass', tester, args : ['ok # todo'], should_fail: true, protocol: 'tap') + test('skip', tester, args : ['ok # skip'], protocol: 'tap') ++test('partially skipped', tester, args : ['ok 1\nok 2 # skip'], protocol: 'tap') ++test('partially skipped (real-world example)', cat, args : [files('issue7515.txt')], protocol: 'tap') + test('skip failure', tester, args : ['not ok # skip'], should_fail: true, protocol: 'tap') + test('no tests', tester, args : ['1..0 # skip'], protocol: 'tap') +diff --git a/test cases/failing test/5 tap tests/meson.build b/test cases/failing test/5 tap tests/meson.build +index 844c1f9900..c49043bc6c 100644 +--- a/test cases/failing test/5 tap tests/meson.build ++++ b/test cases/failing test/5 tap tests/meson.build +@@ -4,3 +4,4 @@ tester = executable('tester', 'tester.c') + test('nonzero return code', tester, args : [], protocol: 'tap') + test('missing test', tester, args : ['1..1'], protocol: 'tap') + test('incorrect skip', tester, args : ['1..1 # skip\nok 1'], protocol: 'tap') ++test('partially skipped', tester, args : ['not ok 1\nok 2 # skip'], protocol: 'tap') diff -Nru meson-0.55.0/debian/patches/series meson-0.55.0/debian/patches/series --- meson-0.55.0/debian/patches/series 2020-07-12 16:29:07.000000000 +0200 +++ meson-0.55.0/debian/patches/series 2020-08-20 02:46:57.000000000 +0200 @@ -1,2 +1,3 @@ 1-disable-openmpi.patch 2-disable-rootdir-test.patch +3-mtest_TestResult_SKIP_is_not_a_failure.patch