1
# Copyright 2012-2015 Canonical Ltd. This software is licensed under the
2
# GNU Affero General Public License version 3 (see the file LICENSE).
4
"""Helpers for dealing with YUI3."""
8
"gen_failed_test_messages",
9
"get_failed_tests_message",
13
def extract_tests(results):
14
"""Extract tests from a YUI3 test result object.
16
See `TestSuite-Level Events`_ for details of the test result object form.
18
.. _TestSuite-Level Events:
19
http://yuilibrary.com/yui/docs/test/#testsuite-level-events
23
_extract_tests(results, accumulator)
27
def _extract_tests(results, accumulator, *stack):
28
"""Helper for `extract_tests`."""
29
if isinstance(results, dict):
30
if results["type"] == "test":
31
name = ".".join(reversed(stack))
32
accumulator[name] = results
34
for name, value in results.items():
35
_extract_tests(value, accumulator, name, *stack)
38
def gen_failed_test_messages(results):
39
"""Yield test failure messages from the given results.
41
@param results: See `extract_tests`.
43
for name, test in extract_tests(results).items():
44
if test["result"] != "pass":
45
yield "%s: %s" % (name, test["message"])
48
def get_failed_tests_message(results):
49
"""Return a complete error message for the given results.
51
@param results: See `extract_tests`.
53
messages = gen_failed_test_messages(results)
54
return "\n\n".join(sorted(messages))