[ create a new paste ] login | about

Link: http://codepad.org/ni2ISMQI    [ raw code | fork ]

Python, pasted on Apr 1:
#!/usr/bin/env python

import sys

import pytest
if "__pypy__" in sys.modules:
    pytest.skip("Broken on pypy")

from circuits import Event, Component
from circuits.app.log import Log, Logger

LEVELS = list(Logger.LEVELS.keys())


class Test(Event):
    """Test Event"""


class App(Component):

    def test(self, level="debug"):
        self.fire(Log(level, "Hello World!"))


@pytest.fixture
def app(request, manager, watcher):
    app = App().register(manager)
    watcher.wait("registered")

    def finalizer():
        app.unregister()
        watcher.wait("unregistered")

    request.addfinalizer(finalizer)

    return app


@pytest.fixture
def filename(request, tmpdir):
    return str(tmpdir.ensure("test.log"))


@pytest.fixture
def logger(request, manager, watcher, monkeypatch, filename):
    logger = Logger(filename, "test", "file", "DEBUG").register(manager)
    watcher.wait("registered")

    def formatTime(self, record, datefmt=None):
        return ""

    handler = logger.logger.handlers[0]
    formatter = handler.formatter
    monkeypatch.setattr(formatter, "formatTime", formatTime)

    def finalizer():
        logger.unregister()
        watcher.wait("unregistered")

    request.addfinalizer(finalizer)

    return logger


def pytest_generate_tests(metafunc):
    for level in LEVELS:
        metafunc.addcall(funcargs={"level": level})


def test(app, logger, filename, level, watcher):
    with open(filename, "r+") as f:
        app.fire(Test(level))
        watcher.wait("test")
        f.seek(0)
        s = f.read().strip()

    if level == "exception":
        level = "error"
    elif level == "warn":
        level = "warning"

    assert s == "test[log] {0:s}: Hello World!".format(level.upper())


Create a new paste based on this one


Comments: