Commit 176be87c authored by thomie's avatar thomie

Filter out -prof callstacks from test output (#11521)

parent 73e40955
......@@ -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 = '.'
......
......@@ -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)
......
......@@ -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']
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment