diff --git a/setup.cfg b/setup.cfg index 065d28f794f5b5253474f2d9f1bea997d9d0bf64..8fd1f2967bb0a0c0e92db598646aa4f7cd5d0f94 100644 --- a/setup.cfg +++ b/setup.cfg @@ -34,7 +34,7 @@ packages = install_requires = attrs zope.interface - eliot + eliot >= 1.11,<2 aniso8601 python-challenge-bypass-ristretto # The pip resolver sometimes finds treq's dependencies first and these are diff --git a/src/_zkapauthorizer/tests/eliot.py b/src/_zkapauthorizer/tests/eliot.py deleted file mode 100644 index 094b64dd0d2ff5714b042600a27f78e2978e1e50..0000000000000000000000000000000000000000 --- a/src/_zkapauthorizer/tests/eliot.py +++ /dev/null @@ -1,76 +0,0 @@ -# Copyright 2019 PrivateStorage.io, LLC -# -# Licensed under the Apache License, Version 2.0 (the "License"); -# you may not use this file except in compliance with the License. -# You may obtain a copy of the License at -# -# http://www.apache.org/licenses/LICENSE-2.0 -# -# Unless required by applicable law or agreed to in writing, software -# distributed under the License is distributed on an "AS IS" BASIS, -# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -# See the License for the specific language governing permissions and -# limitations under the License. - -""" -Eliot testing helpers. -""" - -from functools import wraps -from unittest import SkipTest - -from eliot import MemoryLogger -from eliot.testing import check_for_errors, swap_logger - - -# validate_logging and capture_logging copied from Eliot around 1.11. We -# can't upgrade past 1.7 because we're not Python 3 compatible. -def validate_logging(assertion, *assertionArgs, **assertionKwargs): - def decorator(function): - @wraps(function) - def wrapper(self, *args, **kwargs): - skipped = False - - kwargs["logger"] = logger = MemoryLogger() - self.addCleanup(check_for_errors, logger) - # TestCase runs cleanups in reverse order, and we want this to - # run *before* tracebacks are checked: - if assertion is not None: - self.addCleanup( - lambda: skipped - or assertion(self, logger, *assertionArgs, **assertionKwargs) - ) - try: - return function(self, *args, **kwargs) - except SkipTest: - skipped = True - raise - - return wrapper - - return decorator - - -def capture_logging(assertion, *assertionArgs, **assertionKwargs): - """ - Capture and validate all logging that doesn't specify a L{Logger}. - - See L{validate_logging} for details on the rest of its behavior. - """ - - def decorator(function): - @validate_logging(assertion, *assertionArgs, **assertionKwargs) - @wraps(function) - def wrapper(self, *args, **kwargs): - logger = kwargs["logger"] - previous_logger = swap_logger(logger) - - def cleanup(): - swap_logger(previous_logger) - - self.addCleanup(cleanup) - return function(self, *args, **kwargs) - - return wrapper - - return decorator diff --git a/src/_zkapauthorizer/tests/test_plugin.py b/src/_zkapauthorizer/tests/test_plugin.py index 10cdaf4abc2bd20465bc8010522892dfedfa89bf..ce0c16ba6d2ee66ef97c16d16186169a629a099e 100644 --- a/src/_zkapauthorizer/tests/test_plugin.py +++ b/src/_zkapauthorizer/tests/test_plugin.py @@ -30,7 +30,7 @@ from allmydata.interfaces import ( RIStorageServer, ) from challenge_bypass_ristretto import SigningKey -from eliot.testing import LoggedMessage +from eliot.testing import LoggedMessage, capture_logging from fixtures import TempDir from foolscap.broker import Broker from foolscap.ipb import IReferenceable, IRemotelyCallable @@ -75,7 +75,6 @@ from ..lease_maintenance import SERVICE_NAME, LeaseMaintenanceConfig from ..model import NotEnoughTokens, VoucherStore from ..spending import GET_PASSES from .common import skipIf -from .eliot import capture_logging from .foolscap import DummyReferenceable, LocalRemote, get_anonymous_storage_server from .matchers import Provides, raises from .strategies import (