Author: Matti Picus <matti.pi...@gmail.com> Branch: py3.5 Changeset: r95038:33943b0827fd Date: 2018-08-29 08:21 +0200 http://bitbucket.org/pypy/pypy/changeset/33943b0827fd/
Log: fix bad automatic merge diff --git a/pypy/module/cpyext/test0/test_abstract.py b/pypy/module/cpyext/test0/test_abstract.py deleted file mode 100644 --- a/pypy/module/cpyext/test0/test_abstract.py +++ /dev/null @@ -1,130 +0,0 @@ -from pypy.module.cpyext.test.test_cpyext import AppTestCpythonExtensionBase -import pytest - -class AppTestBufferProtocol(AppTestCpythonExtensionBase): - """Tests for the old buffer protocol.""" - - def w_get_buffer_support(self): - return self.import_extension('buffer_support', [ - ("charbuffer_as_string", "METH_O", - """ - char *ptr; - Py_ssize_t size; - if (PyObject_AsCharBuffer(args, (const char **)&ptr, &size) < 0) - return NULL; - return PyString_FromStringAndSize(ptr, size); - """), - ("check_readbuffer", "METH_O", - """ - return PyBool_FromLong(PyObject_CheckReadBuffer(args)); - """), - ("readbuffer_as_string", "METH_O", - """ - const void *ptr; - Py_ssize_t size; - if (PyObject_AsReadBuffer(args, &ptr, &size) < 0) - return NULL; - return PyString_FromStringAndSize((char*)ptr, size); - """), - ("writebuffer_as_string", "METH_O", - """ - void *ptr; - Py_ssize_t size; - if (PyObject_AsWriteBuffer(args, &ptr, &size) < 0) - return NULL; - return PyString_FromStringAndSize((char*)ptr, size); - """), - ("zero_out_writebuffer", "METH_O", - """ - void *ptr; - Py_ssize_t size; - Py_ssize_t i; - if (PyObject_AsWriteBuffer(args, &ptr, &size) < 0) - return NULL; - for (i = 0; i < size; i++) { - ((char*)ptr)[i] = 0; - } - Py_RETURN_NONE; - """), - ]) - - def test_string(self): - buffer_support = self.get_buffer_support() - - s = 'a\0x' - - assert buffer_support.check_readbuffer(s) - assert s == buffer_support.readbuffer_as_string(s) - assert raises(TypeError, buffer_support.writebuffer_as_string, s) - assert s == buffer_support.charbuffer_as_string(s) - - def test_buffer(self): - buffer_support = self.get_buffer_support() - - s = 'a\0x' - buf = buffer(s) - - assert buffer_support.check_readbuffer(buf) - assert s == buffer_support.readbuffer_as_string(buf) - assert raises(TypeError, buffer_support.writebuffer_as_string, buf) - assert s == buffer_support.charbuffer_as_string(buf) - - def test_mmap(self): - import mmap - buffer_support = self.get_buffer_support() - - s = 'a\0x' - mm = mmap.mmap(-1, 3) - mm[:] = s - - assert buffer_support.check_readbuffer(mm) - assert s == buffer_support.readbuffer_as_string(mm) - assert s == buffer_support.writebuffer_as_string(mm) - assert s == buffer_support.charbuffer_as_string(mm) - - s = '\0' * 3 - buffer_support.zero_out_writebuffer(mm) - assert s == ''.join(mm) - assert s == buffer_support.readbuffer_as_string(mm) - assert s == buffer_support.writebuffer_as_string(mm) - assert s == buffer_support.charbuffer_as_string(mm) - - s = '\0' * 3 - ro_mm = mmap.mmap(-1, 3, access=mmap.ACCESS_READ) - assert buffer_support.check_readbuffer(ro_mm) - assert s == buffer_support.readbuffer_as_string(ro_mm) - assert raises(TypeError, buffer_support.writebuffer_as_string, ro_mm) - assert s == buffer_support.charbuffer_as_string(ro_mm) - - def test_array(self): - import array - buffer_support = self.get_buffer_support() - - s = 'a\0x' - a = array.array('B', [5, 0, 10]) - - buffer_support.zero_out_writebuffer(a) - assert list(a) == [0, 0, 0] - - def test_nonbuffer(self): - # e.g. int - buffer_support = self.get_buffer_support() - - assert not buffer_support.check_readbuffer(42) - assert raises(TypeError, buffer_support.readbuffer_as_string, 42) - assert raises(TypeError, buffer_support.writebuffer_as_string, 42) - assert raises(TypeError, buffer_support.charbuffer_as_string, 42) - - def test_user_class(self): - class MyBuf(str): - pass - s = 'a\0x' - buf = MyBuf(s) - buffer_support = self.get_buffer_support() - - assert buffer_support.check_readbuffer(buf) - assert s == buffer_support.readbuffer_as_string(buf) - assert raises(TypeError, buffer_support.writebuffer_as_string, buf) - assert s == buffer_support.charbuffer_as_string(buf) - - diff --git a/pypy/module/cpyext/test0/test_bufferobject.py b/pypy/module/cpyext/test0/test_bufferobject.py deleted file mode 100644 --- a/pypy/module/cpyext/test0/test_bufferobject.py +++ /dev/null @@ -1,123 +0,0 @@ -from rpython.rtyper.lltypesystem import lltype -from pypy.module.cpyext.test.test_api import BaseApiTest -from pypy.module.cpyext.test.test_cpyext import AppTestCpythonExtensionBase -from pypy.module.cpyext.api import PyObject - -class AppTestBufferObject(AppTestCpythonExtensionBase): - - def test_FromMemory(self): - module = self.import_extension('foo', [ - ("get_FromMemory", "METH_NOARGS", - """ - cbuf = malloc(4); - cbuf[0] = 'a'; - cbuf[1] = 'b'; - cbuf[2] = 'c'; - cbuf[3] = '\\0'; - return PyBuffer_FromMemory(cbuf, 4); - """), - ("free_buffer", "METH_NOARGS", - """ - free(cbuf); - Py_RETURN_NONE; - """), - ("check_ascharbuffer", "METH_O", - """ - char *ptr; - Py_ssize_t size; - if (PyObject_AsCharBuffer(args, (const char **)&ptr, &size) < 0) - return NULL; - return PyString_FromStringAndSize(ptr, size); - """) - ], prologue = """ - static char* cbuf = NULL; - """) - buf = module.get_FromMemory() - assert str(buf) == 'abc\0' - - assert module.check_ascharbuffer(buf) == 'abc\0' - - module.free_buffer() - - def test_Buffer_New(self): - module = self.import_extension('foo', [ - ("buffer_new", "METH_NOARGS", - """ - return PyBuffer_New(150); - """), - ]) - b = module.buffer_new() - raises(AttributeError, getattr, b, 'x') - - def test_array_buffer(self): - if self.runappdirect: - skip('PyBufferObject not available outside buffer object.c') - module = self.import_extension('foo', [ - ("roundtrip", "METH_O", - """ - PyBufferObject *buf = (PyBufferObject *)args; - return PyString_FromStringAndSize(buf->b_ptr, buf->b_size); - """), - ]) - import array - a = array.array('c', 'text') - b = buffer(a) - assert module.roundtrip(b) == 'text' - - - def test_issue2752(self): - iterations = 10 - if self.runappdirect: - iterations = 2000 - module = self.import_extension('foo', [ - ("test_mod", 'METH_VARARGS', - """ - PyObject *obj; - Py_buffer bp; - if (!PyArg_ParseTuple(args, "O", &obj)) - return NULL; - - if (PyObject_GetBuffer(obj, &bp, PyBUF_SIMPLE) == -1) - return NULL; - - if (((unsigned char*)bp.buf)[0] != '0') { - void * buf = (void*)bp.buf; - unsigned char val[4]; - char * s = PyString_AsString(obj); - memcpy(val, bp.buf, 4); - PyBuffer_Release(&bp); - if (PyObject_GetBuffer(obj, &bp, PyBUF_SIMPLE) == -1) - return NULL; - PyErr_Format(PyExc_ValueError, - "mismatch: %p [%x %x %x %x...] now %p [%x %x %x %x...] as str '%s'", - buf, val[0], val[1], val[2], val[3], - (void *)bp.buf, - ((unsigned char*)bp.buf)[0], - ((unsigned char*)bp.buf)[1], - ((unsigned char*)bp.buf)[2], - ((unsigned char*)bp.buf)[3], - s); - PyBuffer_Release(&bp); - return NULL; - } - - PyBuffer_Release(&bp); - Py_RETURN_NONE; - """), - ]) - bufsize = 4096 - def getdata(bufsize): - data = b'01234567' - for x in range(18): - data += data - if len(data) >= bufsize: - break - return data - for j in range(iterations): - block = getdata(bufsize) - assert block[:8] == '01234567' - try: - module.test_mod(block) - except ValueError as e: - print("%s at it=%d" % (e, j)) - assert False diff --git a/pypy/module/cpyext/test0/test_intobject.py b/pypy/module/cpyext/test0/test_intobject.py deleted file mode 100644 --- a/pypy/module/cpyext/test0/test_intobject.py +++ /dev/null @@ -1,247 +0,0 @@ -from pypy.module.cpyext.test.test_api import BaseApiTest, raises_w -from pypy.module.cpyext.test.test_cpyext import AppTestCpythonExtensionBase -from pypy.module.cpyext.intobject import ( - PyInt_Check, PyInt_AsLong, PyInt_AS_LONG, - PyInt_AsUnsignedLong, PyInt_AsUnsignedLongMask, - PyInt_AsUnsignedLongLongMask) -from pypy.module.cpyext.pyobject import (decref, make_ref, - get_w_obj_and_decref) -from pypy.module.cpyext.state import State -import sys - -class TestIntObject(BaseApiTest): - def test_intobject(self, space): - state = space.fromcache(State) - assert PyInt_Check(space, space.wrap(3)) - assert PyInt_Check(space, space.w_True) - assert not PyInt_Check(space, space.wrap((1, 2, 3))) - for i in [3, -5, -1, -sys.maxint, sys.maxint - 1]: - x = PyInt_AsLong(space, space.wrap(i)) - y = PyInt_AS_LONG(space, space.wrap(i)) - assert x == i - assert y == i - py_x = state.C.PyInt_FromLong(x + 1) - w_x = get_w_obj_and_decref(space, py_x) - assert space.type(w_x) is space.w_int - assert space.eq_w(w_x, space.wrap(i + 1)) - - with raises_w(space, TypeError): - PyInt_AsLong(space, space.w_None) - - with raises_w(space, TypeError): - PyInt_AsLong(space, None) - - assert PyInt_AsUnsignedLong(space, space.wrap(sys.maxint)) == sys.maxint - with raises_w(space, ValueError): - PyInt_AsUnsignedLong(space, space.wrap(-5)) - - assert (PyInt_AsUnsignedLongMask(space, space.wrap(sys.maxint)) - == sys.maxint) - assert (PyInt_AsUnsignedLongMask(space, space.wrap(10 ** 30)) - == 10 ** 30 % ((sys.maxint + 1) * 2)) - - assert (PyInt_AsUnsignedLongLongMask(space, space.wrap(sys.maxint)) - == sys.maxint) - assert (PyInt_AsUnsignedLongLongMask(space, space.wrap(10 ** 30)) - == 10 ** 30 % (2 ** 64)) - - def test_freelist_direct(self, space): - state = space.fromcache(State) - p_x = state.C.PyInt_FromLong(12345678) - decref(space, p_x) - p_y = state.C.PyInt_FromLong(87654321) - # check that the address is the same, i.e. that the freelist did its - # job - assert p_x == p_y - decref(space, p_y) - - def test_freelist_make_ref(self, space): - w_x = space.newint(12345678) - w_y = space.newint(87654321) - p_x = make_ref(space, w_x) - decref(space, p_x) - p_y = make_ref(space, w_y) - # check that the address is the same: note that w_x does NOT keep p_x - # alive, because in make_ref we have a special case for ints - assert p_x == p_y - decref(space, p_y) - - def test_freelist_int_subclass(self, space): - w_MyInt = space.appexec([], """(): - class MyInt(int): - pass - return MyInt""") - w_x = space.call_function(w_MyInt, space.newint(12345678)) - w_y = space.call_function(w_MyInt, space.newint(87654321)) - p_x = make_ref(space, w_x) - decref(space, p_x) - p_y = make_ref(space, w_y) - # now the address is different because the freelist does not work for - # int subclasses - assert p_x != p_y - decref(space, p_y) - - def test_coerce(self, space): - w_obj = space.appexec([], """(): - class Coerce(object): - def __int__(self): - return 42 - return Coerce()""") - assert PyInt_AsLong(space, w_obj) == 42 - -class AppTestIntObject(AppTestCpythonExtensionBase): - def test_fromstring(self): - module = self.import_extension('foo', [ - ("from_string", "METH_NOARGS", - """ - return PyInt_FromString("1234", NULL, 16); - """), - ]) - assert module.from_string() == 0x1234 - assert type(module.from_string()) is int - - def test_size_t(self): - module = self.import_extension('foo', [ - ("values", "METH_NOARGS", - """ - return Py_BuildValue("NNNN", - PyInt_FromSize_t(123), - PyInt_FromSize_t((size_t)-1), - PyInt_FromSsize_t(123), - PyInt_FromSsize_t((size_t)-1)); - """), - ]) - values = module.values() - types = [type(x) for x in values] - assert types == [int, long, int, int] - - def test_int_subtype(self): - module = self.import_extension( - 'foo', [ - ("newEnum", "METH_VARARGS", - """ - EnumObject *enumObj; - int intval; - PyObject *name; - - if (!PyArg_ParseTuple(args, "Oi", &name, &intval)) - return NULL; - - enumObj = PyObject_New(EnumObject, &Enum_Type); - if (!enumObj) { - return NULL; - } - - enumObj->ob_ival = intval; - Py_INCREF(name); - enumObj->ob_name = name; - - return (PyObject *)enumObj; - """), - ], - prologue=""" - #include "structmember.h" - typedef struct - { - PyObject_HEAD - long ob_ival; - PyObject* ob_name; - } EnumObject; - - static void - enum_dealloc(PyObject *op) - { - Py_DECREF(((EnumObject *)op)->ob_name); - Py_TYPE(op)->tp_free(op); - } - - static PyMemberDef enum_members[] = { - {"name", T_OBJECT, offsetof(EnumObject, ob_name), 0, NULL}, - {NULL} /* Sentinel */ - }; - - PyTypeObject Enum_Type = { - PyVarObject_HEAD_INIT(NULL, 0) - /*tp_name*/ "Enum", - /*tp_basicsize*/ sizeof(EnumObject), - /*tp_itemsize*/ 0, - /*tp_dealloc*/ enum_dealloc, - /*tp_print*/ 0, - /*tp_getattr*/ 0, - /*tp_setattr*/ 0, - /*tp_compare*/ 0, - /*tp_repr*/ 0, - /*tp_as_number*/ 0, - /*tp_as_sequence*/ 0, - /*tp_as_mapping*/ 0, - /*tp_hash*/ 0, - /*tp_call*/ 0, - /*tp_str*/ 0, - /*tp_getattro*/ 0, - /*tp_setattro*/ 0, - /*tp_as_buffer*/ 0, - /*tp_flags*/ Py_TPFLAGS_DEFAULT|Py_TPFLAGS_BASETYPE, - /*tp_doc*/ 0, - /*tp_traverse*/ 0, - /*tp_clear*/ 0, - /*tp_richcompare*/ 0, - /*tp_weaklistoffset*/ 0, - /*tp_iter*/ 0, - /*tp_iternext*/ 0, - /*tp_methods*/ 0, - /*tp_members*/ enum_members, - /*tp_getset*/ 0, - /*tp_base*/ 0, /* set to &PyInt_Type in init function for MSVC */ - /*tp_dict*/ 0, - /*tp_descr_get*/ 0, - /*tp_descr_set*/ 0, - /*tp_dictoffset*/ 0, - /*tp_init*/ 0, - /*tp_alloc*/ 0, - /*tp_new*/ 0 - }; - """, more_init = ''' - Enum_Type.tp_base = &PyInt_Type; - if (PyType_Ready(&Enum_Type) < 0) INITERROR; - ''') - - a = module.newEnum("ULTIMATE_ANSWER", 42) - assert type(a).__name__ == "Enum" - assert isinstance(a, int) - assert a == int(a) == 42 - assert a.name == "ULTIMATE_ANSWER" - - def test_int_cast(self): - mod = self.import_extension('foo', [ - #prove it works for ints - ("test_int", "METH_NOARGS", - """ - PyObject * obj = PyInt_FromLong(42); - PyObject * val; - if (!PyInt_Check(obj)) { - Py_DECREF(obj); - PyErr_SetNone(PyExc_ValueError); - return NULL; - } - val = PyInt_FromLong(((PyIntObject *)obj)->ob_ival); - Py_DECREF(obj); - return val; - """ - ), - ]) - i = mod.test_int() - assert isinstance(i, int) - assert i == 42 - - def test_int_macros(self): - mod = self.import_extension('foo', [ - ("test_macros", "METH_NOARGS", - """ - PyObject * obj = PyInt_FromLong(42); - PyIntObject * i = (PyIntObject*)obj; - PyInt_AS_LONG(obj); - PyInt_AS_LONG(i); - Py_RETURN_NONE; - """ - ), - ]) diff --git a/pypy/module/imp/importing.py b/pypy/module/imp/importing.py --- a/pypy/module/imp/importing.py +++ b/pypy/module/imp/importing.py @@ -85,8 +85,6 @@ w_mod = check_sys_modules_w(space, modulename) if w_mod: - if parts[-1] == '': - del parts[-1] return w_mod lock = getimportlock(space) try: _______________________________________________ pypy-commit mailing list pypy-commit@python.org https://mail.python.org/mailman/listinfo/pypy-commit