Add ability to disable warnings being emitted
Provide a helpful fixture that can be used to disable warnings being output, for testing, or other purporses. Closes-Bug: #1503918 Change-Id: I2e1fd6f427ff6ee6d0b11b86ac2ff1b75dc0548c
This commit is contained in:
parent
c788514836
commit
5fc9662d6c
@ -30,6 +30,7 @@ except AttributeError:
|
||||
# and see https://docs.python.org/2/reference/executionmodel.html (and likely
|
||||
# others)...
|
||||
_BUILTIN_MODULES = ('builtins', '__builtin__', '__builtins__', 'exceptions')
|
||||
_enabled = True
|
||||
|
||||
|
||||
def deprecation(message, stacklevel=None, category=None):
|
||||
@ -49,6 +50,8 @@ def deprecation(message, stacklevel=None, category=None):
|
||||
avoid doing by always giving at *least* N + 1 release for users to address
|
||||
the deprecation warnings).
|
||||
"""
|
||||
if not _enabled:
|
||||
return
|
||||
if category is None:
|
||||
category = DeprecationWarning
|
||||
if stacklevel is None:
|
||||
|
0
debtcollector/fixtures/__init__.py
Normal file
0
debtcollector/fixtures/__init__.py
Normal file
39
debtcollector/fixtures/disable.py
Normal file
39
debtcollector/fixtures/disable.py
Normal file
@ -0,0 +1,39 @@
|
||||
# -*- coding: utf-8 -*-
|
||||
|
||||
# Copyright (C) 2015 Yahoo! Inc. All Rights Reserved.
|
||||
#
|
||||
# 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.
|
||||
|
||||
from __future__ import absolute_import
|
||||
|
||||
import fixtures
|
||||
|
||||
from debtcollector import _utils
|
||||
|
||||
|
||||
class DisableFixture(fixtures.Fixture):
|
||||
"""Fixture that disables debtcollector triggered warnings.
|
||||
|
||||
This does **not** disable warnings calls emitted by other libraries.
|
||||
|
||||
This can be used like::
|
||||
|
||||
from debtcollector.fixtures import disable
|
||||
|
||||
with disable.DisableFixture():
|
||||
<some code that calls into depreciated code>
|
||||
"""
|
||||
|
||||
def _setUp(self):
|
||||
self.addCleanup(setattr, _utils, "_enabled", True)
|
||||
_utils._enabled = False
|
@ -15,6 +15,7 @@
|
||||
import warnings
|
||||
|
||||
import debtcollector
|
||||
from debtcollector.fixtures import disable
|
||||
from debtcollector import moves
|
||||
from debtcollector import removals
|
||||
from debtcollector import renames
|
||||
@ -225,6 +226,19 @@ class MovedPropertyTest(test_base.TestCase):
|
||||
self.assertEqual(0, len(capture))
|
||||
|
||||
|
||||
class DisabledTest(test_base.TestCase):
|
||||
def test_basics(self):
|
||||
dog = WoofWoof()
|
||||
c = KittyKat()
|
||||
with warnings.catch_warnings(record=True) as capture:
|
||||
warnings.simplefilter("always")
|
||||
with disable.DisableFixture():
|
||||
self.assertTrue(yellowish_sun())
|
||||
self.assertEqual('woof', dog.berk)
|
||||
self.assertEqual('supermeow', c.meow())
|
||||
self.assertEqual(0, len(capture))
|
||||
|
||||
|
||||
class MovedFunctionTest(test_base.TestCase):
|
||||
def test_basics(self):
|
||||
self.assertTrue(yellowish_sun())
|
||||
|
@ -31,3 +31,8 @@ Removals
|
||||
--------
|
||||
|
||||
.. automodule:: debtcollector.removals
|
||||
|
||||
Fixtures
|
||||
--------
|
||||
|
||||
.. automodule:: debtcollector.fixtures.disable
|
||||
|
@ -13,4 +13,5 @@ oslotest>=1.10.0 # Apache-2.0
|
||||
testrepository>=0.0.18
|
||||
testscenarios>=0.4
|
||||
testtools>=1.4.0
|
||||
fixtures>=1.3.1
|
||||
doc8 # Apache-2.0
|
||||
|
Loading…
Reference in New Issue
Block a user