| #!/usr/bin/python3 | |
| # -*- 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 is not None: | |
| print("-" * 20, "system-out", "-"*20) | |
| print(stdout.text) | |
| stderr = testcase.find("system-err") | |
| if stderr is not 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 Exception: | |
| 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 as e: | |
| print("Error while reading report file, %s" % file_path) | |
| print("Exception: %s" % e) | |
| traceback.print_exc() | |
| if __name__ == "__main__": | |
| if len(sys.argv) < 2: | |
| print("Usage: %s [report dir path]" % sys.argv[0]) | |
| sys.exit(1) | |
| main(sys.argv[1]) |