summaryrefslogtreecommitdiffstats
path: root/test/SWIG/module-parens.py
diff options
context:
space:
mode:
authorSteven Knight <knight@baldmt.com>2008-08-26 13:26:48 (GMT)
committerSteven Knight <knight@baldmt.com>2008-08-26 13:26:48 (GMT)
commitf6bd57cdfa43fb809688a45e8b5bb2f76d82a23f (patch)
treee45e153b1ba2ea212f38352eac729fd163655ff1 /test/SWIG/module-parens.py
parent0307a78b041c16b5e9ad60c19f669e856f32f49f (diff)
downloadSCons-f6bd57cdfa43fb809688a45e8b5bb2f76d82a23f.zip
SCons-f6bd57cdfa43fb809688a45e8b5bb2f76d82a23f.tar.gz
SCons-f6bd57cdfa43fb809688a45e8b5bb2f76d82a23f.tar.bz2
Issue 2168: Mac OS X fixes for SWIG tests. (Greg Noel)
Diffstat (limited to 'test/SWIG/module-parens.py')
-rw-r--r--test/SWIG/module-parens.py26
1 files changed, 22 insertions, 4 deletions
diff --git a/test/SWIG/module-parens.py b/test/SWIG/module-parens.py
index 0d89ebe..3dabacf 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()