blob: c026d53fc3cb5a4baa162452d245f1729cfbb6fd [file] [log] [blame]
#!/bin/bash
# sum2xml.sh -- convert a .sum file into XML.
#
# Copyright (C) 2016,2019, 2020 Free Software Foundation, Inc.
#
# This file is part of DejaGnu.
#
# DejaGnu is free software; you can redistribute it and/or modify it
# under the terms of the GNU General Public License as published by
# the Free Software Foundation; either version 3 of the License, or
# (at your option) any later version.
if test x"$1" = x; then
outfile="/tmp/testrun.xml"
infile="/tmp/testrun.sum"
else
outfile=$(echo $1 | sed -e 's/.sum/.xml'/)
infile=$1
fi
# Where to put the output file
if test x"$2" = x; then
outfile="$outfile"
else
outfile="/tmp/$outfile"
fi
if test ! -e "$infile"; then
echo "ERROR: no input file specified!"
exit
fi
exit
# If compressed, uncompress it
type=$(file "$infile")
count=$(echo "$type" | grep -c "XZ compressed data")
if test "$count" -gt 0; then
decomp="xz -d"
comp="xz"
else
count=$(echo "$type" | grep -c "XZ compressed data")
if test "$count" -gt 0; then
decomp="gzip"
comp="gunzip"
fi
fi
#
cat <<EOF > "$outfile"
<?xml version="1.0"?>
<!DOCTYPE testsuite [
<!-- testsuite.dtd -->
<!ELEMENT testsuite (test | summary)+>
<!ELEMENT test (input, output, result, name, prms_id )>
<!ELEMENT input (#PCDATA)>
<!ELEMENT output (#PCDATA)>
<!ELEMENT result (#PCDATA)>
<!ELEMENT name (#PCDATA)>
<!ELEMENT prms_id (#PCDATA)>
<!ELEMENT summary (result, description, total)>
<!ELEMENT description (#PCDATA)>
<!ELEMENT total (#PCDATA)>
]>
EOF
# Write the opening tag for the test results
echo "<testsuite>" >> "$outfile"
${decomp} "$infile"
infile=$(echo "$infile" | sed -e 's:\.xz::' -e 's:\.gz::')
while read -r line
do
# ignore blank lines
if test x"${line}" = x; then
continue
fi
# # ignore the test case name
# if test `echo ${line} | grep -c Running` -gt 0; then
# continue
# fi
# ignore the summary, we get this via SQL later
if test "$(echo "$line" | grep -c Summary)" -gt 0; then
break
fi
valid=$(echo "$line" | grep -E -c 'PASS|FAIL|UNTESTED|UNSUPPORTED|UNRESOLVED')
if test "$valid" -eq 0; then
continue
fi
echo -n "."
{ echo "<test>"; echo " <input></input>"; echo " <output></output>"; } >> "$outfile"
result=${line/: *//}
echo " <result>${result}</result>" >> "$outfile"
name=${line/^[A-Z]*: /}
{ echo " <name>${name}</name>"; echo " <prms_id></prms_id>"; echo "</test>"; } >> "$outfile"
done < "$infile"
# Write the closing tag for the test results
echo "</testsuite>" >> "$outfile"
# compress the file again
${comp} "$infile"