diff options
Diffstat (limited to 'security/nss/tests/common/parsegtestreport.sh')
-rw-r--r-- | security/nss/tests/common/parsegtestreport.sh | 44 |
1 files changed, 44 insertions, 0 deletions
diff --git a/security/nss/tests/common/parsegtestreport.sh b/security/nss/tests/common/parsegtestreport.sh new file mode 100644 index 0000000000..f0a879a42f --- /dev/null +++ b/security/nss/tests/common/parsegtestreport.sh @@ -0,0 +1,44 @@ +#! /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 |