You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
270 lines
12 KiB
270 lines
12 KiB
diff --git a/tests/test_future/test_backports.py b/tests/test_future/test_backports.py
|
|
index 9eeb741..63b1afe 100644
|
|
--- a/tests/test_future/test_backports.py
|
|
+++ b/tests/test_future/test_backports.py
|
|
@@ -87,7 +87,8 @@ class TestChainMap(unittest.TestCase):
|
|
d['b'] = 20
|
|
d['c'] = 30
|
|
self.assertEqual(d.maps, [{'b':20, 'c':30}, {'a':1, 'b':2}]) # check internal state
|
|
- self.assertEqual(d.items(), dict(a=1, b=20, c=30).items()) # check items/iter/getitem
|
|
+ self.assertEqual(sorted(d.items()),
|
|
+ sorted(dict(a=1, b=20, c=30).items())) # check items/iter/getitem
|
|
self.assertEqual(len(d), 3) # check len
|
|
for key in 'abc': # check contains
|
|
self.assertIn(key, d)
|
|
@@ -96,7 +97,8 @@ class TestChainMap(unittest.TestCase):
|
|
|
|
del d['b'] # unmask a value
|
|
self.assertEqual(d.maps, [{'c':30}, {'a':1, 'b':2}]) # check internal state
|
|
- self.assertEqual(d.items(), dict(a=1, b=2, c=30).items()) # check items/iter/getitem
|
|
+ self.assertEqual(sorted(d.items()),
|
|
+ sorted(dict(a=1, b=2, c=30).items())) # check items/iter/getitem
|
|
self.assertEqual(len(d), 3) # check len
|
|
for key in 'abc': # check contains
|
|
self.assertIn(key, d)
|
|
diff --git a/tests/test_future/test_builtins.py b/tests/test_future/test_builtins.py
|
|
index ca07b9e..944d97b 100644
|
|
--- a/tests/test_future/test_builtins.py
|
|
+++ b/tests/test_future/test_builtins.py
|
|
@@ -8,7 +8,7 @@ from future.builtins import (bytes, dict, int, range, round, str, super,
|
|
ascii, chr, hex, input, next, oct, open, pow,
|
|
filter, map, zip, min, max)
|
|
|
|
-from future.utils import PY3, exec_, native_str, implements_iterator
|
|
+from future.utils import PYPY, PY2, PY3, exec_, native_str, implements_iterator
|
|
from future.tests.base import (unittest, skip26, expectedFailurePY2,
|
|
expectedFailurePY26)
|
|
|
|
@@ -699,12 +699,13 @@ class BuiltinTest(unittest.TestCase):
|
|
self.assertEqual(eval('dir()', g, m), list('xyz'))
|
|
self.assertEqual(eval('globals()', g, m), g)
|
|
self.assertEqual(eval('locals()', g, m), m)
|
|
- self.assertRaises(TypeError, eval, 'a', m)
|
|
+ if not (PYPY and PY2):
|
|
+ self.assertRaises(TypeError, eval, 'a', m)
|
|
class A:
|
|
"Non-mapping"
|
|
pass
|
|
m = A()
|
|
- self.assertRaises(TypeError, eval, 'a', g, m)
|
|
+ self.assertRaises((AttributeError, TypeError), eval, 'a', g, m)
|
|
|
|
# Verify that dict subclasses work as well
|
|
class D(dict):
|
|
@@ -784,8 +785,9 @@ class BuiltinTest(unittest.TestCase):
|
|
# self.assertRaisesRegex(NameError, "name 'print' is not defined",
|
|
# exec_, code, {'__builtins__': {}})
|
|
# Now:
|
|
- self.assertRaises(NameError,
|
|
- exec_, code, {'__builtins__': {}})
|
|
+ if not PYPY:
|
|
+ self.assertRaises(NameError,
|
|
+ exec_, code, {'__builtins__': {}})
|
|
# __builtins__ must be a mapping type
|
|
# Was:
|
|
# self.assertRaises(TypeError,
|
|
@@ -797,8 +799,9 @@ class BuiltinTest(unittest.TestCase):
|
|
# Was:
|
|
# self.assertRaisesRegex(NameError, "__build_class__ not found",
|
|
# exec_, code, {'__builtins__': {}})
|
|
- self.assertRaises(NameError,
|
|
- exec_, code, {'__builtins__': {}})
|
|
+ if not PYPY:
|
|
+ self.assertRaises(NameError,
|
|
+ exec_, code, {'__builtins__': {}})
|
|
|
|
class frozendict_error(Exception):
|
|
pass
|
|
@@ -1304,8 +1307,9 @@ class BuiltinTest(unittest.TestCase):
|
|
self.assertAlmostEqual(pow(-1, 0.5), 1j)
|
|
self.assertAlmostEqual(pow(-1, 1/3), 0.5 + 0.8660254037844386j)
|
|
|
|
- # Raises TypeError in Python < v3.5, ValueError in v3.5:
|
|
- self.assertRaises((TypeError, ValueError), pow, -1, -2, 3)
|
|
+ if sys.hexversion < 0x03080000:
|
|
+ # Raises TypeError in Python < v3.5, ValueError in v3.5:
|
|
+ self.assertRaises((TypeError, ValueError), pow, -1, -2, 3)
|
|
self.assertRaises(ValueError, pow, 1, 2, 0)
|
|
|
|
self.assertRaises(TypeError, pow)
|
|
diff --git a/tests/test_future/test_futurize.py b/tests/test_future/test_futurize.py
|
|
index 0d7c42d..4590185 100644
|
|
--- a/tests/test_future/test_futurize.py
|
|
+++ b/tests/test_future/test_futurize.py
|
|
@@ -13,7 +13,7 @@ from lib2to3.pygram import token
|
|
|
|
from future.tests.base import (CodeHandler, unittest, skip26, reformat_code,
|
|
order_future_lines, expectedFailurePY26)
|
|
-from future.utils import PY2
|
|
+from future.utils import PY2, PY3, PYPY
|
|
|
|
|
|
class TestLibFuturize(unittest.TestCase):
|
|
@@ -565,6 +565,7 @@ class TestFuturizeSimple(CodeHandler):
|
|
# tarball.write(r2.content)
|
|
|
|
@expectedFailurePY26
|
|
+ @unittest.skipIf(PYPY and PY3, '')
|
|
def test_raw_input(self):
|
|
"""
|
|
Passes in a string to the waiting input() after futurize
|
|
diff --git a/tests/test_future/test_int.py b/tests/test_future/test_int.py
|
|
index 573a0d5..6172e48 100644
|
|
--- a/tests/test_future/test_int.py
|
|
+++ b/tests/test_future/test_int.py
|
|
@@ -6,7 +6,7 @@ from __future__ import (absolute_import, division,
|
|
print_function, unicode_literals)
|
|
from future.builtins import *
|
|
from future.tests.base import unittest, expectedFailurePY2
|
|
-from future.utils import PY26, PY2, raise_from
|
|
+from future.utils import PY26, PY2, PY3, PYPY, raise_from
|
|
|
|
import sys
|
|
import random
|
|
@@ -357,7 +357,8 @@ class IntTestCases(unittest.TestCase):
|
|
self.assertEqual(int(Foo0()), 42)
|
|
self.assertEqual(int(Foo1()), 42)
|
|
self.assertEqual(int(Foo2()), 42)
|
|
- self.assertEqual(int(Foo3()), 0)
|
|
+ if not (PYPY and PY3):
|
|
+ self.assertEqual(int(Foo3()), 0)
|
|
self.assertEqual(int(Foo4()), 42)
|
|
self.assertRaises(TypeError, int, Foo5())
|
|
|
|
diff --git a/tests/test_future/test_isinstance.py b/tests/test_future/test_isinstance.py
|
|
index 33c0a58..ccda709 100644
|
|
--- a/tests/test_future/test_isinstance.py
|
|
+++ b/tests/test_future/test_isinstance.py
|
|
@@ -4,6 +4,7 @@ From the Python 3.3 test suite
|
|
|
|
from __future__ import (absolute_import, division, unicode_literals)
|
|
from future.builtins import *
|
|
+from future.utils import PYPY
|
|
|
|
# Tests some corner cases with isinstance() and issubclass(). While these
|
|
# tests use new style classes and properties, they actually do whitebox
|
|
@@ -264,11 +265,13 @@ class TestIsInstanceIsSubclass(unittest.TestCase):
|
|
self.assertEqual(True, issubclass(int, (int, (float, int))))
|
|
self.assertEqual(True, issubclass(str, (str, (Child, NewChild, str))))
|
|
|
|
+ @unittest.skipIf(PYPY, '')
|
|
def test_subclass_recursion_limit(self):
|
|
# make sure that issubclass raises RuntimeError before the C stack is
|
|
# blown
|
|
self.assertRaises(RuntimeError, blowstack, issubclass, str, str)
|
|
|
|
+ @unittest.skipIf(PYPY, '')
|
|
def test_isinstance_recursion_limit(self):
|
|
# make sure that issubclass raises RuntimeError before the C stack is
|
|
# blown
|
|
diff --git a/tests/test_future/test_str.py b/tests/test_future/test_str.py
|
|
index 5108548..eac602f 100644
|
|
--- a/tests/test_future/test_str.py
|
|
+++ b/tests/test_future/test_str.py
|
|
@@ -201,6 +201,7 @@ class TestStr(unittest.TestCase):
|
|
with self.assertRaises(TypeError):
|
|
s.join(byte_strings2)
|
|
|
|
+ @unittest.skipIf(utils.PYPY and utils.PY2, '')
|
|
def test_str_join_staticmethod(self):
|
|
"""
|
|
Issue #33
|
|
@@ -430,10 +431,11 @@ class TestStr(unittest.TestCase):
|
|
e = s * long(4)
|
|
self.assertTrue(isinstance(e, str))
|
|
self.assertEqual(e, u'ABCABCABCABC')
|
|
- with self.assertRaises(TypeError):
|
|
- s * 3.3
|
|
- with self.assertRaises(TypeError):
|
|
- s * (3.3 + 3j)
|
|
+ if not (utils.PYPY and utils.PY2):
|
|
+ with self.assertRaises(TypeError):
|
|
+ s * 3.3
|
|
+ with self.assertRaises(TypeError):
|
|
+ s * (3.3 + 3j)
|
|
|
|
def test_rmul(self):
|
|
s = str(u'XYZ')
|
|
@@ -447,10 +449,11 @@ class TestStr(unittest.TestCase):
|
|
e = long(3) * s
|
|
self.assertTrue(isinstance(e, str))
|
|
self.assertEqual(e, u'XYZXYZXYZ')
|
|
- with self.assertRaises(TypeError):
|
|
- 3.3 * s
|
|
- with self.assertRaises(TypeError):
|
|
- (3.3 + 3j) * s
|
|
+ if not (utils.PYPY and utils.PY2):
|
|
+ with self.assertRaises(TypeError):
|
|
+ 3.3 * s
|
|
+ with self.assertRaises(TypeError):
|
|
+ (3.3 + 3j) * s
|
|
|
|
@unittest.skip('Fails on Python <= 2.7.6 due to string subclass slicing bug')
|
|
def test_slice(self):
|
|
diff --git a/tests/test_future/test_urllib2.py b/tests/test_future/test_urllib2.py
|
|
index 2d69dad..3750737 100644
|
|
--- a/tests/test_future/test_urllib2.py
|
|
+++ b/tests/test_future/test_urllib2.py
|
|
@@ -691,10 +691,7 @@ class HandlerTests(unittest.TestCase):
|
|
h = NullFTPHandler(data)
|
|
h.parent = MockOpener()
|
|
|
|
- # MIME guessing works in Python 3.8!
|
|
guessed_mime = None
|
|
- if sys.hexversion >= 0x03080000:
|
|
- guessed_mime = "image/gif"
|
|
for url, host, port, user, passwd, type_, dirs, filename, mimetype in [
|
|
("ftp://localhost/foo/bar/baz.html",
|
|
"localhost", ftplib.FTP_PORT, "", "", "I",
|
|
diff --git a/tests/test_past/test_builtins.py b/tests/test_past/test_builtins.py
|
|
index d16978e..f37b26c 100644
|
|
--- a/tests/test_past/test_builtins.py
|
|
+++ b/tests/test_past/test_builtins.py
|
|
@@ -21,6 +21,7 @@ import random
|
|
from os import unlink
|
|
from operator import neg
|
|
from future.tests.base import unittest, expectedFailurePY3, skip26
|
|
+from future.utils import PYPY, PY2
|
|
|
|
# count the number of test runs.
|
|
# used to skip running test_execfile() multiple times
|
|
@@ -423,6 +424,7 @@ class BuiltinTest(unittest.TestCase):
|
|
self.assertRaises(TypeError, eval, ())
|
|
|
|
@expectedFailurePY3
|
|
+ @unittest.skipIf(PYPY and PY2, '')
|
|
def test_general_eval(self):
|
|
# Tests that general mappings can be used for the locals argument
|
|
|
|
@@ -1174,7 +1176,8 @@ class BuiltinTest(unittest.TestCase):
|
|
def __cmp__(self, other):
|
|
raise RuntimeError
|
|
__hash__ = None # Invalid cmp makes this unhashable
|
|
- self.assertRaises(RuntimeError, range, a, a + 1, badzero(1))
|
|
+ if not (PYPY and PY2):
|
|
+ self.assertRaises(RuntimeError, range, a, a + 1, badzero(1))
|
|
|
|
# Reject floats.
|
|
self.assertRaises(TypeError, range, 1., 1., 1.)
|
|
diff --git a/tests/test_past/test_olddict.py b/tests/test_past/test_olddict.py
|
|
index 9f21060..539c277 100644
|
|
--- a/tests/test_past/test_olddict.py
|
|
+++ b/tests/test_past/test_olddict.py
|
|
@@ -7,7 +7,7 @@ from __future__ import absolute_import, unicode_literals, print_function
|
|
import os
|
|
import sys
|
|
|
|
-from future.utils import implements_iterator, PY3
|
|
+from future.utils import implements_iterator, PYPY, PY2, PY3
|
|
from future.tests.base import unittest, skip26
|
|
from past.builtins import dict
|
|
|
|
@@ -415,6 +415,7 @@ class Py2DictTest(unittest.TestCase):
|
|
self.assertRaises(Exc, d.setdefault, x, [])
|
|
|
|
@skip26
|
|
+ @unittest.skipIf(PYPY, '')
|
|
def test_setdefault_atomic(self):
|
|
# Issue #13521: setdefault() calls __hash__ and __eq__ only once.
|
|
class Hashed(object):
|