[pypy-commit] pypy cpyext-old-buffers: Add tests for mmap.

devin.jeanpierre pypy.commits at gmail.com
Fri May 13 13:52:44 EDT 2016


Author: Devin Jeanpierre <jeanpierreda at gmail.com>
Branch: cpyext-old-buffers
Changeset: r84425:e70d01e7e0de
Date: 2016-05-11 16:51 -0700
http://bitbucket.org/pypy/pypy/changeset/e70d01e7e0de/

Log:	Add tests for mmap.

	Basically just checkpointing before I go off sideways into a totally
	different strategy -- it was recommended that I try to solve this in
	the general case instead of special-casing mmap. Fair enough.

diff --git a/pypy/module/cpyext/test/test_abstract.py b/pypy/module/cpyext/test/test_abstract.py
--- a/pypy/module/cpyext/test/test_abstract.py
+++ b/pypy/module/cpyext/test/test_abstract.py
@@ -1,10 +1,14 @@
 from pypy.module.cpyext.test.test_cpyext import AppTestCpythonExtensionBase
-
+import pytest
 
 class AppTestBufferProtocol(AppTestCpythonExtensionBase):
     """Tests for the old buffer protocol."""
+    spaceconfig = AppTestCpythonExtensionBase.spaceconfig.copy()
+    # Also allow mmap to be importable.
+    spaceconfig['usemodules'] = list(spaceconfig['usemodules']) + ['mmap']
+
     def w_get_buffer_support(self):
-        return self.import_extension('foo', [
+        return self.import_extension('buffer_support', [
             ("charbuffer_as_string", "METH_O",
              """
                  char *ptr;
@@ -55,3 +59,17 @@
         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)
+
+    @pytest.mark.xfail
+    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)


More information about the pypy-commit mailing list