Mark failed and error tests for dict

This commit is contained in:
Aviv Palivoda committed 2020-01-17 18:02:14 +02:00
1 parent bdc627ef44
commit dd8a0412b0
2 files changed
+45 -1

No files matched your search

+1
View File
@@ -170,6 +170,7 @@ class BasicTestMappingProtocol(unittest.TestCase):
self.assertRaises(TypeError, d.__getitem__)
@unittest.skip("TODO: RUSTPYTHON")
def test_update(self):
# mapping argument
d = self._empty_mapping()
+44 -1
View File
@@ -1,6 +1,6 @@
import collections
import collections.abc
import gc
# import gc // XXX RustPython
import pickle
import random
import string
@@ -12,6 +12,7 @@ from test import support
class DictTest(unittest.TestCase):
@unittest.skip("TODO: RUSTPYTHON")
def test_invalid_keyword_arguments(self):
class Custom(dict):
pass
@@ -26,6 +27,7 @@ class DictTest(unittest.TestCase):
self.assertEqual(dict(), {})
self.assertIsNot(dict(), {})
@unittest.skip("TODO: RUSTPYTHON")
def test_literal_constructor(self):
# check literal constructor for different sized dicts
# (to exercise the BUILD_MAP oparg).
@@ -43,6 +45,7 @@ class DictTest(unittest.TestCase):
self.assertIs(bool({}), False)
self.assertIs(bool({1: 2}), True)
@unittest.skip("TODO: RUSTPYTHON")
def test_keys(self):
d = {}
self.assertEqual(set(d.keys()), set())
@@ -56,6 +59,7 @@ class DictTest(unittest.TestCase):
self.assertRaises(TypeError, d.keys, None)
self.assertEqual(repr(dict(a=1).keys()), "dict_keys(['a'])")
@unittest.skip("TODO: RUSTPYTHON")
def test_values(self):
d = {}
self.assertEqual(set(d.values()), set())
@@ -64,6 +68,7 @@ class DictTest(unittest.TestCase):
self.assertRaises(TypeError, d.values, None)
self.assertEqual(repr(dict(a=1).values()), "dict_values([1])")
@unittest.skip("TODO: RUSTPYTHON")
def test_items(self):
d = {}
self.assertEqual(set(d.items()), set())
@@ -136,6 +141,7 @@ class DictTest(unittest.TestCase):
self.assertRaises(TypeError, d.clear, None)
@unittest.skip("TODO: RUSTPYTHON")
def test_update(self):
d = {}
d.update({1:100})
@@ -212,6 +218,8 @@ class DictTest(unittest.TestCase):
self.assertRaises(ValueError, {}.update, [(1, 2, 3)])
# TODO: RUSTPYTHON
@unittest.expectedFailure
def test_fromkeys(self):
self.assertEqual(dict.fromkeys('abc'), {'a':None, 'b':None, 'c':None})
d = {}
@@ -283,6 +291,7 @@ class DictTest(unittest.TestCase):
self.assertEqual({}.copy(), {})
self.assertRaises(TypeError, d.copy, None)
@unittest.skip("TODO: RUSTPYTHON")
def test_copy_fuzz(self):
for dict_size in [10, 100, 1000, 10000, 100000]:
dict_size = random.randrange(
@@ -299,6 +308,7 @@ class DictTest(unittest.TestCase):
self.assertNotEqual(d, d2)
self.assertEqual(len(d2), len(d) + 1)
@unittest.skip("TODO: RUSTPYTHON")
def test_copy_maintains_tracking(self):
class A:
pass
@@ -361,6 +371,8 @@ class DictTest(unittest.TestCase):
x.fail = True
self.assertRaises(Exc, d.setdefault, x, [])
# TODO: RUSTPYTHON
@unittest.expectedFailure
def test_setdefault_atomic(self):
# Issue #13521: setdefault() calls __hash__ and __eq__ only once.
class Hashed(object):
@@ -470,6 +482,8 @@ class DictTest(unittest.TestCase):
for i in d:
d[i+1] = 1
# TODO: RUSTPYTHON
@unittest.expectedFailure
def test_mutating_iteration_delete(self):
# change dict content during iteration
d = {}
@@ -479,6 +493,8 @@ class DictTest(unittest.TestCase):
del d[0]
d[0] = 0
# TODO: RUSTPYTHON
@unittest.expectedFailure
def test_mutating_iteration_delete_over_values(self):
# change dict content during iteration
d = {}
@@ -488,6 +504,8 @@ class DictTest(unittest.TestCase):
del d[0]
d[0] = 0
# TODO: RUSTPYTHON
@unittest.expectedFailure
def test_mutating_iteration_delete_over_items(self):
# change dict content during iteration
d = {}
@@ -497,6 +515,7 @@ class DictTest(unittest.TestCase):
del d[0]
d[0] = 0
@unittest.skip("TODO: RUSTPYTHON")
def test_mutating_lookup(self):
# changing dict during a lookup (issue #14417)
class NastyKey:
@@ -541,6 +560,8 @@ class DictTest(unittest.TestCase):
d = {1: BadRepr()}
self.assertRaises(Exc, repr, d)
# TODO: RUSTPYTHON
@unittest.expectedFailure
def test_repr_deep(self):
d = {}
for i in range(sys.getrecursionlimit() + 100):
@@ -565,6 +586,7 @@ class DictTest(unittest.TestCase):
with self.assertRaises(Exc):
d1 == d2
@unittest.skip("TODO: RUSTPYTHON")
def test_keys_contained(self):
self.helper_keys_contained(lambda x: x.keys())
self.helper_keys_contained(lambda x: x.items())
@@ -613,6 +635,8 @@ class DictTest(unittest.TestCase):
self.assertTrue(larger != larger3)
self.assertFalse(larger == larger3)
# TODO: RUSTPYTHON
@unittest.expectedFailure
def test_errors_in_view_containment_check(self):
class C:
def __eq__(self, other):
@@ -635,6 +659,7 @@ class DictTest(unittest.TestCase):
with self.assertRaises(RuntimeError):
d3.items() > d2.items()
@unittest.skip("TODO: RUSTPYTHON")
def test_dictview_set_operations_on_keys(self):
k1 = {1:1, 2:2}.keys()
k2 = {1:1, 2:2, 3:3}.keys()
@@ -650,6 +675,7 @@ class DictTest(unittest.TestCase):
self.assertEqual(k1 ^ k2, {3})
self.assertEqual(k1 ^ k3, {1,2,4})
@unittest.skip("TODO: RUSTPYTHON")
def test_dictview_set_operations_on_items(self):
k1 = {1:1, 2:2}.items()
k2 = {1:1, 2:2, 3:3}.items()
@@ -665,6 +691,8 @@ class DictTest(unittest.TestCase):
self.assertEqual(k1 ^ k2, {(3,3)})
self.assertEqual(k1 ^ k3, {(1,1), (2,2), (4,4)})
# TODO: RUSTPYTHON
@unittest.expectedFailure
def test_dictview_mixed_set_operations(self):
# Just a few for .keys()
self.assertTrue({1:1}.keys() == {1})
@@ -801,6 +829,7 @@ class DictTest(unittest.TestCase):
'f': None, 'g': None, 'h': None}
d = {}
@unittest.skip("TODO: RUSTPYTHON")
def test_container_iterator(self):
# Bug #3680: tp_traverse was not implemented for dictiter and
# dictview objects.
@@ -1042,6 +1071,7 @@ class DictTest(unittest.TestCase):
a.a = 3
self.assertFalse(_testcapi.dict_hassplittable(a.__dict__))
@unittest.skip("TODO: RUSTPYTHON")
def test_iterator_pickling(self):
for proto in range(pickle.HIGHEST_PROTOCOL + 1):
data = {1:"a", 2:"b", 3:"c"}
@@ -1060,6 +1090,7 @@ class DictTest(unittest.TestCase):
del data[drop]
self.assertEqual(list(it), list(data))
@unittest.skip("TODO: RUSTPYTHON")
def test_itemiterator_pickling(self):
for proto in range(pickle.HIGHEST_PROTOCOL + 1):
data = {1:"a", 2:"b", 3:"c"}
@@ -1082,6 +1113,7 @@ class DictTest(unittest.TestCase):
del data[drop[0]]
self.assertEqual(dict(it), data)
@unittest.skip("TODO: RUSTPYTHON")
def test_valuesiterator_pickling(self):
for proto in range(pickle.HIGHEST_PROTOCOL + 1):
data = {1:"a", 2:"b", 3:"c"}
@@ -1098,6 +1130,7 @@ class DictTest(unittest.TestCase):
values = list(it) + [drop]
self.assertEqual(sorted(values), sorted(list(data.values())))
@unittest.skip("TODO: RUSTPYTHON")
def test_reverseiterator_pickling(self):
for proto in range(pickle.HIGHEST_PROTOCOL + 1):
data = {1:"a", 2:"b", 3:"c"}
@@ -1116,6 +1149,7 @@ class DictTest(unittest.TestCase):
del data[drop]
self.assertEqual(list(it), list(reversed(data)))
@unittest.skip("TODO: RUSTPYTHON")
def test_reverseitemiterator_pickling(self):
for proto in range(pickle.HIGHEST_PROTOCOL + 1):
data = {1:"a", 2:"b", 3:"c"}
@@ -1138,6 +1172,7 @@ class DictTest(unittest.TestCase):
del data[drop[0]]
self.assertEqual(dict(it), data)
@unittest.skip("TODO: RUSTPYTHON")
def test_reversevaluesiterator_pickling(self):
for proto in range(pickle.HIGHEST_PROTOCOL + 1):
data = {1:"a", 2:"b", 3:"c"}
@@ -1199,6 +1234,7 @@ class DictTest(unittest.TestCase):
d.popitem()
self.check_reentrant_insertion(mutate)
@unittest.skip("TODO: RUSTPYTHON")
def test_merge_and_mutate(self):
class X:
def __hash__(self):
@@ -1214,12 +1250,14 @@ class DictTest(unittest.TestCase):
d = {X(): 0, 1: 1}
self.assertRaises(RuntimeError, d.update, other)
@unittest.skip("TODO: RUSTPYTHON")
def test_free_after_iterating(self):
support.check_free_after_iterating(self, iter, dict)
support.check_free_after_iterating(self, lambda d: iter(d.keys()), dict)
support.check_free_after_iterating(self, lambda d: iter(d.values()), dict)
support.check_free_after_iterating(self, lambda d: iter(d.items()), dict)
@unittest.skip("TODO: RUSTPYTHON")
def test_equal_operator_modifying_operand(self):
# test fix for seg fault reported in issue 27945 part 3.
class X():
@@ -1273,6 +1311,7 @@ class DictTest(unittest.TestCase):
except RuntimeError: # implementation defined
pass
@unittest.skip("TODO: RUSTPYTHON")
def test_dictitems_contains_use_after_free(self):
class X:
def __eq__(self, other):
@@ -1291,6 +1330,8 @@ class DictTest(unittest.TestCase):
pair = [X(), 123]
dict([pair])
# TODO: RUSTPYTHON
@unittest.expectedFailure
def test_oob_indexing_dictiter_iternextitem(self):
class X(int):
def __del__(self):
@@ -1305,6 +1346,7 @@ class DictTest(unittest.TestCase):
self.assertRaises(RuntimeError, iter_and_mutate)
@unittest.skip("TODO: RUSTPYTHON")
def test_reversed(self):
d = {"a": 1, "b": 2, "foo": 0, "c": 3, "d": 4}
del d["foo"]
@@ -1312,6 +1354,7 @@ class DictTest(unittest.TestCase):
self.assertEqual(list(r), list('dcba'))
self.assertRaises(StopIteration, next, r)
@unittest.skip("TODO: RUSTPYTHON")
def test_dict_copy_order(self):
# bpo-34320
od = collections.OrderedDict([('a', 1), ('b', 2)])