[pypy-svn] r71853 - in pypy/branch/ctypes-configure-cache-2/ctypes_configure: . test
arigo at codespeak.net
arigo at codespeak.net
Sat Mar 6 12:37:31 CET 2010
Author: arigo
Date: Sat Mar 6 12:37:29 2010
New Revision: 71853
Added:
pypy/branch/ctypes-configure-cache-2/ctypes_configure/dumpcache.py (contents, props changed)
pypy/branch/ctypes-configure-cache-2/ctypes_configure/test/test_dumpcache.py (contents, props changed)
Modified:
pypy/branch/ctypes-configure-cache-2/ctypes_configure/configure.py
pypy/branch/ctypes-configure-cache-2/ctypes_configure/test/test_configure.py
Log:
Move dumpcache() to its own module.
Modified: pypy/branch/ctypes-configure-cache-2/ctypes_configure/configure.py
==============================================================================
--- pypy/branch/ctypes-configure-cache-2/ctypes_configure/configure.py (original)
+++ pypy/branch/ctypes-configure-cache-2/ctypes_configure/configure.py Sat Mar 6 12:37:29 2010
@@ -584,47 +584,6 @@
# ____________________________________________________________
-def ctypes_repr(cls):
- # ctypes_configure does not support nested structs so far
- # so let's ignore it
- assert isinstance(cls, ctypes._SimpleCData.__class__)
- return "ctypes." + cls.__name__
-
-def dumpcache(referencefilename, filename, config):
- dirname = os.path.dirname(referencefilename)
- filename = os.path.join(dirname, filename)
- f = open(filename, 'w')
- print >> f, 'import ctypes'
- print >> f
- names = config.keys()
- names.sort()
- for key in names:
- val = config[key]
- if isinstance(val, (int, long)):
- f.write("%s = %d\n" % (key, val))
- elif val is None:
- f.write("%s = None\n" % key)
- elif isinstance(val, ctypes._SimpleCData.__class__):
- # a simple type
- f.write("%s = %s\n" % (key, ctypes_repr(val)))
- elif isinstance(val, ctypes.Structure.__class__):
- f.write("class %s(ctypes.Structure):\n" % key)
- f.write(" _fields_ = [\n")
- for k, v in val._fields_:
- f.write(" ('%s', %s),\n" % (k, ctypes_repr(v)))
- f.write(" ]\n")
- elif isinstance(val, (tuple, list)):
- for x in val:
- assert isinstance(x, (int, long, str)), \
- "lists of integers or strings only"
- f.write("%s = %r\n" % (key, val))
- else:
- raise NotImplementedError("Saving of %r" % (val,))
- f.close()
- print 'Wrote %s.' % (filename,)
-
-# ____________________________________________________________
-
def get_python_include_dir():
from distutils import sysconfig
gcv = sysconfig.get_config_vars()
Added: pypy/branch/ctypes-configure-cache-2/ctypes_configure/dumpcache.py
==============================================================================
--- (empty file)
+++ pypy/branch/ctypes-configure-cache-2/ctypes_configure/dumpcache.py Sat Mar 6 12:37:29 2010
@@ -0,0 +1,42 @@
+import os
+import ctypes
+
+
+def dumpcache(referencefilename, filename, config):
+ dirname = os.path.dirname(referencefilename)
+ filename = os.path.join(dirname, filename)
+ f = open(filename, 'w')
+ print >> f, 'import ctypes'
+ print >> f
+ names = config.keys()
+ names.sort()
+ for key in names:
+ val = config[key]
+ if isinstance(val, (int, long)):
+ f.write("%s = %d\n" % (key, val))
+ elif val is None:
+ f.write("%s = None\n" % key)
+ elif isinstance(val, ctypes._SimpleCData.__class__):
+ # a simple type
+ f.write("%s = %s\n" % (key, ctypes_repr(val)))
+ elif isinstance(val, ctypes.Structure.__class__):
+ f.write("class %s(ctypes.Structure):\n" % key)
+ f.write(" _fields_ = [\n")
+ for k, v in val._fields_:
+ f.write(" ('%s', %s),\n" % (k, ctypes_repr(v)))
+ f.write(" ]\n")
+ elif isinstance(val, (tuple, list)):
+ for x in val:
+ assert isinstance(x, (int, long, str)), \
+ "lists of integers or strings only"
+ f.write("%s = %r\n" % (key, val))
+ else:
+ raise NotImplementedError("Saving of %r" % (val,))
+ f.close()
+ print 'Wrote %s.' % (filename,)
+
+def ctypes_repr(cls):
+ # ctypes_configure does not support nested structs so far
+ # so let's ignore it
+ assert isinstance(cls, ctypes._SimpleCData.__class__)
+ return "ctypes." + cls.__name__
Modified: pypy/branch/ctypes-configure-cache-2/ctypes_configure/test/test_configure.py
==============================================================================
--- pypy/branch/ctypes-configure-cache-2/ctypes_configure/test/test_configure.py (original)
+++ pypy/branch/ctypes-configure-cache-2/ctypes_configure/test/test_configure.py Sat Mar 6 12:37:29 2010
@@ -126,42 +126,6 @@
'ushort': ctypes.c_ushort,
'XYZZY': 42}
-def test_cache():
- configdir = configure.configdir
- test_h = configdir.join('test_ctypes_platform2.h')
- test_h.write('#define XYZZY 42\n'
- "#define large 2147483648L\n")
-
- class CConfig:
- _compilation_info_ = ExternalCompilationInfo(
- pre_include_lines = ["/* a C comment */",
- "#include <stdio.h>",
- "#include <test_ctypes_platform2.h>"],
- include_dirs = [str(configdir)]
- )
-
- FILE = configure.Struct('FILE', [])
- ushort = configure.SimpleType('unsigned short')
- XYZZY = configure.ConstantInteger('XYZZY')
- XUZ = configure.Has('XUZ')
- large = configure.DefinedConstantInteger('large')
- undef = configure.Defined('really_undefined')
-
- res = configure.configure(CConfig)
-
- cachefile = configdir.join('cache')
- configure.dumpcache('', str(cachefile), res)
-
- d = {}
- execfile(str(cachefile), d)
- assert d['XYZZY'] == res['XYZZY']
- assert d['ushort'] == res['ushort']
- assert d['FILE']._fields_ == res['FILE']._fields_
- assert d['FILE'].__mro__[1:] == res['FILE'].__mro__[1:]
- assert d['undef'] == res['undef']
- assert d['large'] == res['large']
- assert d['XUZ'] == res['XUZ']
-
def test_ifdef():
class CConfig:
_compilation_info_ = ExternalCompilationInfo(
Added: pypy/branch/ctypes-configure-cache-2/ctypes_configure/test/test_dumpcache.py
==============================================================================
--- (empty file)
+++ pypy/branch/ctypes-configure-cache-2/ctypes_configure/test/test_dumpcache.py Sat Mar 6 12:37:29 2010
@@ -0,0 +1,39 @@
+from ctypes_configure import configure, dumpcache
+from ctypes_configure.cbuild import ExternalCompilationInfo
+
+
+def test_cache():
+ configdir = configure.configdir
+ test_h = configdir.join('test_ctypes_platform2.h')
+ test_h.write('#define XYZZY 42\n'
+ "#define large 2147483648L\n")
+
+ class CConfig:
+ _compilation_info_ = ExternalCompilationInfo(
+ pre_include_lines = ["/* a C comment */",
+ "#include <stdio.h>",
+ "#include <test_ctypes_platform2.h>"],
+ include_dirs = [str(configdir)]
+ )
+
+ FILE = configure.Struct('FILE', [])
+ ushort = configure.SimpleType('unsigned short')
+ XYZZY = configure.ConstantInteger('XYZZY')
+ XUZ = configure.Has('XUZ')
+ large = configure.DefinedConstantInteger('large')
+ undef = configure.Defined('really_undefined')
+
+ res = configure.configure(CConfig)
+
+ cachefile = configdir.join('cache')
+ dumpcache.dumpcache('', str(cachefile), res)
+
+ d = {}
+ execfile(str(cachefile), d)
+ assert d['XYZZY'] == res['XYZZY']
+ assert d['ushort'] == res['ushort']
+ assert d['FILE']._fields_ == res['FILE']._fields_
+ assert d['FILE'].__mro__[1:] == res['FILE'].__mro__[1:]
+ assert d['undef'] == res['undef']
+ assert d['large'] == res['large']
+ assert d['XUZ'] == res['XUZ']
More information about the Pypy-commit
mailing list