blob: 72af6d5e19d60a981d1b850321033084d29ce299 [file] [log] [blame]
#!/usr/bin/python
# -*- coding: utf-8 -*-
# Licensed under the Apache License, Version 2.0 (the "License");
# you may not use this file except in compliance with the License.
# You may obtain a copy of the License at
#
# http://www.apache.org/licenses/LICENSE-2.0
#
# Unless required by applicable law or agreed to in writing, software
# distributed under the License is distributed on an "AS IS" BASIS,
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
# See the License for the specific language governing permissions and
# limitations under the License.
import os
import sys
import glob
import traceback
from xml.etree.ElementTree import ElementTree
def print_detail_information(testcase, fail_or_error):
print "-" * 50
print "classname: %s / testname: %s" % (testcase.get("classname"), testcase.get("name"))
print fail_or_error.text
stdout = testcase.find("system-out")
if stdout != None:
print "-" * 20, "system-out", "-"*20
print stdout.text
stderr = testcase.find("system-err")
if stderr != None:
print "-" * 20, "system-err", "-"*20
print stderr.text
print "-" * 50
def print_error_reports_from_report_file(file_path):
tree = ElementTree()
try:
tree.parse(file_path)
except:
print "-" * 50
print "Error parsing %s"%file_path
f = open(file_path, "r");
print f.read();
print "-" * 50
return
testcases = tree.findall(".//testcase")
for testcase in testcases:
error = testcase.find("error")
if error is not None:
print_detail_information(testcase, error)
fail = testcase.find("fail")
if fail is not None:
print_detail_information(testcase, fail)
failure = testcase.find("failure")
if failure is not None:
print_detail_information(testcase, failure)
def main(report_dir_path):
for test_report in glob.iglob(report_dir_path + '/*.xml'):
file_path = os.path.abspath(test_report)
try:
print "Checking %s" % test_report
print_error_reports_from_report_file(file_path)
except Exception, e:
print "Error while reading report file, %s" % file_path
print "Exception: %s" % e
traceback.print_exc()
if __name__ == "__main__":
if sys.argv < 2:
print "Usage: %s [report dir path]" % sys.argv[0]
sys.exit(1)
main(sys.argv[1])