mirror of https://github.com/python/cpython
Fixed memoryview constructor. It allowed arbitrary keyword arguments. The bug was found by mykhal from #python. I've also added a small test case in the new test_memoryview.py
This commit is contained in:
parent
c1bdbc316d
commit
7b6fc8e19d
|
@ -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()
|
|
@ -69,10 +69,15 @@ PyMemoryView_FromObject(PyObject *base)
|
||||||
static PyObject *
|
static PyObject *
|
||||||
memory_new(PyTypeObject *subtype, PyObject *args, PyObject *kwds)
|
memory_new(PyTypeObject *subtype, PyObject *args, PyObject *kwds)
|
||||||
{
|
{
|
||||||
PyObject *obj;
|
PyObject *obj;
|
||||||
if (!PyArg_UnpackTuple(args, "memoryview", 1, 1, &obj)) return NULL;
|
static char *kwlist[] = {"object", 0};
|
||||||
|
|
||||||
return PyMemoryView_FromObject(obj);
|
if (!PyArg_ParseTupleAndKeywords(args, kwds, "O:memoryview", kwlist,
|
||||||
|
&obj)) {
|
||||||
|
return NULL;
|
||||||
|
}
|
||||||
|
|
||||||
|
return PyMemoryView_FromObject(obj);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
Loading…
Reference in New Issue