1324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver# bootstrapping setuptools 2324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruverimport ez_setup 3324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruverez_setup.use_setuptools() 4324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver 5324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruverimport os 6324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruverimport sys 7324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruverimport textwrap 8324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruverfrom distutils.errors import * 9324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruverfrom distutils.command.clean import clean as _clean 10324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruverfrom distutils.cmd import Command 11324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruverfrom setuptools import setup 12324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruverfrom distutils import log 13324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver 14324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruverfrom distutils.core import setup 15324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver 16324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver 17324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruverclass clean(_clean): 18324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver """Also cleanup local temp files.""" 19324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver 20324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver def run(self): 21324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver _clean.run(self) 22324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver 23324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver import fnmatch 24324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver 25324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver # kill temporary files 26324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver patterns = [ 27324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver # generic tempfiles 28324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver '*~', '*.bak', '*.pyc', 29324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver 30324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver # tempfiles generated by ANTLR runs 31324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver 't[0-9]*Lexer.py', 't[0-9]*Parser.py', 32324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver '*.tokens', '*__.g', 33324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver ] 34324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver 35324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver for path in ('antlr3', 'unittests', 'tests'): 36324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver path = os.path.join(os.path.dirname(__file__), path) 37324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver if os.path.isdir(path): 38324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver for root, dirs, files in os.walk(path, topdown=True): 39324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver graveyard = [] 40324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver for pat in patterns: 41324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver graveyard.extend(fnmatch.filter(files, pat)) 42324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver 43324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver for name in graveyard: 44324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver filePath = os.path.join(root, name) 45324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver 46324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver try: 47324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver log.info("removing '%s'", filePath) 48324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver os.unlink(filePath) 49324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver except OSError, exc: 50324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver log.warn( 51324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver "Failed to delete '%s': %s", 52324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver filePath, exc 53324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver ) 54324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver 55324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver 56324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruverclass TestError(DistutilsError): 57324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver pass 58324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver 59324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver 60324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver# grml.. the class name appears in the --help output: 61324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver# ... 62324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver# Options for 'CmdUnitTest' command 63324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver# ... 64324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver# so I have to use a rather ugly name... 65324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruverclass unittest(Command): 66324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver """Run unit tests for package""" 67324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver 68324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver description = "run unit tests for package" 69324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver 70324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver user_options = [ 71324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver ('xml-output=', None, 72324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver "Directory for JUnit compatible XML files."), 73324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver ] 74324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver boolean_options = [] 75324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver 76324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver def initialize_options(self): 77324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver self.xml_output = None 78324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver 79324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver def finalize_options(self): 80324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver pass 81324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver 82324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver def run(self): 83324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver testDir = os.path.join(os.path.dirname(__file__), 'unittests') 84324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver if not os.path.isdir(testDir): 85324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver raise DistutilsFileError( 86324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver "There is not 'unittests' directory. Did you fetch the " 87324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver "development version?", 88324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver ) 89324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver 90324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver import glob 91324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver import imp 92324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver import unittest 93324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver import traceback 94324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver import StringIO 95324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver 96324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver suite = unittest.TestSuite() 97324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver loadFailures = [] 98324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver 99324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver # collect tests from all unittests/test*.py files 100324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver testFiles = [] 101324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver for testPath in glob.glob(os.path.join(testDir, 'test*.py')): 102324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver testFiles.append(testPath) 103324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver 104324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver testFiles.sort() 105324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver for testPath in testFiles: 106324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver testID = os.path.basename(testPath)[:-3] 107324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver 108324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver try: 109324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver modFile, modPathname, modDescription \ 110324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver = imp.find_module(testID, [testDir]) 111324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver 112324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver testMod = imp.load_module( 113324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver testID, modFile, modPathname, modDescription 114324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver ) 115324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver 116324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver suite.addTests( 117324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver unittest.defaultTestLoader.loadTestsFromModule(testMod) 118324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver ) 119324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver 120324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver except Exception: 121324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver buf = StringIO.StringIO() 122324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver traceback.print_exc(file=buf) 123324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver 124324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver loadFailures.append( 125324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver (os.path.basename(testPath), buf.getvalue()) 126324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver ) 127324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver 128324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver if self.xml_output: 129324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver import xmlrunner 130324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver runner = xmlrunner.XMLTestRunner( 131324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver stream=open(os.path.join(self.xml_output, 'unittest.xml'), 'w')) 132324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver else: 133324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver runner = unittest.TextTestRunner(verbosity=2) 134324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver result = runner.run(suite) 135324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver 136324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver for testName, error in loadFailures: 137324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver sys.stderr.write('\n' + '='*70 + '\n') 138324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver sys.stderr.write( 139324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver "Failed to load test module %s\n" % testName 140324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver ) 141324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver sys.stderr.write(error) 142324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver sys.stderr.write('\n') 143324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver 144324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver if not result.wasSuccessful() or loadFailures: 145324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver raise TestError( 146324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver "Unit test suite failed!", 147324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver ) 148324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver 149324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver 150324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruverclass functest(Command): 151324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver """Run functional tests for package""" 152324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver 153324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver description = "run functional tests for package" 154324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver 155324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver user_options = [ 156324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver ('testcase=', None, 157324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver "testcase to run [default: run all]"), 158324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver ('antlr-version=', None, 159324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver "ANTLR version to use [default: HEAD (in ../../build)]"), 160324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver ('antlr-jar=', None, 161324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver "Explicit path to an antlr jar (overrides --antlr-version)"), 162324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver ('xml-output=', None, 163324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver "Directory for JUnit compatible XML files."), 164324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver ] 165324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver 166324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver boolean_options = [] 167324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver 168324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver def initialize_options(self): 169324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver self.testcase = None 170324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver self.antlr_version = 'HEAD' 171324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver self.antlr_jar = None 172324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver self.xml_output = None 173324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver 174324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver def finalize_options(self): 175324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver pass 176324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver 177324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver def run(self): 178324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver import glob 179324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver import imp 180324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver import unittest 181324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver import traceback 182324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver import StringIO 183324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver 184324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver testDir = os.path.join(os.path.dirname(__file__), 'tests') 185324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver if not os.path.isdir(testDir): 186324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver raise DistutilsFileError( 187324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver "There is not 'tests' directory. Did you fetch the " 188324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver "development version?", 189324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver ) 190324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver 191324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver # make sure, relative imports from testcases work 192324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver sys.path.insert(0, testDir) 193324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver 194324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver rootDir = os.path.abspath( 195324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver os.path.join(os.path.dirname(__file__), '..', '..')) 196324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver 197324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver if self.antlr_jar is not None: 198324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver classpath = [self.antlr_jar] 199324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver elif self.antlr_version == 'HEAD': 200324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver classpath = [ 201324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver os.path.join(rootDir, 'tool', 'target', 'classes'), 202324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver os.path.join(rootDir, 'runtime', 'Java', 'target', 'classes') 203324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver ] 204324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver else: 205324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver classpath = [ 206324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver os.path.join(rootDir, 'archive', 207324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver 'antlr-%s.jar' % self.antlr_version) 208324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver ] 209324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver 210324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver classpath.extend([ 211324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver os.path.join(rootDir, 'lib', 'antlr-2.7.7.jar'), 212324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver os.path.join(rootDir, 'lib', 'stringtemplate-3.2.1.jar'), 213324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver os.path.join(rootDir, 'lib', 'ST-4.0.2.jar'), 214324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver os.path.join(rootDir, 'lib', 'junit-4.2.jar') 215324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver ]) 216324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver os.environ['CLASSPATH'] = ':'.join(classpath) 217324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver 218324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver os.environ['ANTLRVERSION'] = self.antlr_version 219324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver 220324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver suite = unittest.TestSuite() 221324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver loadFailures = [] 222324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver 223324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver # collect tests from all tests/t*.py files 224324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver testFiles = [] 225324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver test_glob = 't[0-9][0-9][0-9]*.py' 226324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver for testPath in glob.glob(os.path.join(testDir, test_glob)): 227324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver if testPath.endswith('Lexer.py') or testPath.endswith('Parser.py'): 228324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver continue 229324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver 230324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver # if a single testcase has been selected, filter out all other 231324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver # tests 232324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver if (self.testcase is not None 233324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver and not os.path.basename(testPath)[:-3].startswith(self.testcase)): 234324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver continue 235324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver 236324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver testFiles.append(testPath) 237324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver 238324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver testFiles.sort() 239324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver for testPath in testFiles: 240324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver testID = os.path.basename(testPath)[:-3] 241324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver 242324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver try: 243324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver modFile, modPathname, modDescription \ 244324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver = imp.find_module(testID, [testDir]) 245324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver 246324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver testMod = imp.load_module( 247324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver testID, modFile, modPathname, modDescription) 248324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver 249324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver suite.addTests( 250324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver unittest.defaultTestLoader.loadTestsFromModule(testMod)) 251324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver 252324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver except Exception: 253324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver buf = StringIO.StringIO() 254324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver traceback.print_exc(file=buf) 255324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver 256324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver loadFailures.append( 257324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver (os.path.basename(testPath), buf.getvalue())) 258324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver 259324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver if self.xml_output: 260324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver import xmlrunner 261324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver runner = xmlrunner.XMLTestRunner( 262324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver stream=open(os.path.join(self.xml_output, 'functest.xml'), 'w')) 263324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver else: 264324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver runner = unittest.TextTestRunner(verbosity=2) 265324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver 266324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver result = runner.run(suite) 267324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver 268324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver for testName, error in loadFailures: 269324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver sys.stderr.write('\n' + '='*70 + '\n') 270324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver sys.stderr.write( 271324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver "Failed to load test module %s\n" % testName 272324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver ) 273324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver sys.stderr.write(error) 274324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver sys.stderr.write('\n') 275324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver 276324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver if not result.wasSuccessful() or loadFailures: 277324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver raise TestError( 278324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver "Functional test suite failed!", 279324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver ) 280324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver 281324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver 282324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruversetup(name='antlr_python_runtime', 283324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver version='3.4', 284324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver packages=['antlr3'], 285324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver 286324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver author="Benjamin Niemann", 287324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver author_email="pink@odahoda.de", 288324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver url="http://www.antlr.org/", 289324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver download_url="http://www.antlr.org/download.html", 290324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver license="BSD", 291324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver description="Runtime package for ANTLR3", 292324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver long_description=textwrap.dedent('''\ 293324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver This is the runtime package for ANTLR3, which is required to use parsers 294324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver generated by ANTLR3. 295324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver '''), 296324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver cmdclass={'unittest': unittest, 297324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver 'functest': functest, 298324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver 'clean': clean 299324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver }, 300324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver ) 301