From a33b25dea988aa34844869a8adc57d5cd396d3aa Mon Sep 17 00:00:00 2001 From: Christian Heimes Date: Fri, 10 Feb 2017 14:19:07 +0100 Subject: [PATCH] Enable additional warnings (BytesWarning, DeprecationWarning) Closes: https://fedorahosted.org/freeipa/ticket/6631 Signed-off-by: Christian Heimes Reviewed-By: Martin Basti Reviewed-By: Alexander Bokovoy --- ipalib/__init__.py | 46 +++++++++++++++++++++++++++++++++++------- ipatests/ipa-run-tests | 1 + 2 files changed, 40 insertions(+), 7 deletions(-) diff --git a/ipalib/__init__.py b/ipalib/__init__.py index 4f0909047..79490865a 100644 --- a/ipalib/__init__.py +++ b/ipalib/__init__.py @@ -880,8 +880,46 @@ freeIPA.org: http://freeipa.org/page/Contribute ''' +version_info = (2, 0, 0, 'alpha', 0) +if version_info[3] == 'final': + __version__ = '%d.%d.%d' % version_info[:3] +else: + __version__ = '%d.%d.%d.%s.%d' % version_info -import os + +def _enable_warnings(error=False): + """Enable additional warnings during development + """ + import ctypes + import warnings + + # get reference to Py_BytesWarningFlag from Python CAPI + byteswarnings = ctypes.c_int.in_dll( # pylint: disable=no-member + ctypes.pythonapi, 'Py_BytesWarningFlag') + + if byteswarnings.value >= 2: + # bytes warnings flag already set to error + return + + # default warning mode for all modules: warn once per location + warnings.simplefilter('default', BytesWarning) + if error: + byteswarnings.value = 2 + action = 'error' + else: + byteswarnings.value = 1 + action = 'default' + + module = '(ipa.*|__main__)' + warnings.filterwarnings(action, category=BytesWarning, module=module) + warnings.filterwarnings(action, category=DeprecationWarning, + module=module) + +# call this as early as possible +if version_info[3] != 'final': + _enable_warnings(False) + +# noqa: E402 from ipalib import plugable from ipalib.backend import Backend from ipalib.frontend import Command, LocalOrRemote, Updater @@ -893,12 +931,6 @@ from ipalib.parameters import (BytesEnum, StrEnum, IntEnum, AccessTime, File, from ipalib.errors import SkipPluginModule from ipalib.text import _, ngettext, GettextFactory, NGettextFactory -version_info = (2, 0, 0, 'alpha', 0) -if version_info[3] == 'final': - __version__ = '%d.%d.%d' % version_info[:3] -else: - __version__ = '%d.%d.%d.%s.%d' % version_info - Registry = plugable.Registry diff --git a/ipatests/ipa-run-tests b/ipatests/ipa-run-tests index cafd993fd..6b2070bdb 100755 --- a/ipatests/ipa-run-tests +++ b/ipatests/ipa-run-tests @@ -32,6 +32,7 @@ import sys import pytest +import ipalib import ipatests # This is set to store --with-xunit report in an accessible place: