[pypy-commit] pypy call-via-pyobj: add a failing test

mattip pypy.commits at gmail.com
Fri Jul 1 05:54:18 EDT 2016


Author: Matti Picus <matti.picus at gmail.com>
Branch: call-via-pyobj
Changeset: r85483:143f7a33f037
Date: 2016-07-01 12:45 +0300
http://bitbucket.org/pypy/pypy/changeset/143f7a33f037/

Log:	add a failing test

diff --git a/pypy/module/cpyext/test/array.c b/pypy/module/cpyext/test/array.c
--- a/pypy/module/cpyext/test/array.c
+++ b/pypy/module/cpyext/test/array.c
@@ -2144,6 +2144,15 @@
     return array_new(type, args, NULL);
 }
 
+static PyObject *
+switch_multiply(void)
+{
+    fprintf(stdout, "switching nb_multiply from %p to %p\n", 
+        Arraytype.tp_as_number->nb_multiply, array_base_multiply);
+    Arraytype.tp_as_number->nb_multiply = array_base_multiply;
+    Py_RETURN_NONE;
+};
+
 PyDoc_STRVAR(module_doc,
 "This module defines an object type which can efficiently represent\n\
 an array of basic values: characters, integers, floating point\n\
@@ -2394,6 +2403,7 @@
 /* No functions in array module. */
 static PyMethodDef a_methods[] = {
     {"_reconstruct",   (PyCFunction)_reconstruct, METH_VARARGS, NULL},
+    {"switch_multiply",   (PyCFunction)switch_multiply, METH_NOARGS, NULL},
     {NULL, NULL, 0, NULL}        /* Sentinel */
 };
 
diff --git a/pypy/module/cpyext/test/test_arraymodule.py b/pypy/module/cpyext/test/test_arraymodule.py
--- a/pypy/module/cpyext/test/test_arraymodule.py
+++ b/pypy/module/cpyext/test/test_arraymodule.py
@@ -84,3 +84,7 @@
         arr = module.array('i', [2])
         res = [1, 2, 3] * arr
         assert res == [1, 2, 3, 1, 2, 3]
+        module.switch_multiply()
+        res = [1, 2, 3] * arr
+        assert res == [2, 4, 6]
+        


More information about the pypy-commit mailing list