Skip to content
GitLab
Menu
Projects
Groups
Snippets
Help
Help
Support
Community forum
Keyboard shortcuts
?
Submit feedback
Sign in
Toggle navigation
Menu
Open sidebar
Charles Burton
Gaudi
Commits
d7bb0d7d
Commit
d7bb0d7d
authored
Oct 25, 2017
by
Marco Clemencic
Committed by
Benedikt Hegner
Oct 25, 2017
Browse files
Add support for CTest stdout compression in XML reports
parent
19babbd0
Changes
2
Hide whitespace changes
Inline
Side-by-side
.gitlab-ci.yml
View file @
d7bb0d7d
...
...
@@ -12,6 +12,7 @@ before_script:
-
export PATH=/cvmfs/lhcb.cern.ch/lib/lhcb/LBSCRIPTS/dev/InstallArea/scripts:${PATH}
-
export CMAKE_PREFIX_PATH=/cvmfs/sft.cern.ch/lcg/releases:/cvmfs/projects.cern.ch/intelsw/psxe/linux/x86_64/2017/vtune_amplifier_xe
-
export CCACHE_DIR=${PWD}/.ccache
-
export CCACHE_CPP2=1
build
:
image
:
lhcbdev/centos7-build:latest
...
...
@@ -80,6 +81,7 @@ test:
-
( make BUILDDIR=build test ARGS='-j4' || touch build/html/tests_failed ) | tee build/ctest.log
-
mv build/html test_report
-
mv build/ctest.log test_report
-
mv build/Testing test_report
artifacts
:
paths
:
-
test_report
...
...
GaudiPolicy/scripts/CTestXML2HTML
View file @
d7bb0d7d
...
...
@@ -7,6 +7,8 @@ import re
import
shutil
import
bisect
import
time
import
base64
import
zlib
from
datetime
import
datetime
,
timedelta
from
optparse
import
OptionParser
...
...
@@ -69,6 +71,26 @@ def formatMeasurementText(txt, escape=False, preformat=True):
return
txt
VALUE_DECODE
=
{
'base64'
:
base64
.
b64decode
}
VALUE_DECOMP
=
{
'gzip'
:
zlib
.
decompress
}
def
dropCustomMeasurements
(
s
):
'''
Remove custom measurements (sections encompassed by
'<DartMeasurement ...></DartMeasurement>' tags) from the input string and
return the new value.
'''
pos
=
s
.
find
(
'<DartMeasurement'
)
while
pos
>=
0
:
end_pos
=
s
.
find
(
'</DartMeasurement>'
,
pos
)
if
end_pos
<
0
:
break
# no end tag, better not to drop the section
s
=
s
[:
pos
]
+
s
[
end_pos
+
18
:]
# 18 is the size of the end tag
pos
=
s
.
find
(
'<DartMeasurement'
)
return
s
# Some regular expression that is going to be used in the next functions
space_Re
=
re
.
compile
(
r
"[ ]"
)
illegal_web_chars_Re
=
re
.
compile
(
r
"[<>\'\"#]"
)
...
...
@@ -742,19 +764,27 @@ def main():
summaryFile
.
close
()
# write the stdout
if
Results
.
find
(
"Measurement"
)
is
not
None
:
try
:
value
=
Results
.
find
(
"Measurement"
).
find
(
"Value"
)
stdout
=
open
(
os
.
path
.
join
(
testCaseDir
,
"stdout"
),
"w"
)
if
value
is
not
None
and
value
.
text
is
not
None
:
stdout
.
write
(
formatMeasurementText
(
value
.
text
,
escape
=
True
))
else
:
stdout
.
write
(
"<pre></pre>"
)
stdout
.
close
()
else
:
stdout
=
open
(
os
.
path
.
join
(
testCaseDir
,
"stdout"
),
"w"
)
stdout
.
write
(
"<pre></pre>"
)
stdout
.
close
()
text
=
value
.
text
if
'encoding'
in
value
.
attrib
:
text
=
VALUE_DECODE
[
value
.
attrib
[
'encoding'
]](
text
)
if
'compression'
in
value
.
attrib
:
text
=
VALUE_DECOMP
[
value
.
attrib
[
'compression'
]](
text
)
text
=
dropCustomMeasurements
(
text
)
text
=
formatMeasurementText
(
text
,
escape
=
True
)
# no "Measurement" or no "Value" or no text
except
AttributeError
as
x
:
print
'WARNING: {0[id]}: AttributeError: {1}'
.
format
(
summary
,
x
)
text
=
'<i>no stdout</i>'
except
KeyError
as
x
:
print
'WARNING: {0[id]}: KeyError: {1}'
.
format
(
summary
,
x
)
# encoding or compressions unknown, keep original text
text
=
formatMeasurementText
(
value
=
text
,
escape
=
True
)
with
open
(
os
.
path
.
join
(
testCaseDir
,
"stdout"
),
"w"
)
as
stdout
:
stdout
.
write
(
text
)
if
"ctest"
not
in
site
.
get
(
"Generator"
):
# write the other files
...
...
Write
Preview
Supports
Markdown
0%
Try again
or
attach a new file
.
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment