Author: Ronan Lamy <[email protected]>
Branch: py2-mappingproxy
Changeset: r86108:50212a6235fd
Date: 2016-08-03 04:59 +0100
http://bitbucket.org/pypy/pypy/changeset/50212a6235fd/
Log: Fix test_dictproxy.py to actually match the expected behaviour
diff --git a/pypy/objspace/std/test/test_dictproxy.py
b/pypy/objspace/std/test/test_dictproxy.py
--- a/pypy/objspace/std/test/test_dictproxy.py
+++ b/pypy/objspace/std/test/test_dictproxy.py
@@ -9,37 +9,19 @@
assert 'a' in NotEmpty.__dict__
assert 'a' in NotEmpty.__dict__.keys()
assert 'b' not in NotEmpty.__dict__
- NotEmpty.__dict__['b'] = 4
- assert NotEmpty.b == 4
- del NotEmpty.__dict__['b']
assert NotEmpty.__dict__.get("b") is None
+ raises(TypeError, "NotEmpty.__dict__['b'] = 4")
raises(TypeError, 'NotEmpty.__dict__[15] = "y"')
- raises(KeyError, 'del NotEmpty.__dict__[15]')
+ raises(TypeError, 'del NotEmpty.__dict__[15]')
- assert NotEmpty.__dict__.setdefault("string", 1) == 1
- assert NotEmpty.__dict__.setdefault("string", 2) == 1
- assert NotEmpty.string == 1
- raises(TypeError, 'NotEmpty.__dict__.setdefault(15, 1)')
-
- def test_dictproxy_popitem(self):
- class A(object):
- a = 42
- seen = 0
- try:
- while True:
- key, value = A.__dict__.popitem()
- if key == 'a':
- assert value == 42
- seen += 1
- except KeyError:
- pass
- assert seen == 1
+ raises(AttributeError, 'NotEmpty.__dict__.setdefault')
def test_dictproxy_getitem(self):
class NotEmpty(object):
a = 1
assert 'a' in NotEmpty.__dict__
- class substr(str): pass
+ class substr(str):
+ pass
assert substr('a') in NotEmpty.__dict__
assert u'a' in NotEmpty.__dict__
assert NotEmpty.__dict__[u'a'] == 1
@@ -62,15 +44,37 @@
class a(object):
pass
s1 = repr(a.__dict__)
+ assert s1.startswith('dict_proxy({') and s1.endswith('})')
s2 = str(a.__dict__)
- assert s1 == s2
- assert s1.startswith('{') and s1.endswith('}')
+ assert s1 == 'dict_proxy(%s)' % s2
def test_immutable_dict_on_builtin_type(self):
raises(TypeError, "int.__dict__['a'] = 1")
- raises(TypeError, int.__dict__.popitem)
- raises(TypeError, int.__dict__.clear)
+ raises((AttributeError, TypeError), "int.__dict__.popitem()")
+ raises((AttributeError, TypeError), "int.__dict__.clear()")
+
+ def test_dictproxy(self):
+ dictproxy = type(int.__dict__)
+ assert dictproxy is not dict
+ assert dictproxy.__name__ == 'dictproxy'
+ raises(TypeError, dictproxy)
+
+ mapping = {'a': 1}
+ raises(TypeError, dictproxy, mapping)
+
+ class A(object):
+ a = 1
+
+ proxy = A.__dict__
+ mapping = dict(proxy)
+ assert proxy['a'] == 1
+ assert 'a' in proxy
+ assert 'z' not in proxy
+ assert repr(proxy) == 'dict_proxy(%r)' % mapping
+ assert proxy.keys() == mapping.keys()
+ raises(TypeError, "proxy['a'] = 4")
+ raises(TypeError, "del proxy['a']")
+ raises(AttributeError, "proxy.clear()")
class AppTestUserObjectMethodCache(AppTestUserObject):
spaceconfig = {"objspace.std.withmethodcachecounter": True}
-
_______________________________________________
pypy-commit mailing list
[email protected]
https://mail.python.org/mailman/listinfo/pypy-commit