From 968507bdfb4467d5ec6e3b6999a5717100782c3c Mon Sep 17 00:00:00 2001 From: Sebastian Berg Date: Sun, 19 Jun 2016 13:12:54 +0200 Subject: ENH: Make warning testing context managers more specific This means that warnings of different origin then the one tested for behave normally. If the normal behaviour is to igonre them this might decrease specificity in rare cases. In most cases the specificity will be slightly higher. --- numpy/testing/utils.py | 11 +++-------- 1 file changed, 3 insertions(+), 8 deletions(-) (limited to 'numpy/testing/utils.py') diff --git a/numpy/testing/utils.py b/numpy/testing/utils.py index c7f4a0aa7..8789dd13c 100644 --- a/numpy/testing/utils.py +++ b/numpy/testing/utils.py @@ -1658,16 +1658,12 @@ class WarningManager(object): @contextlib.contextmanager def _assert_warns_context(warning_class, name=None): __tracebackhide__ = True # Hide traceback for py.test - with warnings.catch_warnings(record=True) as l: - warnings.simplefilter('always') + with suppress_warnings() as sup: + l = sup.record(warning_class) yield if not len(l) > 0: name_str = " when calling %s" % name if name is not None else "" raise AssertionError("No warning raised" + name_str) - if not l[0].category is warning_class: - name_str = "%s " % name if name is not None else "" - raise AssertionError("First warning %sis not a %s (is %s)" - % (name_str, warning_class, l[0])) def assert_warns(warning_class, *args, **kwargs): @@ -1676,8 +1672,7 @@ def assert_warns(warning_class, *args, **kwargs): A warning of class warning_class should be thrown by the callable when invoked with arguments args and keyword arguments kwargs. - If a different type of warning is thrown, it will not be caught, and the - test case will be deemed to have suffered an error. + If a different type of warning is thrown, it will not be caught. If called with all arguments other than the warning class omitted, may be used as a context manager: -- cgit v1.2.1 From 86b0a5e9c58160bad818ba3a0a6faf38f5ac4d09 Mon Sep 17 00:00:00 2001 From: Sebastian Berg Date: Sun, 19 Jun 2016 13:39:46 +0200 Subject: BUG: Suppress common NaT warnings Printing of datetime arrays used to cause warning due to comparison warnings in NaT. This is circumvented by using views to integer values. Part of this should be simplified when the deprecation is over. Also fixes a bug with non-native byteorder. --- numpy/testing/utils.py | 13 +++++++++---- 1 file changed, 9 insertions(+), 4 deletions(-) (limited to 'numpy/testing/utils.py') diff --git a/numpy/testing/utils.py b/numpy/testing/utils.py index 8789dd13c..682b032b4 100644 --- a/numpy/testing/utils.py +++ b/numpy/testing/utils.py @@ -396,8 +396,12 @@ def assert_equal(actual,desired,err_msg='',verbose=True): pass # Explicitly use __eq__ for comparison, ticket #2552 - if not (desired == actual): - raise AssertionError(msg) + with suppress_warnings() as sup: + # TODO: Better handling will to needed when change happens! + sup.filter(DeprecationWarning, ".*NAT ==") + sup.filter(FutureWarning, ".*NAT ==") + if not (desired == actual): + raise AssertionError(msg) def print_assert_equal(test_string, actual, desired): @@ -687,8 +691,9 @@ def assert_array_compare(comparison, x, y, err_msg='', verbose=True, # pass (or maybe eventually catch the errors and return False, I # dunno, that's a little trickier and we can figure that out when the # time comes). - with warnings.catch_warnings(): - warnings.filterwarnings("ignore", category=DeprecationWarning) + with suppress_warnings() as sup: + sup.filter(DeprecationWarning, ".*==") + sup.filter(FutureWarning, ".*==") return comparison(*args, **kwargs) def isnumber(x): -- cgit v1.2.1