44 lines
1.2 KiB
Bash
44 lines
1.2 KiB
Bash
#! /bin/sh
|
|
#
|
|
# parse the gtest results file this replaces a sed script which produced
|
|
# the identical output. This new script is now independent of new unknown
|
|
# labels being introduced in future revisions of gtests.
|
|
|
|
#this function extracts the appropriate value from
|
|
# <testcase label="value1" label2="value2" label3="value3" />
|
|
# which value is selected from the label , which is specified
|
|
# as the 2nd parameter. The line to parse is the first parameter.
|
|
getvalue()
|
|
{
|
|
pattern1='*'${2}'="'
|
|
pattern2='"*'
|
|
front=${1#${pattern1}}
|
|
if [[ "${front}" != "${1}" ]]; then
|
|
val=${front%%${pattern2}}
|
|
# as we output the result, restore any quotes that may have
|
|
# been in the original test names.
|
|
echo ${val//"/\"}
|
|
fi
|
|
}
|
|
|
|
parse()
|
|
{
|
|
while read line
|
|
do
|
|
if [[ "${line}" =~ "<testcase " ]]; then
|
|
name=$(getvalue "${line}" "name")
|
|
value=$(getvalue "${line}" "value_param")
|
|
stat=$(getvalue "${line}" "status")
|
|
class=$(getvalue "${line}" "classname")
|
|
echo "${stat} '${class}: $(echo ${name} ${value})'"
|
|
fi
|
|
done
|
|
}
|
|
|
|
# if no arguments, just take standard in, if arguments, take the args as
|
|
# files and cat them together to parse
|
|
if [ $# -eq 0 ]; then
|
|
parse
|
|
else
|
|
cat "$@" | parse
|
|
fi
|