[pypy-commit] pypy default: Update import_cffi.py script and re-run it
rlamy
pypy.commits at gmail.com
Fri Nov 16 14:56:42 EST 2018
Author: Ronan Lamy <ronan.lamy at gmail.com>
Branch:
Changeset: r95326:04bda091f27f
Date: 2018-11-16 19:55 +0000
http://bitbucket.org/pypy/pypy/changeset/04bda091f27f/
Log: Update import_cffi.py script and re-run it
diff --git a/extra_tests/__init__.py b/extra_tests/__init__.py
new file mode 100644
diff --git a/extra_tests/cffi_tests/cffi0/backend_tests.py b/extra_tests/cffi_tests/cffi0/backend_tests.py
--- a/extra_tests/cffi_tests/cffi0/backend_tests.py
+++ b/extra_tests/cffi_tests/cffi0/backend_tests.py
@@ -3,7 +3,7 @@
import platform
import sys, ctypes
from cffi import FFI, CDefError, FFIError, VerificationMissing
-from pypy.module.test_lib_pypy.cffi_tests.support import *
+from extra_tests.cffi_tests.support import *
SIZE_OF_INT = ctypes.sizeof(ctypes.c_int)
SIZE_OF_LONG = ctypes.sizeof(ctypes.c_long)
diff --git a/extra_tests/cffi_tests/cffi0/test_ctypes.py b/extra_tests/cffi_tests/cffi0/test_ctypes.py
--- a/extra_tests/cffi_tests/cffi0/test_ctypes.py
+++ b/extra_tests/cffi_tests/cffi0/test_ctypes.py
@@ -1,6 +1,6 @@
# Generated by pypy/tool/import_cffi.py
import py, sys
-from pypy.module.test_lib_pypy.cffi_tests.cffi0 import backend_tests
+from extra_tests.cffi_tests.cffi0 import backend_tests
from cffi.backend_ctypes import CTypesBackend
diff --git a/extra_tests/cffi_tests/cffi0/test_ffi_backend.py b/extra_tests/cffi_tests/cffi0/test_ffi_backend.py
--- a/extra_tests/cffi_tests/cffi0/test_ffi_backend.py
+++ b/extra_tests/cffi_tests/cffi0/test_ffi_backend.py
@@ -1,8 +1,8 @@
# Generated by pypy/tool/import_cffi.py
import py, sys, platform
import pytest
-from pypy.module.test_lib_pypy.cffi_tests.cffi0 import backend_tests, test_function, test_ownlib
-from pypy.module.test_lib_pypy.cffi_tests.support import u
+from extra_tests.cffi_tests.cffi0 import backend_tests, test_function, test_ownlib
+from extra_tests.cffi_tests.support import u
from cffi import FFI
import _cffi_backend
diff --git a/extra_tests/cffi_tests/cffi0/test_function.py b/extra_tests/cffi_tests/cffi0/test_function.py
--- a/extra_tests/cffi_tests/cffi0/test_function.py
+++ b/extra_tests/cffi_tests/cffi0/test_function.py
@@ -4,8 +4,8 @@
import math, os, sys
import ctypes.util
from cffi.backend_ctypes import CTypesBackend
-from pypy.module.test_lib_pypy.cffi_tests.udir import udir
-from pypy.module.test_lib_pypy.cffi_tests.support import FdWriteCapture
+from extra_tests.cffi_tests.udir import udir
+from extra_tests.cffi_tests.support import FdWriteCapture
from .backend_tests import needs_dlopen_none
try:
diff --git a/extra_tests/cffi_tests/cffi0/test_ownlib.py b/extra_tests/cffi_tests/cffi0/test_ownlib.py
--- a/extra_tests/cffi_tests/cffi0/test_ownlib.py
+++ b/extra_tests/cffi_tests/cffi0/test_ownlib.py
@@ -1,9 +1,9 @@
# Generated by pypy/tool/import_cffi.py
-import py, sys
+import py, sys, os
import subprocess, weakref
from cffi import FFI
from cffi.backend_ctypes import CTypesBackend
-from pypy.module.test_lib_pypy.cffi_tests.support import u
+from extra_tests.cffi_tests.support import u
SOURCE = """\
@@ -115,10 +115,9 @@
def setup_class(cls):
cls.module = None
- from pypy.module.test_lib_pypy.cffi_tests.udir import udir
+ from extra_tests.cffi_tests.udir import udir
udir.join('testownlib.c').write(SOURCE)
if sys.platform == 'win32':
- import os
# did we already build it?
if cls.Backend is CTypesBackend:
dll_path = str(udir) + '\\testownlib1.dll' # only ascii for the ctypes backend
@@ -149,10 +148,23 @@
os.rename(str(udir) + '\\testownlib.dll', dll_path)
cls.module = dll_path
else:
+ encoded = None
+ if cls.Backend is not CTypesBackend:
+ try:
+ unicode_name = u+'testownlibcaf\xe9'
+ encoded = unicode_name.encode(sys.getfilesystemencoding())
+ if sys.version_info >= (3,):
+ encoded = str(unicode_name)
+ except UnicodeEncodeError:
+ pass
+ if encoded is None:
+ unicode_name = u+'testownlib'
+ encoded = str(unicode_name)
subprocess.check_call(
- 'cc testownlib.c -shared -fPIC -o testownlib.so',
+ "cc testownlib.c -shared -fPIC -o '%s.so'" % (encoded,),
cwd=str(udir), shell=True)
- cls.module = str(udir.join('testownlib.so'))
+ cls.module = os.path.join(str(udir), unicode_name + (u+'.so'))
+ print(repr(cls.module))
def test_getting_errno(self):
if self.module is None:
diff --git a/extra_tests/cffi_tests/cffi0/test_verify.py b/extra_tests/cffi_tests/cffi0/test_verify.py
--- a/extra_tests/cffi_tests/cffi0/test_verify.py
+++ b/extra_tests/cffi_tests/cffi0/test_verify.py
@@ -2,7 +2,7 @@
import py, re
import sys, os, math, weakref
from cffi import FFI, VerificationError, VerificationMissing, model, FFIError
-from pypy.module.test_lib_pypy.cffi_tests.support import *
+from extra_tests.cffi_tests.support import *
lib_m = ['m']
@@ -1408,7 +1408,7 @@
def test_tmpdir():
import tempfile, os
- from pypy.module.test_lib_pypy.cffi_tests.udir import udir
+ from extra_tests.cffi_tests.udir import udir
tmpdir = tempfile.mkdtemp(dir=str(udir))
ffi = FFI()
ffi.cdef("int foo(int);")
@@ -1418,7 +1418,7 @@
def test_relative_to():
import tempfile, os
- from pypy.module.test_lib_pypy.cffi_tests.udir import udir
+ from extra_tests.cffi_tests.udir import udir
tmpdir = tempfile.mkdtemp(dir=str(udir))
ffi = FFI()
ffi.cdef("int foo(int);")
diff --git a/extra_tests/cffi_tests/cffi0/test_zdistutils.py b/extra_tests/cffi_tests/cffi0/test_zdistutils.py
--- a/extra_tests/cffi_tests/cffi0/test_zdistutils.py
+++ b/extra_tests/cffi_tests/cffi0/test_zdistutils.py
@@ -4,7 +4,7 @@
from cffi import FFI, FFIError
from cffi.verifier import Verifier, _locate_engine_class, _get_so_suffixes
from cffi.ffiplatform import maybe_relative_path
-from pypy.module.test_lib_pypy.cffi_tests.udir import udir
+from extra_tests.cffi_tests.udir import udir
class DistUtilsTest(object):
diff --git a/extra_tests/cffi_tests/cffi0/test_zintegration.py b/extra_tests/cffi_tests/cffi0/test_zintegration.py
--- a/extra_tests/cffi_tests/cffi0/test_zintegration.py
+++ b/extra_tests/cffi_tests/cffi0/test_zintegration.py
@@ -1,7 +1,7 @@
# Generated by pypy/tool/import_cffi.py
import py, os, sys, shutil
import subprocess
-from pypy.module.test_lib_pypy.cffi_tests.udir import udir
+from extra_tests.cffi_tests.udir import udir
if sys.platform == 'win32':
py.test.skip('snippets do not run on win32')
diff --git a/extra_tests/cffi_tests/cffi1/test_dlopen.py b/extra_tests/cffi_tests/cffi1/test_dlopen.py
--- a/extra_tests/cffi_tests/cffi1/test_dlopen.py
+++ b/extra_tests/cffi_tests/cffi1/test_dlopen.py
@@ -2,7 +2,7 @@
import py
from cffi import FFI, VerificationError, CDefError
from cffi.recompiler import make_py_source
-from pypy.module.test_lib_pypy.cffi_tests.udir import udir
+from extra_tests.cffi_tests.udir import udir
def test_simple():
diff --git a/extra_tests/cffi_tests/cffi1/test_new_ffi_1.py b/extra_tests/cffi_tests/cffi1/test_new_ffi_1.py
--- a/extra_tests/cffi_tests/cffi1/test_new_ffi_1.py
+++ b/extra_tests/cffi_tests/cffi1/test_new_ffi_1.py
@@ -3,8 +3,8 @@
import platform, imp
import sys, os, ctypes
import cffi
-from pypy.module.test_lib_pypy.cffi_tests.udir import udir
-from pypy.module.test_lib_pypy.cffi_tests.support import *
+from extra_tests.cffi_tests.udir import udir
+from extra_tests.cffi_tests.support import *
from cffi.recompiler import recompile
from cffi.cffi_opcode import PRIMITIVE_TO_INDEX
diff --git a/extra_tests/cffi_tests/cffi1/test_re_python.py b/extra_tests/cffi_tests/cffi1/test_re_python.py
--- a/extra_tests/cffi_tests/cffi1/test_re_python.py
+++ b/extra_tests/cffi_tests/cffi1/test_re_python.py
@@ -3,8 +3,8 @@
import py
from cffi import FFI
from cffi import recompiler, ffiplatform, VerificationMissing
-from pypy.module.test_lib_pypy.cffi_tests.udir import udir
-from pypy.module.test_lib_pypy.cffi_tests.support import u
+from extra_tests.cffi_tests.udir import udir
+from extra_tests.cffi_tests.support import u
def setup_module(mod):
@@ -37,13 +37,22 @@
'globalconst42', 'globalconsthello']
)
outputfilename = ffiplatform.compile(str(tmpdir), ext)
+
+ # test with a non-ascii char
+ ofn, oext = os.path.splitext(outputfilename)
if sys.platform == "win32":
- # test with a non-ascii char
- outputfn1 = outputfilename
- ofn, oext = os.path.splitext(outputfn1)
- outputfilename = ofn + (u+'\u03be') + oext
- #print(repr(outputfn1) + ' ==> ' + repr(outputfilename))
- os.rename(outputfn1, outputfilename)
+ unicode_name = ofn + (u+'\u03be') + oext
+ else:
+ unicode_name = ofn + (u+'\xe9') + oext
+ try:
+ unicode_name.encode(sys.getfilesystemencoding())
+ except UnicodeEncodeError:
+ unicode_name = None
+ if unicode_name is not None:
+ print(repr(outputfilename) + ' ==> ' + repr(unicode_name))
+ os.rename(outputfilename, unicode_name)
+ outputfilename = unicode_name
+
mod.extmod = outputfilename
mod.tmpdir = tmpdir
#
diff --git a/extra_tests/cffi_tests/cffi1/test_recompiler.py b/extra_tests/cffi_tests/cffi1/test_recompiler.py
--- a/extra_tests/cffi_tests/cffi1/test_recompiler.py
+++ b/extra_tests/cffi_tests/cffi1/test_recompiler.py
@@ -3,9 +3,9 @@
import sys, os, py
from cffi import FFI, VerificationError, FFIError, CDefError
from cffi import recompiler
-from pypy.module.test_lib_pypy.cffi_tests.udir import udir
-from pypy.module.test_lib_pypy.cffi_tests.support import u, long
-from pypy.module.test_lib_pypy.cffi_tests.support import FdWriteCapture, StdErrCapture
+from extra_tests.cffi_tests.udir import udir
+from extra_tests.cffi_tests.support import u, long
+from extra_tests.cffi_tests.support import FdWriteCapture, StdErrCapture
try:
import importlib
diff --git a/extra_tests/cffi_tests/cffi1/test_verify1.py b/extra_tests/cffi_tests/cffi1/test_verify1.py
--- a/extra_tests/cffi_tests/cffi1/test_verify1.py
+++ b/extra_tests/cffi_tests/cffi1/test_verify1.py
@@ -3,7 +3,7 @@
from cffi import FFI, FFIError, VerificationError, VerificationMissing, model
from cffi import CDefError
from cffi import recompiler
-from pypy.module.test_lib_pypy.cffi_tests.support import *
+from extra_tests.cffi_tests.support import *
import _cffi_backend
lib_m = ['m']
@@ -1377,7 +1377,7 @@
def test_tmpdir():
import tempfile, os
- from pypy.module.test_lib_pypy.cffi_tests.udir import udir
+ from extra_tests.cffi_tests.udir import udir
tmpdir = tempfile.mkdtemp(dir=str(udir))
ffi = FFI()
ffi.cdef("int foo(int);")
@@ -1388,7 +1388,7 @@
def test_relative_to():
py.test.skip("not available")
import tempfile, os
- from pypy.module.test_lib_pypy.cffi_tests.udir import udir
+ from extra_tests.cffi_tests.udir import udir
tmpdir = tempfile.mkdtemp(dir=str(udir))
ffi = FFI()
ffi.cdef("int foo(int);")
@@ -2234,7 +2234,7 @@
def test_windows_dllimport_data():
if sys.platform != 'win32':
py.test.skip("Windows only")
- from pypy.module.test_lib_pypy.cffi_tests.udir import udir
+ from extra_tests.cffi_tests.udir import udir
tmpfile = udir.join('dllimport_data.c')
tmpfile.write('int my_value = 42;\n')
ffi = FFI()
diff --git a/extra_tests/cffi_tests/cffi1/test_zdist.py b/extra_tests/cffi_tests/cffi1/test_zdist.py
--- a/extra_tests/cffi_tests/cffi1/test_zdist.py
+++ b/extra_tests/cffi_tests/cffi1/test_zdist.py
@@ -2,7 +2,7 @@
import sys, os, py
import subprocess
import cffi
-from pypy.module.test_lib_pypy.cffi_tests.udir import udir
+from extra_tests.cffi_tests.udir import udir
from shutil import rmtree
from tempfile import mkdtemp
diff --git a/extra_tests/cffi_tests/embedding/add1.py b/extra_tests/cffi_tests/embedding/add1.py
--- a/extra_tests/cffi_tests/embedding/add1.py
+++ b/extra_tests/cffi_tests/embedding/add1.py
@@ -12,7 +12,7 @@
sys.stdout.write("preparing")
for i in range(3):
sys.stdout.flush()
- time.sleep(0.02)
+ time.sleep(0.2)
sys.stdout.write(".")
sys.stdout.write("\n")
diff --git a/extra_tests/cffi_tests/embedding/test_basic.py b/extra_tests/cffi_tests/embedding/test_basic.py
--- a/extra_tests/cffi_tests/embedding/test_basic.py
+++ b/extra_tests/cffi_tests/embedding/test_basic.py
@@ -2,7 +2,7 @@
import py
import sys, os, re
import shutil, subprocess, time
-from pypy.module.test_lib_pypy.cffi_tests.udir import udir
+from extra_tests.cffi_tests.udir import udir
import cffi
diff --git a/extra_tests/cffi_tests/embedding/test_performance.py b/extra_tests/cffi_tests/embedding/test_performance.py
--- a/extra_tests/cffi_tests/embedding/test_performance.py
+++ b/extra_tests/cffi_tests/embedding/test_performance.py
@@ -1,6 +1,6 @@
# Generated by pypy/tool/import_cffi.py
import sys
-from pypy.module.test_lib_pypy.cffi_tests.embedding.test_basic import EmbeddingTests
+from extra_tests.cffi_tests.embedding.test_basic import EmbeddingTests
if sys.platform == 'win32':
import py
diff --git a/extra_tests/cffi_tests/embedding/test_recursive.py b/extra_tests/cffi_tests/embedding/test_recursive.py
--- a/extra_tests/cffi_tests/embedding/test_recursive.py
+++ b/extra_tests/cffi_tests/embedding/test_recursive.py
@@ -1,5 +1,5 @@
# Generated by pypy/tool/import_cffi.py
-from pypy.module.test_lib_pypy.cffi_tests.embedding.test_basic import EmbeddingTests
+from extra_tests.cffi_tests.embedding.test_basic import EmbeddingTests
class TestRecursive(EmbeddingTests):
diff --git a/extra_tests/cffi_tests/embedding/test_thread.py b/extra_tests/cffi_tests/embedding/test_thread.py
--- a/extra_tests/cffi_tests/embedding/test_thread.py
+++ b/extra_tests/cffi_tests/embedding/test_thread.py
@@ -1,12 +1,12 @@
# Generated by pypy/tool/import_cffi.py
-from pypy.module.test_lib_pypy.cffi_tests.embedding.test_basic import EmbeddingTests
+from extra_tests.cffi_tests.embedding.test_basic import EmbeddingTests
class TestThread(EmbeddingTests):
def test_first_calls_in_parallel(self):
add1_cffi = self.prepare_module('add1')
self.compile('thread1-test', [add1_cffi], threads=True)
- for i in range(50):
+ for i in range(20):
output = self.execute('thread1-test')
assert output == ("starting\n"
"preparing...\n" +
diff --git a/extra_tests/cffi_tests/embedding/test_tlocal.py b/extra_tests/cffi_tests/embedding/test_tlocal.py
--- a/extra_tests/cffi_tests/embedding/test_tlocal.py
+++ b/extra_tests/cffi_tests/embedding/test_tlocal.py
@@ -1,5 +1,5 @@
# Generated by pypy/tool/import_cffi.py
-from pypy.module.test_lib_pypy.cffi_tests.embedding.test_basic import EmbeddingTests
+from extra_tests.cffi_tests.embedding.test_basic import EmbeddingTests
class TestThreadLocal(EmbeddingTests):
diff --git a/extra_tests/cffi_tests/support.py b/extra_tests/cffi_tests/support.py
--- a/extra_tests/cffi_tests/support.py
+++ b/extra_tests/cffi_tests/support.py
@@ -9,7 +9,7 @@
return eval('u'+repr(other).replace(r'\\u', r'\u')
.replace(r'\\U', r'\U'))
u = U()
- long = long # for further "from pypy.module.test_lib_pypy.cffi_tests.support import long"
+ long = long # for further "from extra_tests.cffi_tests.support import long"
assert u+'a\x00b' == eval(r"u'a\x00b'")
assert u+'a\u1234b' == eval(r"u'a\u1234b'")
assert u+'a\U00012345b' == eval(r"u'a\U00012345b'")
diff --git a/lib_pypy/cffi/cparser.py b/lib_pypy/cffi/cparser.py
--- a/lib_pypy/cffi/cparser.py
+++ b/lib_pypy/cffi/cparser.py
@@ -137,6 +137,14 @@
parts.append(csource)
return ''.join(parts)
+def _warn_for_string_literal(csource):
+ if '"' in csource:
+ import warnings
+ warnings.warn("String literal found in cdef() or type source. "
+ "String literals are ignored here, but you should "
+ "remove them anyway because some character sequences "
+ "confuse pre-parsing.")
+
def _preprocess(csource):
# Remove comments. NOTE: this only work because the cdef() section
# should not contain any string literal!
@@ -148,6 +156,7 @@
macrovalue = macrovalue.replace('\\\n', '').strip()
macros[macroname] = macrovalue
csource = _r_define.sub('', csource)
+ _warn_for_string_literal(csource)
#
if pycparser.__version__ < '2.14':
csource = _workaround_for_old_pycparser(csource)
diff --git a/pypy/tool/import_cffi.py b/pypy/tool/import_cffi.py
--- a/pypy/tool/import_cffi.py
+++ b/pypy/tool/import_cffi.py
@@ -11,7 +11,7 @@
if ext == '.py':
yield "# Generated by pypy/tool/import_cffi.py\n"
for line in lines:
- line = line.replace('from testing', 'from pypy.module.test_lib_pypy.cffi_tests')
+ line = line.replace('from testing', 'from extra_tests.cffi_tests')
yield line
elif ext in ('.c', '.h'):
yield "/* Generated by pypy/tool/import_cffi.py */\n"
@@ -22,10 +22,10 @@
def main(cffi_dir):
cffi_dir = py.path.local(cffi_dir)
- pypydir = py.path.local(__file__).join('..', '..')
- cffi_dest = pypydir.join('..', 'lib_pypy', 'cffi')
+ rootdir = py.path.local(__file__).join('..', '..', '..')
+ cffi_dest = rootdir / 'lib_pypy' / 'cffi'
cffi_dest.ensure(dir=1)
- test_dest = pypydir.join('module', 'test_lib_pypy', 'cffi_tests')
+ test_dest = rootdir / 'extra_tests' / 'cffi_tests'
test_dest.ensure(dir=1)
for p in (list(cffi_dir.join('cffi').visit(fil='*.py')) +
list(cffi_dir.join('cffi').visit(fil='*.h'))):
More information about the pypy-commit
mailing list