diff options
author | Thomas Miedema <thomasmiedema@gmail.com> | 2016-02-22 17:44:17 +0100 |
---|---|---|
committer | Thomas Miedema <thomasmiedema@gmail.com> | 2016-02-23 12:28:03 +0100 |
commit | 176be87cb28f675d87ea8f5c07eaef7ca47ff8de (patch) | |
tree | c8327c876974f71ae1cbe3ac5df2215a3ee12736 | |
parent | 73e409555019d370f3644bdf02b37dd526de4d8a (diff) | |
download | haskell-176be87cb28f675d87ea8f5c07eaef7ca47ff8de.tar.gz |
Filter out -prof callstacks from test output (#11521)
-rw-r--r-- | testsuite/driver/testglobals.py | 3 | ||||
-rw-r--r-- | testsuite/driver/testlib.py | 19 | ||||
-rw-r--r-- | testsuite/tests/profiling/should_run/all.T | 1 |
3 files changed, 20 insertions, 3 deletions
diff --git a/testsuite/driver/testglobals.py b/testsuite/driver/testglobals.py index 0891624473..6f8dd647ca 100644 --- a/testsuite/driver/testglobals.py +++ b/testsuite/driver/testglobals.py @@ -265,6 +265,9 @@ class TestOptions: # Extra normalisation for compiler error messages self.extra_errmsg_normaliser = lambda x: x + # Keep profiling callstacks. + self.keep_prof_callstacks = False + # The directory the test is in self.testdir = '.' diff --git a/testsuite/driver/testlib.py b/testsuite/driver/testlib.py index 9eb79e8ecb..1ebe6a7565 100644 --- a/testsuite/driver/testlib.py +++ b/testsuite/driver/testlib.py @@ -494,6 +494,13 @@ def normalise_drive_letter(name, opts): # Windows only. Change D:\\ to C:\\. _normalise_fun(name, opts, lambda str: re.sub(r'[A-Z]:\\', r'C:\\', str)) +def keep_prof_callstacks(name, opts): + """Keep profiling callstacks. + + Use together with `only_ways(prof_ways)`. + """ + opts.keep_prof_callstacks = True + def join_normalisers(*a): """ Compose functions, flattening sequences. @@ -1669,15 +1676,21 @@ def normalise_whitespace( str ): callSite_re = re.compile(r', called at (.+):[\d]+:[\d]+ in [\w\-\.]+:') -def normalise_callstacks(str): +def normalise_callstacks(s): + opts = getTestOpts() def repl(matches): location = matches.group(1) location = normalise_slashes_(location) return ', called at {0}:<line>:<column> in <package-id>:'.format(location) # Ignore line number differences in call stacks (#10834). - str1 = re.sub(callSite_re, repl, str) + s = re.sub(callSite_re, repl, s) # Ignore the change in how we identify implicit call-stacks - return str1.replace('from ImplicitParams', 'from HasCallStack') + s = s.replace('from ImplicitParams', 'from HasCallStack') + if not opts.keep_prof_callstacks: + # Don't output prof callstacks. Test output should be + # independent from the WAY we run the test. + s = re.sub(r'CallStack \(from -prof\):(\n .*)*\n?', '', s) + return s tyCon_re = re.compile(r'TyCon\s*\d+L?\#\#\s*\d+L?\#\#\s*', flags=re.MULTILINE) diff --git a/testsuite/tests/profiling/should_run/all.T b/testsuite/tests/profiling/should_run/all.T index ae349e9254..707ade3731 100644 --- a/testsuite/tests/profiling/should_run/all.T +++ b/testsuite/tests/profiling/should_run/all.T @@ -15,6 +15,7 @@ test('T11489', [req_profiling, extra_clean(['T11489.prof', 'T11489.hp'])], setTestOpts(req_profiling) setTestOpts(extra_ways(['prof'])) setTestOpts(only_ways(prof_ways)) +setTestOpts(keep_prof_callstacks) extra_prof_ways = ['prof', 'prof_hc_hb', 'prof_hb', 'prof_hd', 'prof_hy', 'prof_hr'] |