1"""Test for PEP 562 backport.""" 2from __future__ import unicode_literals 3import unittest 4import warnings 5 6 7class TestPep562(unittest.TestCase): 8 """Tests for the PEP 562 package.""" 9 10 def test_overrides(self): 11 """Test overrides.""" 12 13 from . import overridden 14 15 # Capture overridden `__dir__` results 16 self.assertEqual(['__version__', 'version'], dir(overridden)) 17 18 # Capture a successful attribute access 19 self.assertEqual((1, 0, 0), overridden.__version__) 20 21 # Capture the overridden deprecation 22 with warnings.catch_warnings(record=True) as w: 23 # Cause all warnings to always be triggered. 24 warnings.simplefilter("always") 25 # Trigger a warning. 26 version = overridden.version 27 # Verify some things 28 self.assertTrue(len(w) == 1) 29 self.assertTrue(issubclass(w[-1].category, DeprecationWarning)) 30 self.assertEqual(overridden.__version__, version) 31 32 # Capture a failed attribute access 33 with self.assertRaises(AttributeError): 34 overridden.not_here 35 36 def test_overrides_helper(self): 37 """Test overrides with helper.""" 38 39 from . import overridden_helper 40 41 # Capture overridden `__dir__` results 42 self.assertEqual(['__version__', 'version'], dir(overridden_helper)) 43 44 # Capture a successful attribute access 45 self.assertEqual((1, 0, 0), overridden_helper.__version__) 46 47 # Capture the overridden deprecation 48 with warnings.catch_warnings(record=True) as w: 49 # Cause all warnings to always be triggered. 50 warnings.simplefilter("always") 51 # Trigger a warning. 52 version = overridden_helper.version 53 # Verify some things 54 self.assertTrue(len(w) == 1) 55 self.assertTrue(issubclass(w[-1].category, DeprecationWarning)) 56 self.assertEqual(overridden_helper.__version__, version) 57 58 # Capture a failed attribute access 59 with self.assertRaises(AttributeError): 60 overridden_helper.not_here 61 62 def test_no_overrides(self): 63 """Test no overrides.""" 64 65 from . import not_overridden 66 67 # Capture `__dir__` results 68 self.assertNotEqual(['__version__'], dir(not_overridden)) 69 self.assertTrue('__version__' in dir(not_overridden)) 70 71 # Capture a successful attribute access 72 self.assertEqual((1, 0, 0), not_overridden.__version__) 73 74 # Capture a failed attribute access 75 with self.assertRaises(AttributeError): 76 not_overridden.not_here 77