File: conftest.py

package info (click to toggle)
python-hupper 1.12-1
  • links: PTS, VCS
  • area: main
  • in suites: forky, sid, trixie
  • size: 344 kB
  • sloc: python: 1,668; makefile: 149
file content (65 lines) | stat: -rw-r--r-- 1,528 bytes parent folder | download | duplicates (4)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
from __future__ import print_function
import pytest
import sys

from . import util


def err(msg):  # pragma: no cover
    print(msg, file=sys.stderr)


@pytest.hookimpl(tryfirst=True, hookwrapper=True)
def pytest_runtest_makereport(item, call):
    # execute all other hooks to obtain the report object
    outcome = yield
    rep = outcome.get_result()

    # set an report attribute for each phase of a call, which can
    # be "setup", "call", "teardown"
    setattr(item, "rep_" + rep.when, rep)


@pytest.fixture
def testapp(request):
    app = util.TestApp()
    try:
        yield app
    finally:
        app.stop()
    if (
        request.node.rep_call.failed and app.exitcode is not None
    ):  # pragma: no cover
        err(
            '-- test app failed --\nname=%s\nargs=%s\ncode=%s'
            % (app.name, app.args, app.exitcode)
        )
        err('-- stdout --\n%s' % app.stdout)
        err('-- stderr --\n%s' % app.stderr)


class DummyLogger:
    def __init__(self):
        self.messages = []

    def reset(self):
        self.messages = []

    def get_output(self, *levels):
        if not levels:
            levels = {'info', 'error', 'debug'}
        return '\n'.join(msg for lvl, msg in self.messages if lvl in levels)

    def info(self, msg):
        self.messages.append(('info', msg))

    def error(self, msg):
        self.messages.append(('error', msg))

    def debug(self, msg):
        self.messages.append(('debug', msg))


@pytest.fixture
def logger():
    return DummyLogger()