- 论坛徽章:
- 0
|
- #!/bin/sh
- #
- usage()
- {
- echo "Usage:" "$0 <report.xml>"
- }
- format()
- {
- local xml=$1
- local new=$2
- #echo format::$xml
- cat $xml | tr -d '\n' | sed 's/>/&\n/g' > $new
- return $?
- }
- printHeader()
- {
- local xml=$1
- #echo $xml
- local headerStr='<unittest-results'
- head $xml | sed -nr '/<unittest/ s/<.*tests=*"([^"]*)".*failedtests=*"([^"]*)".*failures=*"([^"]*)".*>/alltests=\1\tfailedtests=\2\tfailures=\3/p'
- }
- parseBody()
- {
- local xml=$1
- cat $xml | awk 'BEGIN{i=0}\
- {\
- # print "parseBody::test1"
- if(i == 0){\
- #print "parseBody::test 0 branch";
- if($0 ~ /<test.*\/>/){\
- split($3,str,"\"");\
- print "casename=" str[2] "\tresult=success"}\
- else if($0 ~ /<test.*>/){\
- split($3,str,"\"");\
- i=1;
- print "casename=" str[2] "\tresult=failed"\
- }\
- } \
- else{\
- #print "parseBody::test 1 branch";
- if($0 ~ /failure/){\
- split($0,msg,"\"");print msg[2]\
- }\
- else if($0 ~ /<\/test>/){\
- i=0\
- }\
- }\
- }'
- #echo "test"
- }
- main()
- {
- #echo $#
- if [ $# -ne 1 ] ; then
- usage
- exit 1
- fi
- local xml=$1
- local formated=${xml}.tmp
- #echo $xml
- format $xml $formated
- if [ $? -ne 0 ] ; then
- echo "[ERROR] Formating failed!"
- exit 1
- fi
- printHeader $formated
- parseBody $formated
- }
- #echo $*
- main $*
复制代码 这个是请我一个同学帮我最终用shell搞定的结果,jiejie455 的也是可以的但是前提是xml要经过整理,有时候我的xml文件输出很乱,shell很强大啊 |
|