summaryrefslogtreecommitdiff
path: root/test/SWIG
diff options
context:
space:
mode:
authorSteven Knight <knight@baldmt.com>2008-08-26 13:26:48 +0000
committerSteven Knight <knight@baldmt.com>2008-08-26 13:26:48 +0000
commitea3053e6ac1212464ca29328e1f0c4f0c6faff22 (patch)
treee45e153b1ba2ea212f38352eac729fd163655ff1 /test/SWIG
parentdd6a50f5ef4a513e77a3adbef2a1d92fb1a5ca71 (diff)
downloadscons-ea3053e6ac1212464ca29328e1f0c4f0c6faff22.tar.gz
Issue 2168: Mac OS X fixes for SWIG tests. (Greg Noel)
Diffstat (limited to 'test/SWIG')
-rw-r--r--test/SWIG/build-dir.py2
-rw-r--r--test/SWIG/live.py18
-rw-r--r--test/SWIG/module-parens.py26
-rw-r--r--test/SWIG/noproxy.py2
-rw-r--r--test/SWIG/remove-modules.py2
-rw-r--r--test/SWIG/subdir.py2
6 files changed, 38 insertions, 14 deletions
diff --git a/test/SWIG/build-dir.py b/test/SWIG/build-dir.py
index 8f122af6..85ad7f50 100644
--- a/test/SWIG/build-dir.py
+++ b/test/SWIG/build-dir.py
@@ -70,7 +70,7 @@ env = Environment(CPPPATH = [".", r'%(python_include_dir)s'],
SWIGCXXFILESUFFIX = "_wrap.cpp",
LDMODULEPREFIX='_',
LDMODULESUFFIX='%(_dll)s',
- FRAMEWORKSFLAGS='%(python_frameworks_flags)s')
+ FRAMEWORKS='%(python_frameworks_flags)s')
import sys
if sys.version[0] == '1':
diff --git a/test/SWIG/live.py b/test/SWIG/live.py
index 5070d8e2..893d8394 100644
--- a/test/SWIG/live.py
+++ b/test/SWIG/live.py
@@ -39,7 +39,7 @@ import TestSCons
if sys.platform == 'win32':
_dll = '.dll'
else:
- _dll = '.so'
+ _dll = '.so'
test = TestSCons.TestSCons()
@@ -52,19 +52,24 @@ python = test.get_platform_python()
_python_ = test.get_quoted_platform_python()
-
# handle testing on other platforms:
ldmodule_prefix = '_'
python_include_dir = test.get_python_inc()
Python_h = os.path.join(python_include_dir, 'Python.h')
-
if not os.path.exists(Python_h):
test.skip_test('Can not find %s, skipping test.\n' % Python_h)
-python_frameworks_flags = test.get_python_frameworks_flags()
-
+python_frameworks = test.get_python_frameworks_flags()
+
+# To test the individual Python versions on OS X,
+# particularly versions installed in non-framework locations,
+# we'll need something like this.
+python_library_path = test.get_python_library_path()
+if python_library_path:
+ python_library_path = 'File("""%s""")' % python_library_path
+
test.write("wrapper.py",
"""import os
import string
@@ -78,7 +83,8 @@ foo = Environment(SWIGFLAGS='-python',
CPPPATH='%(python_include_dir)s/',
LDMODULEPREFIX='%(ldmodule_prefix)s',
LDMODULESUFFIX='%(_dll)s',
- FRAMEWORKSFLAGS='%(python_frameworks_flags)s',
+ FRAMEWORKS='%(python_frameworks)s',
+ #LIBS=%(python_library_path)s,
)
import sys
diff --git a/test/SWIG/module-parens.py b/test/SWIG/module-parens.py
index 0d89ebe9..3dabacf4 100644
--- a/test/SWIG/module-parens.py
+++ b/test/SWIG/module-parens.py
@@ -29,6 +29,7 @@ Verify that we handle %module(directors="1") statements, both with and
without white space before the opening parenthesis.
"""
+import os.path
import TestSCons
test = TestSCons.TestSCons()
@@ -40,18 +41,35 @@ if not swig:
python_include_dir = test.get_python_inc()
+python_frameworks_flags = test.get_python_frameworks_flags()
+
+Python_h = os.path.join(python_include_dir, 'Python.h')
+if not os.path.exists(Python_h):
+ test.skip_test('Can not find %s, skipping test.\n' % Python_h)
+
test.write(['SConstruct'], """\
-env = Environment(SWIGFLAGS = '-python',
- CPPPATH=r"%(python_include_dir)s")
+env = Environment(SWIGFLAGS = '-python -c++',
+ CPPPATH=r"%(python_include_dir)s",
+ FRAMEWORKS='%(python_frameworks_flags)s',
+ )
import sys
if sys.version[0] == '1':
# SWIG requires the -classic flag on pre-2.0 Python versions.
env.Append(SWIGFLAGS = ' -classic')
-env.SharedLibrary('test1.so', 'test1.i')
-env.SharedLibrary('test2.so', 'test2.i')
+env.LoadableModule('test1.so', ['test1.i', 'test1.cc'])
+env.LoadableModule('test2.so', ['test2.i', 'test2.cc'])
+env.Clean('.', ['test1_wrap.h', 'test2_wrap.h']) ### SEE NOTE BELOW
""" % locals())
+# NOTE: For some reason, this test on OS X is unstable. The first time 'scons'
+# is run, it works as expected. However, when 'scons' is run again, the
+# 'test?_wrap.os' files are rebuilt. (When run a third time, it correctly
+# determines that nothing is to be rebuilt.) When 'scons -c' is run, the
+# 'test?_wrap.h' files are not removed, meaning that they are not identified
+# by the emitter. Mentioning the two files in the SConscript file stabilizes
+# the runs and makes the test reliable. When whatever that is causing this
+# instability is chased down and cured, this hack should be removed.
test.write(['test1.cc'], """\
int test1func()
diff --git a/test/SWIG/noproxy.py b/test/SWIG/noproxy.py
index 8b0adb02..edbffb19 100644
--- a/test/SWIG/noproxy.py
+++ b/test/SWIG/noproxy.py
@@ -71,7 +71,7 @@ foo = Environment(SWIGFLAGS=['-python', '-noproxy'],
CPPPATH='%(python_include_dir)s',
LDMODULEPREFIX='%(ldmodule_prefix)s',
LDMODULESUFFIX='%(_dll)s',
- FRAMEWORKSFLAGS='%(python_frameworks_flags)s',
+ FRAMEWORKS='%(python_frameworks_flags)s',
)
swig = foo.Dictionary('SWIG')
diff --git a/test/SWIG/remove-modules.py b/test/SWIG/remove-modules.py
index 5f15dcf9..ca681ea4 100644
--- a/test/SWIG/remove-modules.py
+++ b/test/SWIG/remove-modules.py
@@ -72,7 +72,7 @@ foo = Environment(SWIGFLAGS='-python',
CPPPATH='%(python_include_dir)s',
LDMODULEPREFIX='%(ldmodule_prefix)s',
LDMODULESUFFIX='%(_dll)s',
- FRAMEWORKSFLAGS='%(python_frameworks_flags)s',
+ FRAMEWORKS='%(python_frameworks_flags)s',
)
import sys
diff --git a/test/SWIG/subdir.py b/test/SWIG/subdir.py
index 4905d3e7..f96b706f 100644
--- a/test/SWIG/subdir.py
+++ b/test/SWIG/subdir.py
@@ -70,7 +70,7 @@ env = Environment(SWIGFLAGS='-python',
CPPPATH='%(python_include_dir)s/',
LDMODULEPREFIX='%(ldmodule_prefix)s',
LDMODULESUFFIX='%(_dll)s',
- FRAMEWORKSFLAGS='%(python_frameworks_flags)s',
+ FRAMEWORKS='%(python_frameworks_flags)s',
)
import sys