Skip to content

Commit

Permalink
Remove pytest-capturelog backward compat code
Browse files Browse the repository at this point in the history
  • Loading branch information
twmr committed Sep 22, 2017
1 parent 87338cf commit 1c65ea3
Show file tree
Hide file tree
Showing 3 changed files with 1 addition and 178 deletions.
73 changes: 1 addition & 72 deletions _pytest/logging.py
Original file line number Diff line number Diff line change
Expand Up @@ -2,7 +2,6 @@

import logging
from contextlib import closing, contextmanager
import functools
import sys

import pytest
Expand Down Expand Up @@ -207,76 +206,6 @@ def at_level(self, level, logger=None):
logger.setLevel(orig_level)


class CallablePropertyMixin(object):
"""Backward compatibility for functions that became properties."""

@classmethod
def compat_property(cls, func):
if isinstance(func, property):
make_property = func.getter
func = func.fget
else:
make_property = property

@functools.wraps(func)
def getter(self):
naked_value = func(self)
ret = cls(naked_value)
ret._naked_value = naked_value
ret._warn_compat = self._warn_compat
ret._prop_name = func.__name__
return ret

return make_property(getter)

def __call__(self):
new = "'caplog.{0}' property".format(self._prop_name)
if self._prop_name == 'records':
new += ' (or caplog.clear())'
self._warn_compat(old="'caplog.{0}()' syntax".format(self._prop_name),
new=new)
return self._naked_value # to let legacy clients modify the object


class CallableList(CallablePropertyMixin, list):
pass


class CallableStr(CallablePropertyMixin, py.builtin.text):
pass


class CompatLogCaptureFixture(LogCaptureFixture):
"""Backward compatibility with pytest-capturelog."""

def _warn_compat(self, old, new):
self._item.warn(code='L1',
message=("{0} is deprecated, use {1} instead"
.format(old, new)))

@CallableStr.compat_property
def text(self):
return super(CompatLogCaptureFixture, self).text

@CallableList.compat_property
def records(self):
return super(CompatLogCaptureFixture, self).records

@CallableList.compat_property
def record_tuples(self):
return super(CompatLogCaptureFixture, self).record_tuples

def setLevel(self, level, logger=None):
self._warn_compat(old="'caplog.setLevel()'",
new="'caplog.set_level()'")
return self.set_level(level, logger)

def atLevel(self, level, logger=None):
self._warn_compat(old="'caplog.atLevel()'",
new="'caplog.at_level()'")
return self.at_level(level, logger)


@pytest.fixture
def caplog(request):
"""Access and control log capturing.
Expand All @@ -287,7 +216,7 @@ def caplog(request):
* caplog.records() -> list of logging.LogRecord instances
* caplog.record_tuples() -> list of (logger_name, level, message) tuples
"""
return CompatLogCaptureFixture(request.node)
return LogCaptureFixture(request.node)


def get_actual_log_level(config, setting_name):
Expand Down
80 changes: 0 additions & 80 deletions testing/logging/test_capturelog_compat.py

This file was deleted.

26 changes: 0 additions & 26 deletions testing/logging/test_fixture.py
Original file line number Diff line number Diff line change
Expand Up @@ -71,29 +71,3 @@ def test_clear(caplog):
assert len(caplog.records)
caplog.clear()
assert not len(caplog.records)


def test_special_warning_with_del_records_warning(testdir):
p1 = testdir.makepyfile("""
def test_del_records_inline(caplog):
del caplog.records()[:]
""")
result = testdir.runpytest_subprocess(p1)
result.stdout.fnmatch_lines([
"*'caplog.records()' syntax is deprecated,"
" use 'caplog.records' property (or caplog.clear()) instead",
"*1 *warnings*",
])


def test_warning_with_setLevel(testdir):
p1 = testdir.makepyfile("""
def test_inline(caplog):
caplog.setLevel(0)
""")
result = testdir.runpytest_subprocess(p1)
result.stdout.fnmatch_lines([
"*'caplog.setLevel()' is deprecated,"
" use 'caplog.set_level()' instead",
"*1 *warnings*",
])

0 comments on commit 1c65ea3

Please sign in to comment.