예제 #1
0
def test_simple(rootlogger: TagTracer) -> None:
    log = rootlogger.get("pytest")
    log("hello")
    out: List[str] = []
    rootlogger.setwriter(out.append)
    log("world")
    assert len(out) == 1
    assert out[0] == "world [pytest]\n"
    sublog = log.get("collection")
    sublog("hello")
    assert out[1] == "hello [pytest:collection]\n"
예제 #2
0
def mocked_config():
    """Mock Pytest config for testing."""
    mocked_config = mock.create_autospec(Config)

    mocked_config.getoption_side_effects = {
        '--collect-only': False,
        '--setup-plan': False,
        'rp_log_level': 'debug'
    }

    def getoption_side_effect(name, default=None):
        return mocked_config.getoption_side_effects.get(
            name, default if default else mock.Mock()
        )

    mocked_config._reporter_config = mock.Mock()
    mocked_config.getoption.side_effect = getoption_side_effect
    mocked_config._rp_enabled = True
    mocked_config.rootdir = py.path.local('/path/to')
    mocked_config.trace = TagTracer().get('root')
    mocked_config.pluginmanager = mock.Mock()
    mocked_config.option = mock.create_autospec(Config)
    mocked_config.option.rp_project = mock.sentinel.rp_project
    mocked_config.option.rp_endpoint = mock.sentinel.rp_endpoint
    mocked_config.option.rp_uuid = mock.sentinel.rp_uuid
    mocked_config.option.rp_log_batch_size = -1
    mocked_config.option.retries = -1
    mocked_config.option.rp_hierarchy_dirs_level = '0'
    mocked_config.option.rp_rerun = False
    return mocked_config
예제 #3
0
def test_indent(rootlogger: TagTracer) -> None:
    log = rootlogger.get("1")
    out = []
    log.root.setwriter(lambda arg: out.append(arg))
    log("hello")
    log.root.indent += 1
    log("line1")
    log("line2")
    log.root.indent += 1
    log("line3")
    log("line4")
    log.root.indent -= 1
    log("line5")
    log.root.indent -= 1
    log("last")
    assert len(out) == 7
    names = [x[: x.rfind(" [")] for x in out]
    assert names == [
        "hello",
        "  line1",
        "  line2",
        "    line3",
        "    line4",
        "  line5",
        "last",
    ]
예제 #4
0
def mocked_config():
    """Mock Pytest config for testing."""
    mocked_config = mock.create_autospec(Config)
    mocked_config._reportportal_configured = True
    mocked_config.rootdir = py.path.local('/path/to')
    mocked_config.trace = TagTracer().get('root')
    mocked_config.pluginmanager = mock.Mock()
    return mocked_config
예제 #5
0
def test_setprocessor(rootlogger: TagTracer) -> None:
    log = rootlogger.get("1")
    log2 = log.get("2")
    assert log2.tags == tuple("12")
    out = []
    rootlogger.setprocessor(tuple("12"), lambda *args: out.append(args))
    log("not seen")
    log2("seen")
    assert len(out) == 1
    tags, args = out[0]
    assert "1" in tags
    assert "2" in tags
    assert args == ("seen",)
    l2 = []
    rootlogger.setprocessor("1:2", lambda *args: l2.append(args))
    log2("seen")
    tags, args = l2[0]
    assert args == ("seen",)
예제 #6
0
def rootlogger() -> TagTracer:
    return TagTracer()
예제 #7
0
def test_readable_output_dictargs(rootlogger: TagTracer) -> None:
    out = rootlogger._format_message(["test"], [1])
    assert out == "1 [test]\n"

    out2 = rootlogger._format_message(["test"], ["test", {"a": 1}])
    assert out2 == "test [test]\n    a: 1\n"
예제 #8
0
def rootlogger():
    return TagTracer()