summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorBen Gamari <ben@smart-cactus.org>2019-01-24 14:33:26 -0500
committerBen Gamari <ben@smart-cactus.org>2019-01-24 14:33:26 -0500
commit2e3118f54d0e54a7d8ecd3d20f4c8f7f628ad463 (patch)
treeee0178a070ee68f313f98fd6785e497640efdf92
parentdf0c3966f2e16278fd6fc29360a729a199cefd73 (diff)
downloadhaskell-wip/testsuite-stdout.tar.gz
WIP: testsuite: Report stdout and stderrwip/testsuite-stdout
I'm having second thoughts about the semantics here; perhaps we actually want a diff.
-rw-r--r--testsuite/driver/testlib.py9
-rw-r--r--testsuite/driver/testutil.py4
2 files changed, 9 insertions, 4 deletions
diff --git a/testsuite/driver/testlib.py b/testsuite/driver/testlib.py
index 8f76378531..431232c9dc 100644
--- a/testsuite/driver/testlib.py
+++ b/testsuite/driver/testlib.py
@@ -942,7 +942,12 @@ def do_test(name, way, func, args, files):
t.unexpected_stat_failures.append(TestResult(directory, name, reason, way))
else:
if_verbose(1, '*** unexpected failure for %s' % full_name)
- t.unexpected_failures.append(TestResult(directory, name, reason, way))
+ other = {
+ 'stdout': result.get('stdout'),
+ 'stderr': result.get('stderr')
+ }
+ result = TestResult(directory, name, reason, way, **other)
+ t.unexpected_failures.append(result)
else:
if opts.expect == 'missing-lib':
t.missing_libs.append(TestResult(directory, name, 'missing-lib', way))
@@ -1078,7 +1083,7 @@ def do_compile(name, way, should_fail, top_mod, extra_mods, extra_hc_opts, **kwa
whitespace_normaliser=getattr(getTestOpts(),
"whitespace_normaliser",
normalise_whitespace)):
- return failBecause('stderr mismatch')
+ return failBecause('stderr mismatch', stderr=open(actual_stderr_file, 'rb').read())
# no problems found, this test passed
return passed()
diff --git a/testsuite/driver/testutil.py b/testsuite/driver/testutil.py
index 6e0c2684d7..888e77bc5a 100644
--- a/testsuite/driver/testutil.py
+++ b/testsuite/driver/testutil.py
@@ -8,8 +8,8 @@ import threading
def passed():
return {'passFail': 'pass'}
-def failBecause(reason, tag=None):
- return {'passFail': 'fail', 'reason': reason, 'tag': tag}
+def failBecause(reason, tag=None, **kwargs):
+ return kwargs.update({'passFail': 'fail', 'reason': reason, 'tag': tag})
def strip_quotes(s):
# Don't wrap commands to subprocess.call/Popen in quotes.