JUnit reporter uses only 3 decimal places when reporting durations
We used to use whatever precision we ended up having from C++'s stdlib. However, some relatively popular tools, like Jenkins, use Maven SureFire XML schema to validate JUnit test reports, and Maven SureFire schema requires the duration to have at most 3 decimal places. For compatibility, the JUnit reporter will now respect this limitation. Closes #2221
This commit is contained in:
parent
1d9696d22d
commit
de67278e14
2 changed files with 21 additions and 5 deletions
|
@ -29,7 +29,11 @@ filelocParser = re.compile(r'''
|
|||
lineNumberParser = re.compile(r' line="[0-9]*"')
|
||||
hexParser = re.compile(r'\b(0[xX][0-9a-fA-F]+)\b')
|
||||
durationsParser = re.compile(r' time="[0-9]*\.[0-9]*"')
|
||||
sonarqubeDurationParser = re.compile(r''' duration=["'][0-9]+["']''')
|
||||
# Note: junit must serialize time with 3 (or or less) decimal places
|
||||
# before generalizing this parser, make sure that this is checked
|
||||
# in other places too.
|
||||
junitDurationsParser = re.compile(r' time="[0-9]+\.[0-9]{3}"')
|
||||
durationParser = re.compile(r''' duration=['"][0-9]+['"]''')
|
||||
timestampsParser = re.compile(r'\d{4}-\d{2}-\d{2}T\d{2}\:\d{2}\:\d{2}Z')
|
||||
versionParser = re.compile(r'Catch v[0-9]+\.[0-9]+\.[0-9]+(-\w*\.[0-9]+)?')
|
||||
nullParser = re.compile(r'\b(__null|nullptr)\b')
|
||||
|
@ -143,8 +147,8 @@ def filterLine(line, isCompact):
|
|||
line = hexParser.sub("0x<hex digits>", line)
|
||||
|
||||
# strip durations and timestamps
|
||||
line = durationsParser.sub(' time="{duration}"', line)
|
||||
line = sonarqubeDurationParser.sub(' duration="{duration}"', line)
|
||||
line = junitDurationsParser.sub(' time="{duration}"', line)
|
||||
line = durationParser.sub(' duration="{duration}"', line)
|
||||
line = timestampsParser.sub('{iso8601-timestamp}', line)
|
||||
line = specialCaseParser.sub('file:\g<1>', line)
|
||||
line = errnoParser.sub('errno', line)
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue