diff options
Diffstat (limited to 'deprecated/automation/clients/report/dejagnu/report.py')
-rw-r--r-- | deprecated/automation/clients/report/dejagnu/report.py | 115 |
1 files changed, 0 insertions, 115 deletions
diff --git a/deprecated/automation/clients/report/dejagnu/report.py b/deprecated/automation/clients/report/dejagnu/report.py deleted file mode 100644 index 191a5389..00000000 --- a/deprecated/automation/clients/report/dejagnu/report.py +++ /dev/null @@ -1,115 +0,0 @@ -# Copyright 2011 Google Inc. All Rights Reserved. -# Author: kbaclawski@google.com (Krystian Baclawski) -# - -import logging -import os.path - -RESULT_DESCRIPTION = { - 'ERROR': 'DejaGNU errors', - 'FAIL': 'Failed tests', - 'NOTE': 'DejaGNU notices', - 'PASS': 'Passed tests', - 'UNRESOLVED': 'Unresolved tests', - 'UNSUPPORTED': 'Unsupported tests', - 'UNTESTED': 'Not executed tests', - 'WARNING': 'DejaGNU warnings', - 'XFAIL': 'Expected test failures', - 'XPASS': 'Unexpectedly passed tests' -} - -RESULT_GROUPS = { - 'Successes': ['PASS', 'XFAIL'], - 'Failures': ['FAIL', 'XPASS', 'UNRESOLVED'], - 'Suppressed': ['!FAIL', '!XPASS', '!UNRESOLVED', '!ERROR'], - 'Framework': ['UNTESTED', 'UNSUPPORTED', 'ERROR', 'WARNING', 'NOTE'] -} - -ROOT_PATH = os.path.dirname(os.path.abspath(__file__)) - - -def _GetResultDescription(name): - if name.startswith('!'): - name = name[1:] - - try: - return RESULT_DESCRIPTION[name] - except KeyError: - raise ValueError('Unknown result: "%s"' % name) - - -def _PrepareSummary(res_types, summary): - - def GetResultCount(res_type): - return summary.get(res_type, 0) - - return [(_GetResultDescription(rt), GetResultCount(rt)) for rt in res_types] - - -def _PrepareTestList(res_types, tests): - - def GetTestsByResult(res_type): - return [(test.name, test.variant or '') - for test in sorted(tests) if test.result == res_type] - - return [(_GetResultDescription(rt), GetTestsByResult(rt)) - for rt in res_types if rt != 'PASS'] - - -def Generate(test_runs, manifests): - """Generate HTML report from provided test runs. - - Args: - test_runs: DejaGnuTestRun objects list. - manifests: Manifest object list that will drive test result suppression. - - Returns: - String to which the HTML report was rendered. - """ - tmpl_args = [] - - for test_run_id, test_run in enumerate(test_runs): - logging.info('Generating report for: %s.', test_run) - - test_run.CleanUpTestResults() - test_run.SuppressTestResults(manifests) - - # Generate summary and test list for each result group - groups = {} - - for res_group, res_types in RESULT_GROUPS.items(): - summary_all = _PrepareSummary(res_types, test_run.summary) - tests_all = _PrepareTestList(res_types, test_run.results) - - has_2nd = lambda tuple2: bool(tuple2[1]) - summary = filter(has_2nd, summary_all) - tests = filter(has_2nd, tests_all) - - if summary or tests: - groups[res_group] = {'summary': summary, 'tests': tests} - - tmpl_args.append({ - 'id': test_run_id, - 'name': '%s @%s' % (test_run.tool, test_run.board), - 'groups': groups - }) - - logging.info('Rendering report in HTML format.') - - try: - from django import template - from django.template import loader - from django.conf import settings - except ImportError: - logging.error('Django framework not installed!') - logging.error('Failed to generate report in HTML format!') - return '' - - settings.configure(DEBUG=True, - TEMPLATE_DEBUG=True, - TEMPLATE_DIRS=(ROOT_PATH,)) - - tmpl = loader.get_template('report.html') - ctx = template.Context({'test_runs': tmpl_args}) - - return tmpl.render(ctx) |