summaryrefslogtreecommitdiff
path: root/libs/python/pyste/tests/test_all.py
diff options
context:
space:
mode:
Diffstat (limited to 'libs/python/pyste/tests/test_all.py')
-rw-r--r--libs/python/pyste/tests/test_all.py140
1 files changed, 140 insertions, 0 deletions
diff --git a/libs/python/pyste/tests/test_all.py b/libs/python/pyste/tests/test_all.py
new file mode 100644
index 000000000..ba3c54dee
--- /dev/null
+++ b/libs/python/pyste/tests/test_all.py
@@ -0,0 +1,140 @@
+#!/usr/bin/python
+# Copyright Bruno da Silva de Oliveira 2003. Use, modification and
+# distribution is subject to the Boost Software License, Version 1.0.
+# (See accompanying file LICENSE_1_0.txt or copy at
+# http://www.boost.org/LICENSE_1_0.txt)
+
+import os
+import glob
+import shutil
+import sys
+import time
+
+#=============================================================================
+# win32 configuration
+#=============================================================================
+if sys.platform == 'win32':
+
+ includes = '-ID:/programming/libraries/boost-cvs/boost -ID:/Bin/Python/include'
+ build_pyste_cmd = 'python ../src/Pyste/pyste.py --pyste-ns=pyste --cache-dir=cache %s ' % includes
+ compile_single_cmd = 'cl /nologo /GR /GX -c %s -I. ' % includes
+ link_single_cmd = 'link /nologo /DLL '\
+ '/libpath:D:/programming/libraries/boost-cvs/lib /libpath:D:/Bin/Python/libs '\
+ 'boost_python.lib python24.lib /out:_%s.dll '
+ obj_ext = 'obj'
+
+#=============================================================================
+# linux configuration
+#=============================================================================
+elif sys.platform == 'linux2':
+
+ build_pyste_cmd = 'python ../src/Pyste/pyste.py -I. '
+ compile_single_cmd = 'g++ -shared -c -I. -I/usr/include/python2.4 '
+ link_single_cmd = 'g++ -shared -o _%s.so -lboost_python '
+ obj_ext = 'o'
+
+
+
+def build_pyste(multiple, module):
+ rest = '%s --module=_%s %s.pyste' % (multiple, module, module)
+ execute(build_pyste_cmd + rest)
+
+
+def compile_single(module):
+ module_obj = ''
+ if os.path.isfile(module+'.cpp'):
+ execute(compile_single_cmd + module+'.cpp')
+ module_obj = module + '.' + obj_ext
+ execute(compile_single_cmd + ('_%s.cpp' % module))
+ link = link_single_cmd % module
+ execute(link + ('_%s.%s ' % (module, obj_ext)) + module_obj)
+
+
+def compile_multiple(module):
+ module_obj = ''
+ if os.path.isfile(module+'.cpp'):
+ execute(compile_single_cmd + module+'.cpp')
+ module_obj = module + '.' + obj_ext
+ files = glob.glob('_%s/*.cpp' % module)
+ for f in files:
+ execute(compile_single_cmd + f)
+ def basename(name):
+ return os.path.basename(os.path.splitext(name)[0])
+ objs = [basename(x) + '.' + obj_ext for x in files]
+ objs.append(module_obj)
+ execute((link_single_cmd % module) + ' '.join(objs))
+
+
+def execute(cmd):
+ os.system(cmd)
+
+
+def run_tests():
+ if os.system('python runtests.py') != 0:
+ raise RuntimeError, 'tests failed'
+
+
+def cleanup():
+ modules = get_modules()
+ extensions = '*.dll *.pyc *.obj *.exp *.lib *.o *.so'
+ files = []
+ for module in modules:
+ files.append('_' + module + '.cpp')
+ for ext in extensions.split():
+ files += glob.glob(ext)
+ files.append('build.log')
+ for file in files:
+ try:
+ os.remove(file)
+ except OSError: pass
+
+ for module in modules:
+ try:
+ shutil.rmtree('_' + module)
+ except OSError: pass
+
+
+def main(multiple, module=None):
+ if module is None:
+ modules = get_modules()
+ else:
+ modules = [module]
+
+ start = time.clock()
+ for module in modules:
+ build_pyste(multiple, module)
+ print '-'*50
+ print 'Building pyste files: %0.2f seconds' % (time.clock()-start)
+ print
+
+ start = time.clock()
+ for module in modules:
+ if multiple:
+ compile_multiple(module)
+ else:
+ compile_single(module)
+ print '-'*50
+ print 'Compiling files: %0.2f seconds' % (time.clock()-start)
+ print
+ if len(modules) == 1:
+ os.system('python %sUT.py' % modules[0])
+ else:
+ run_tests()
+ #cleanup()
+
+
+def get_modules():
+ def getname(file):
+ return os.path.splitext(os.path.basename(file))[0]
+ return [getname(x) for x in glob.glob('*.pyste')]
+
+if __name__ == '__main__':
+ if len(sys.argv) > 1:
+ module = sys.argv[1]
+ else:
+ module = None
+ try:
+# main('--multiple', module)
+ main('', module)
+ except RuntimeError, e:
+ print e