diff options
Diffstat (limited to 'test/SWIG/SWIG.py')
-rw-r--r-- | test/SWIG/SWIG.py | 177 |
1 files changed, 9 insertions, 168 deletions
diff --git a/test/SWIG/SWIG.py b/test/SWIG/SWIG.py index 791d0e0..dfee5ef 100644 --- a/test/SWIG/SWIG.py +++ b/test/SWIG/SWIG.py @@ -24,6 +24,10 @@ __revision__ = "__FILE__ __REVISION__ __DATE__ __DEVELOPER__" +""" +Verify that the swig tool generates file names that we expect. +""" + import os import string import sys @@ -37,19 +41,11 @@ if sys.platform =='darwin': python = "/System/Library/Frameworks/Python.framework/Versions/Current/bin/python" _python_ = '"' + python + '"' else: - python = TestSCons.python _python_ = TestSCons._python_ _exe = TestSCons._exe _obj = TestSCons._obj -# swig-python expects specific filenames. -# the platform specific suffix won't necessarily work. -if sys.platform == 'win32': - _dll = '.dll' -else: - _dll = '.so' - test = TestSCons.TestSCons() @@ -105,168 +101,13 @@ swig test.run(arguments = '.', stderr = None) test.run(program = test.workpath('test1' + _exe), stdout = "test1.i\n") -test.fail_test(not os.path.exists(test.workpath('test1_wrap.c'))) -test.fail_test(not os.path.exists(test.workpath('test1_wrap' + _obj))) +test.must_exist(test.workpath('test1_wrap.c')) +test.must_exist(test.workpath('test1_wrap' + _obj)) -test.fail_test(test.read('test2_wrap.c') != "test2.i\n") +test.must_match('test2_wrap.c', "test2.i\n") test.run(program = test.workpath('test3' + _exe), stdout = "test3.i\n") -test.fail_test(not os.path.exists(test.workpath('test3_wrap.cc'))) -test.fail_test(not os.path.exists(test.workpath('test3_wrap' + _obj))) - - - -swig = test.where_is('swig') - -if swig: - - version = sys.version[:3] # see also sys.prefix documentation - - # handle testing on other platforms: - ldmodule_prefix = '_' - - frameworks = '' - platform_sys_prefix = sys.prefix - if sys.platform == 'darwin': - # OS X has a built-in Python but no static libpython - # so you should link to it using apple's 'framework' scheme. - # (see top of file for further explanation) - frameworks = '-framework Python' - platform_sys_prefix = '/System/Library/Frameworks/Python.framework/Versions/%s/' % version - - test.write("wrapper.py", -"""import os -import string -import sys -open('%s', 'wb').write("wrapper.py\\n") -os.system(string.join(sys.argv[1:], " ")) -""" % string.replace(test.workpath('wrapper.out'), '\\', '\\\\')) - - test.write('SConstruct', """ -foo = Environment(SWIGFLAGS='-python', - CPPPATH='%(platform_sys_prefix)s/include/python%(version)s/', - LDMODULEPREFIX='%(ldmodule_prefix)s', - LDMODULESUFFIX='%(_dll)s', - FRAMEWORKSFLAGS='%(frameworks)s', - ) - -swig = foo.Dictionary('SWIG') -bar = foo.Clone(SWIG = r'%(_python_)s wrapper.py ' + swig) -foo.LoadableModule(target = 'foo', source = ['foo.c', 'foo.i']) -bar.LoadableModule(target = 'bar', source = ['bar.c', 'bar.i']) -""" % locals()) - - test.write("foo.c", """\ -char * -foo_string() -{ - return "This is foo.c!"; -} -""") - - test.write("foo.i", """\ -%module foo -%{ -/* Put header files here (optional) */ -%} - -extern char *foo_string(); -""") - - test.write("bar.c", """\ -char * -bar_string() -{ - return "This is bar.c!"; -} -""") - - test.write("bar.i", """\ -%module \t bar -%{ -/* Put header files here (optional) */ -%} - -extern char *bar_string(); -""") - - test.run(arguments = ldmodule_prefix+'foo' + _dll) - - test.must_not_exist(test.workpath('wrapper.out')) - - test.run(program = python, stdin = """\ -import foo -print foo.foo_string() -""", stdout="""\ -This is foo.c! -""") - - test.up_to_date(arguments = ldmodule_prefix+'foo' + _dll) - - test.run(arguments = ldmodule_prefix+'bar' + _dll) - - test.must_match('wrapper.out', "wrapper.py\n") - - test.run(program = python, stdin = """\ -import foo -import bar -print foo.foo_string() -print bar.bar_string() -""", stdout="""\ -This is foo.c! -This is bar.c! -""") - - test.up_to_date(arguments = '.') - - # Test that swig-generated modules are removed - # The %module directive specifies the module name - test.write("module.i", """\ -%module modulename -""") - test.write('SConstruct', """ -foo = Environment(SWIGFLAGS='-python', - CPPPATH='%(platform_sys_prefix)s/include/python%(version)s/', - LDMODULEPREFIX='%(ldmodule_prefix)s', - LDMODULESUFFIX='%(_dll)s', - FRAMEWORKSFLAGS='%(frameworks)s', - ) - -foo.LoadableModule(target = 'modulename', source = ['module.i']) -""" % locals()) - test.run() - test.must_exist(test.workpath("modulename.py")) - test.run(arguments = "-c") - test.must_not_exist(test.workpath("modulename.py")) - - # Test that implicit dependencies are caught - - test.write("dependency.i", """\ -%module dependency -""") - test.write("dependent.i", """\ -%module dependent - -%include dependency.i -""") - test.write('SConstruct', """ -foo = Environment(SWIGFLAGS='-python', - CPPPATH='%(platform_sys_prefix)s/include/python%(version)s/', - LDMODULEPREFIX='%(ldmodule_prefix)s', - LDMODULESUFFIX='%(_dll)s', - FRAMEWORKSFLAGS='%(frameworks)s', - ) - -swig = foo.Dictionary('SWIG') -bar = foo.Clone(SWIG = r'%(_python_)s wrapper.py ' + swig) -foo.CFile(target = 'dependent', source = ['dependent.i']) -""" % locals()) - - test.run() - test.write("dependency.i", """%module dependency - -extern char *dependency_string(); -""") - test.not_up_to_date(arguments = "dependent_wrap.c") +test.must_exist(test.workpath('test3_wrap.cc')) +test.must_exist(test.workpath('test3_wrap' + _obj)) test.pass_test() |