| #! /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 |