--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/tests/runAll.py Wed Sep 03 16:05:15 2008 +0000
@@ -0,0 +1,93 @@
+#!/usr/bin/env python
+#Copyright ReportLab Europe Ltd. 2000-2004
+#see license.txt for license details
+#history http://www.reportlab.co.uk/cgi-bin/viewcvs.cgi/public/reportlab/trunk/reportlab/test/runAll.py
+"""Runs all test files in all subfolders.
+"""
+import os, glob, sys, string, traceback
+from reportlab.test import unittest
+from reportlab.test.utils import GlobDirectoryWalker, outputfile, printLocation
+
+def makeSuite(folder, exclude=[],nonImportable=[],pattern='test_*.py'):
+ "Build a test suite of all available test files."
+
+ allTests = unittest.TestSuite()
+
+ if os.path.isdir(folder): sys.path.insert(0, folder)
+ for filename in GlobDirectoryWalker(folder, pattern):
+ modname = os.path.splitext(os.path.basename(filename))[0]
+ if modname not in exclude:
+ try:
+ exec 'import %s as module' % modname
+ allTests.addTest(module.makeSuite())
+ except:
+ tt, tv, tb = sys.exc_info()[:]
+ nonImportable.append((filename,traceback.format_exception(tt,tv,tb)))
+ del tt,tv,tb
+ del sys.path[0]
+
+ return allTests
+
+
+def main(pattern='test_*.py'):
+ try:
+ folder = os.path.dirname(__file__)
+ assert folder
+ except:
+ folder = os.path.dirname(sys.argv[0]) or os.getcwd()
+ #allow for Benn's "screwball cygwin distro":
+ if folder == '':
+ folder = '.'
+ from reportlab.lib.utils import isSourceDistro
+ haveSRC = isSourceDistro()
+
+ def cleanup(folder,patterns=('*.pdf', '*.log','*.svg','runAll.txt', 'test_*.txt','_i_am_actually_a_*.*')):
+ if not folder: return
+ for pat in patterns:
+ for filename in GlobDirectoryWalker(folder, pattern=pat):
+ try:
+ os.remove(filename)
+ except:
+ pass
+
+ # special case for reportlab/test directory - clean up
+ # all PDF & log files before starting run. You don't
+ # want this if reusing runAll anywhere else.
+ if string.find(folder, 'reportlab' + os.sep + 'test') > -1: cleanup(folder)
+ cleanup(outputfile(''))
+ NI = []
+ cleanOnly = '--clean' in sys.argv
+ if not cleanOnly:
+ testSuite = makeSuite(folder,nonImportable=NI,pattern=pattern+(not haveSRC and 'c' or ''))
+ unittest.TextTestRunner().run(testSuite)
+ if haveSRC: cleanup(folder,patterns=('*.pyc','*.pyo'))
+ if not cleanOnly:
+ if NI:
+ sys.stderr.write('\n###################### the following tests could not be imported\n')
+ for f,tb in NI:
+ print 'file: "%s"\n%s\n' % (f,string.join(tb,''))
+ printLocation()
+
+def mainEx():
+ '''for use in subprocesses'''
+ try:
+ main()
+ finally:
+ sys.stdout.flush()
+ sys.stderr.flush()
+ sys.stdout.close()
+ os.close(sys.stderr.fileno())
+
+def runExternally():
+ cmd = sys.executable+' -c"from reportlab.test import runAll;runAll.mainEx()"'
+ i,o,e=os.popen3(cmd)
+ i.close()
+ out = o.read()
+ err=e.read()
+ return '\n'.join((out,err))
+
+def checkForFailure(outerr):
+ return '\nFAILED' in outerr
+
+if __name__ == '__main__': #noruntests
+ main()