aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorDaniel Stone <daniels@collabora.com>2016-11-29 11:17:05 +0000
committerJussi Pakkanen <jpakkane@gmail.com>2016-11-29 13:13:29 -0500
commit1cb9d2bc0da7ec8c9f37ebd7c2f929ab7afa9e91 (patch)
tree93f91082c90827160bcd2dcbaccfc75411b42899
parentac78ae47a9a27a3cf53f426fd304a0d822b4f163 (diff)
downloadmeson-1cb9d2bc0da7ec8c9f37ebd7c2f929ab7afa9e91.zip
meson-1cb9d2bc0da7ec8c9f37ebd7c2f929ab7afa9e91.tar.gz
meson-1cb9d2bc0da7ec8c9f37ebd7c2f929ab7afa9e91.tar.bz2
Support skipped tests
Knowing whether a test failed to run as its prerequisites were not available, or whether those prerequisites were available and produced unexpected/incorrect results, is a useful differentiation. Add support for skipped tests by testing for exit code 77, used through autotools/piglit/etc to denote a test which detected this and decided to skip.
-rw-r--r--authors.txt1
-rwxr-xr-xmesontest.py9
-rw-r--r--test cases/common/124 test skip/meson.build4
-rw-r--r--test cases/common/124 test skip/test_skip.c4
4 files changed, 17 insertions, 1 deletions
diff --git a/authors.txt b/authors.txt
index 9bf3e33..03e8478 100644
--- a/authors.txt
+++ b/authors.txt
@@ -56,3 +56,4 @@ Aurelien Jarno
Mark Schulte
Paulo Antonio Alvarez
Olexa Bilaniuk
+Daniel Stone
diff --git a/mesontest.py b/mesontest.py
index 2834ec0..1a704f8 100755
--- a/mesontest.py
+++ b/mesontest.py
@@ -26,6 +26,10 @@ import concurrent.futures as conc
import platform
import signal
+# GNU autotools interprets a return code of 77 from tests it executes to
+# mean that the test should be skipped.
+GNU_SKIP_RETURNCODE = 77
+
def is_windows():
platname = platform.system().lower()
return platname == 'windows' or 'mingw' in platname
@@ -213,6 +217,8 @@ class TestHarness:
stde = decode(stde)
if timed_out:
res = 'TIMEOUT'
+ if p.returncode == GNU_SKIP_RETURNCODE:
+ res = 'SKIP'
elif (not test.should_fail and p.returncode == 0) or \
(test.should_fail and p.returncode != 0):
res = 'OK'
@@ -230,7 +236,8 @@ class TestHarness:
(num, name, padding1, result.res, padding2, result.duration)
print(result_str)
result_str += "\n\n" + result.get_log()
- if (result.returncode != 0) != result.should_fail:
+ if (result.returncode != GNU_SKIP_RETURNCODE) and \
+ (result.returncode != 0) != result.should_fail:
self.error_count += 1
if self.options.print_errorlogs:
self.collected_logs.append(result_str)
diff --git a/test cases/common/124 test skip/meson.build b/test cases/common/124 test skip/meson.build
new file mode 100644
index 0000000..568527f
--- /dev/null
+++ b/test cases/common/124 test skip/meson.build
@@ -0,0 +1,4 @@
+project('test skip', 'c')
+
+exe_test_skip = executable('test_skip', 'test_skip.c')
+test('test_skip', exe_test_skip)
diff --git a/test cases/common/124 test skip/test_skip.c b/test cases/common/124 test skip/test_skip.c
new file mode 100644
index 0000000..d050a61
--- /dev/null
+++ b/test cases/common/124 test skip/test_skip.c
@@ -0,0 +1,4 @@
+int main(int argc, char *argv[])
+{
+ return 77;
+}