[pypy-commit] pypy py3.3: Add missing list copy function to fix test_list for Python 3

Matthew Miller noreply at buildbot.pypy.org
Tue Apr 15 20:23:22 CEST 2014


Author: Matthew Miller <mattmiller at uwalumni.com>
Branch: py3.3
Changeset: r70638:ced27c96f4c8
Date: 2014-04-14 16:58 -0400
http://bitbucket.org/pypy/pypy/changeset/ced27c96f4c8/

Log:	Add missing list copy function to fix test_list for Python 3

diff --git a/pypy/objspace/std/listobject.py b/pypy/objspace/std/listobject.py
--- a/pypy/objspace/std/listobject.py
+++ b/pypy/objspace/std/listobject.py
@@ -1841,6 +1841,7 @@
 
     sort = interp2app(W_ListObject.descr_sort),
     index = interp2app(W_ListObject.descr_index),
+    copy = interp2app(W_ListObject.clone),
     append = interp2app(W_ListObject.append),
     reverse = interp2app(W_ListObject.descr_reverse),
     __reversed__ = interp2app(W_ListObject.descr_reversed),
diff --git a/pypy/objspace/std/test/test_listobject.py b/pypy/objspace/std/test/test_listobject.py
--- a/pypy/objspace/std/test/test_listobject.py
+++ b/pypy/objspace/std/test/test_listobject.py
@@ -1059,6 +1059,32 @@
         l.append(l)
         assert repr(l) == '[[...]]'
 
+    def test_copy(self):
+        # test that empty list copies the empty list
+        l = []
+        c = l.copy()
+        assert c == []
+
+        # test that the items of a list are the same
+        l = list(range(3))
+        c = l.copy()
+        assert l == c
+
+        # test that it's indeed a copy and not a reference
+        l = ['a', 'b']
+        c = l.copy()
+        c.append('i')
+        assert l == ['a', 'b']
+        assert c == l + ['i']
+
+        # test that it's a shallow, not a deep copy
+        l = [1, 2, [3, 4], 5]
+        c = l.copy()
+        assert l == c
+        assert c[3] == l[3]
+
+        raises(TypeError, l.copy, None)
+
     def test_append(self):
         l = []
         l.append('X')


More information about the pypy-commit mailing list