Source code for cobra.test.test_core.test_summary

# -*- coding: utf-8 -*-

from __future__ import absolute_import

import re
import sys
from contextlib import contextmanager

from six import StringIO


@contextmanager
[docs]def captured_output(): """A context manager to test the IO summary methods.""" new_out, new_err = StringIO(), StringIO() old_out, old_err = sys.stdout, sys.stderr try: sys.stdout, sys.stderr = new_out, new_err yield sys.stdout, sys.stderr finally: sys.stdout, sys.stderr = old_out, old_err
[docs]def check_line(output, expected_entries, pattern=re.compile(r"\s")): """Ensure each expected entry is in the output.""" output_set = set( pattern.sub("", line) for line in output.splitlines()) for elem in expected_entries: assert pattern.sub("", elem) in output_set
[docs]def check_in_line(output, expected_entries, pattern=re.compile(r"\s")): """Ensure each expected entry is contained in the output.""" output_strip = [pattern.sub("", line) for line in output.splitlines()] for elem in expected_entries: assert any( pattern.sub("", elem) in line for line in output_strip), \ "Not found: {} in:\n{}".format(pattern.sub("", elem), "\n".join(output_strip))