summaryrefslogtreecommitdiffstats
path: root/Python/Dependencies/future-0.18.2/tests/test_future/test_utils.py
diff options
context:
space:
mode:
Diffstat (limited to 'Python/Dependencies/future-0.18.2/tests/test_future/test_utils.py')
-rw-r--r--Python/Dependencies/future-0.18.2/tests/test_future/test_utils.py406
1 files changed, 0 insertions, 406 deletions
diff --git a/Python/Dependencies/future-0.18.2/tests/test_future/test_utils.py b/Python/Dependencies/future-0.18.2/tests/test_future/test_utils.py
deleted file mode 100644
index 46f5196..0000000
--- a/Python/Dependencies/future-0.18.2/tests/test_future/test_utils.py
+++ /dev/null
@@ -1,406 +0,0 @@
-# -*- coding: utf-8 -*-
-"""
-Tests for the various utility functions and classes in ``future.utils``
-"""
-
-from __future__ import absolute_import, unicode_literals, print_function
-import re, sys, traceback
-from future.builtins import *
-from future.utils import (old_div, istext, isbytes, native, PY2, PY3,
- native_str, raise_, as_native_str, ensure_new_type,
- bytes_to_native_str, raise_from)
-from future.tests.base import expectedFailurePY3
-
-from numbers import Integral
-from future.tests.base import unittest, skip26
-
-
-TEST_UNICODE_STR = u'ℝεα∂@ßʟ℮ ☂ℯṧт υηḯ¢☺ḓ℮'
-
-
-class MyExceptionIssue235(Exception):
- def __init__(self, a, b):
- super(MyExceptionIssue235, self).__init__('{0}: {1}'.format(a, b))
-
-
-class TestUtils(unittest.TestCase):
- def setUp(self):
- self.s = TEST_UNICODE_STR
- self.s2 = str(self.s)
- self.b = b'ABCDEFG'
- self.b2 = bytes(self.b)
-
- def test_old_div(self):
- """
- Tests whether old_div(a, b) is always equal to Python 2's a / b.
- """
- self.assertEqual(old_div(1, 2), 0)
- self.assertEqual(old_div(2, 2), 1)
- self.assertTrue(isinstance(old_div(2, 2), int))
-
- self.assertEqual(old_div(3, 2), 1)
- self.assertTrue(isinstance(old_div(3, 2), int))
-
- self.assertEqual(old_div(3., 2), 1.5)
- self.assertTrue(not isinstance(old_div(3., 2), int))
-
- self.assertEqual(old_div(-1, 2.), -0.5)
- self.assertTrue(not isinstance(old_div(-1, 2.), int))
-
- with self.assertRaises(ZeroDivisionError):
- old_div(0, 0)
- with self.assertRaises(ZeroDivisionError):
- old_div(1, 0)
-
- def test_native_str(self):
- """
- Tests whether native_str is really equal to the platform str.
- """
- if PY2:
- import __builtin__
- builtin_str = __builtin__.str
- else:
- import builtins
- builtin_str = builtins.str
-
- inputs = [b'blah', u'blah', 'blah']
- for s in inputs:
- self.assertEqual(native_str(s), builtin_str(s))
- self.assertTrue(isinstance(native_str(s), builtin_str))
-
- def test_native(self):
- a = int(10**20) # long int
- b = native(a)
- self.assertEqual(a, b)
- if PY2:
- self.assertEqual(type(b), long)
- else:
- self.assertEqual(type(b), int)
-
- c = bytes(b'ABC')
- d = native(c)
- self.assertEqual(c, d)
- if PY2:
- self.assertEqual(type(d), type(b'Py2 byte-string'))
- else:
- self.assertEqual(type(d), bytes)
-
- s = str(u'ABC')
- t = native(s)
- self.assertEqual(s, t)
- if PY2:
- self.assertEqual(type(t), unicode)
- else:
- self.assertEqual(type(t), str)
-
- d1 = dict({'a': 1, 'b': 2})
- d2 = native(d1)
- self.assertEqual(d1, d2)
- self.assertEqual(type(d2), type({}))
-
- def test_istext(self):
- self.assertTrue(istext(self.s))
- self.assertTrue(istext(self.s2))
- self.assertFalse(istext(self.b))
- self.assertFalse(istext(self.b2))
-
- def test_isbytes(self):
- self.assertTrue(isbytes(self.b))
- self.assertTrue(isbytes(self.b2))
- self.assertFalse(isbytes(self.s))
- self.assertFalse(isbytes(self.s2))
-
- def test_raise_(self):
- def valuerror():
- try:
- raise ValueError("Apples!")
- except Exception as e:
- raise_(e)
-
- self.assertRaises(ValueError, valuerror)
-
- def with_value():
- raise_(IOError, "This is an error")
-
- self.assertRaises(IOError, with_value)
-
- try:
- with_value()
- except IOError as e:
- self.assertEqual(str(e), "This is an error")
-
- def with_traceback():
- try:
- raise ValueError("An error")
- except Exception as e:
- _, _, traceback = sys.exc_info()
- raise_(IOError, str(e), traceback)
-
- self.assertRaises(IOError, with_traceback)
-
- try:
- with_traceback()
- except IOError as e:
- self.assertEqual(str(e), "An error")
-
- class Timeout(BaseException):
- pass
-
- self.assertRaises(Timeout, raise_, Timeout)
- self.assertRaises(Timeout, raise_, Timeout())
-
- if PY3:
- self.assertRaisesRegexp(
- TypeError, "class must derive from BaseException",
- raise_, int)
-
- def test_raise_from_None(self):
- try:
- try:
- raise TypeError("foo")
- except:
- raise_from(ValueError(), None)
- except ValueError as e:
- self.assertTrue(isinstance(e.__context__, TypeError))
- self.assertIsNone(e.__cause__)
-
- def test_issue_235(self):
- def foo():
- raise MyExceptionIssue235(3, 7)
-
- def bar():
- try:
- foo()
- except Exception as err:
- raise_from(ValueError('blue'), err)
-
- try:
- bar()
- except ValueError as e:
- pass
- # incorrectly raises a TypeError on Py3 as of v0.15.2.
-
- def test_raise_custom_exception(self):
- """
- Test issue #387.
- """
- class CustomException(Exception):
- def __init__(self, severity, message):
- super().__init__("custom message of severity %d: %s" % (
- severity, message))
-
- def raise_custom_exception():
- try:
- raise CustomException(1, "hello")
- except CustomException:
- raise_(*sys.exc_info())
-
- self.assertRaises(CustomException, raise_custom_exception)
-
- @skip26
- def test_as_native_str(self):
- """
- Tests the decorator as_native_str()
- """
- class MyClass(object):
- @as_native_str()
- def __repr__(self):
- return u'abc'
-
- obj = MyClass()
-
- self.assertEqual(repr(obj), 'abc')
- if PY2:
- self.assertEqual(repr(obj), b'abc')
- else:
- self.assertEqual(repr(obj), u'abc')
-
- def test_ensure_new_type(self):
- s = u'abcd'
- s2 = str(s)
- self.assertEqual(ensure_new_type(s), s2)
- self.assertEqual(type(ensure_new_type(s)), str)
-
- b = b'xyz'
- b2 = bytes(b)
- self.assertEqual(ensure_new_type(b), b2)
- self.assertEqual(type(ensure_new_type(b)), bytes)
-
- i = 10000000000000
- i2 = int(i)
- self.assertEqual(ensure_new_type(i), i2)
- self.assertEqual(type(ensure_new_type(i)), int)
-
- l = []
- self.assertIs(ensure_new_type(l), l)
-
- def test_bytes_to_native_str(self):
- """
- Test for issue #47
- """
- b = bytes(b'abc')
- s = bytes_to_native_str(b)
- if PY2:
- self.assertEqual(s, b)
- else:
- self.assertEqual(s, 'abc')
- self.assertTrue(isinstance(s, native_str))
- self.assertEqual(type(s), native_str)
-
-
-class TestCause(unittest.TestCase):
- """
- Except for the first method, these were adapted from Py3.3's
- Lib/test/test_raise.py.
- """
- def test_normal_use(self):
- """
- Adapted from PEP 3134 docs
- """
- # Setup:
- class DatabaseError(Exception):
- pass
-
- # Python 2 and 3:
- from future.utils import raise_from
-
- class FileDatabase:
- def __init__(self, filename):
- try:
- self.file = open(filename)
- except IOError as exc:
- raise_from(DatabaseError('failed to open'), exc)
-
- # Testing the above:
- try:
- fd = FileDatabase('non_existent_file.txt')
- except Exception as e:
- assert isinstance(e.__cause__, IOError) # FileNotFoundError on
- # Py3.3+ inherits from IOError
-
- def testCauseSyntax(self):
- try:
- try:
- try:
- raise TypeError
- except Exception:
- raise_from(ValueError, None)
- except ValueError as exc:
- self.assertIsNone(exc.__cause__)
- self.assertTrue(exc.__suppress_context__)
- exc.__suppress_context__ = False
- raise exc
- except ValueError as exc:
- e = exc
-
- self.assertIsNone(e.__cause__)
- self.assertFalse(e.__suppress_context__)
- self.assertIsInstance(e.__context__, TypeError)
-
- def test_invalid_cause(self):
- try:
- raise_from(IndexError, 5)
- except TypeError as e:
- self.assertIn("exception cause", str(e))
- else:
- self.fail("No exception raised")
-
- def test_class_cause(self):
- try:
- raise_from(IndexError, KeyError)
- except IndexError as e:
- self.assertIsInstance(e.__cause__, KeyError)
- else:
- self.fail("No exception raised")
-
- def test_instance_cause(self):
- cause = KeyError('blah')
- try:
- raise_from(IndexError, cause)
- except IndexError as e:
- # FAILS:
- self.assertTrue(e.__cause__ is cause)
- # Even this weaker version seems to fail, although repr(cause) looks correct.
- # Is there something strange about testing exceptions for equality?
- self.assertEqual(e.__cause__, cause)
- else:
- self.fail("No exception raised")
-
- def test_erroneous_cause(self):
- class MyException(Exception):
- def __init__(self):
- raise RuntimeError()
-
- try:
- raise_from(IndexError, MyException)
- except RuntimeError:
- pass
- else:
- self.fail("No exception raised")
-
- def test_single_exception_stacktrace(self):
- expected = '''Traceback (most recent call last):
- File "/opt/python-future/tests/test_future/test_utils.py", line 328, in test_single_exception_stacktrace
- raise CustomException('ERROR')
-'''
- if PY2:
- expected += 'CustomException: ERROR\n'
- else:
- expected += 'test_future.test_utils.CustomException: ERROR\n'
-
- try:
- raise CustomException('ERROR')
- except:
- ret = re.sub(r'"[^"]*tests/test_future', '"/opt/python-future/tests/test_future', traceback.format_exc())
- ret = re.sub(r', line \d+,', ', line 328,', ret)
- self.assertEqual(expected, ret)
- else:
- self.fail('No exception raised')
-
- if PY2:
- def test_chained_exceptions_stacktrace(self):
- expected = '''Traceback (most recent call last):
- File "/opt/python-future/tests/test_future/test_utils.py", line 1, in test_chained_exceptions_stacktrace
- raise_from(CustomException('ERROR'), val_err)
- File "/opt/python-future/src/future/utils/__init__.py", line 1, in raise_from
- raise e
-CustomException: ERROR
-
-The above exception was the direct cause of the following exception:
-
- File "/opt/python-future/tests/test_future/test_utils.py", line 1, in test_chained_exceptions_stacktrace
- raise ValueError('Wooops')
-ValueError: Wooops
-'''
-
- try:
- try:
- raise ValueError('Wooops')
- except ValueError as val_err:
- raise_from(CustomException('ERROR'), val_err)
- except Exception as err:
- ret = re.sub(r'"[^"]*tests/test_future', '"/opt/python-future/tests/test_future', traceback.format_exc())
- ret = re.sub(r'"[^"]*future/utils/__init__.py', '"/opt/python-future/src/future/utils/__init__.py', ret)
- ret = re.sub(r', line \d+,', ', line 1,', ret)
- self.assertEqual(expected.splitlines(), ret.splitlines())
- else:
- self.fail('No exception raised')
-
-
-class CustomException(Exception):
- if PY2:
- def __str__(self):
- try:
- out = Exception.__str__(self)
- if hasattr(self, '__cause__') and self.__cause__ and hasattr(self.__cause__, '__traceback__') and self.__cause__.__traceback__:
- out += '\n\nThe above exception was the direct cause of the following exception:\n\n'
- out += ''.join(traceback.format_tb(self.__cause__.__traceback__) + ['{0}: {1}'.format(self.__cause__.__class__.__name__, self.__cause__)])
- return out
- except Exception as e:
- print(e)
- else:
- pass
-
-
-if __name__ == '__main__':
- unittest.main()