]> granicus.if.org Git - python/commitdiff
Fixed memoryview constructor. It allowed arbitrary keyword arguments. The bug was...
authorChristian Heimes <christian@cheimes.de>
Thu, 8 Nov 2007 02:28:11 +0000 (02:28 +0000)
committerChristian Heimes <christian@cheimes.de>
Thu, 8 Nov 2007 02:28:11 +0000 (02:28 +0000)
Lib/test/test_memoryview.py [new file with mode: 0644]
Objects/memoryobject.c

diff --git a/Lib/test/test_memoryview.py b/Lib/test/test_memoryview.py
new file mode 100644 (file)
index 0000000..27adc5e
--- /dev/null
@@ -0,0 +1,25 @@
+"""Unit tests for the memoryview
+
+XXX We need more tests! Some tests are in test_bytes
+"""
+
+import unittest
+import test.test_support
+
+class MemoryviewTest(unittest.TestCase):
+
+    def test_constructor(self):
+        ob = b'test'
+        self.assert_(memoryview(ob))
+        self.assert_(memoryview(object=ob))
+        self.assertRaises(TypeError, memoryview)
+        self.assertRaises(TypeError, memoryview, ob, ob)
+        self.assertRaises(TypeError, memoryview, argument=ob)
+        self.assertRaises(TypeError, memoryview, ob, argument=True)
+
+def test_main():
+    test.test_support.run_unittest(MemoryviewTest)
+
+
+if __name__ == "__main__":
+    test_main()
index f0a45f622fd77ca083033550f3fc159ea714c5c8..2f177c21e82dee39d9d4cf83f79860be832f9c80 100644 (file)
@@ -69,10 +69,15 @@ PyMemoryView_FromObject(PyObject *base)
 static PyObject *
 memory_new(PyTypeObject *subtype, PyObject *args, PyObject *kwds)
 {
-        PyObject *obj;
-        if (!PyArg_UnpackTuple(args, "memoryview", 1, 1, &obj)) return NULL;
+       PyObject *obj;
+       static char *kwlist[] = {"object", 0};
 
-        return PyMemoryView_FromObject(obj);
+       if (!PyArg_ParseTupleAndKeywords(args, kwds, "O:memoryview", kwlist,
+                                        &obj)) {
+               return NULL;
+       }
+
+       return PyMemoryView_FromObject(obj);
 }