Jeremy Hylton | 4336eda | 2004-08-07 19:25:33 +0000 | [diff] [blame] | 1 | import compiler |
| 2 | import os |
| 3 | import test.test_support |
| 4 | import unittest |
Raymond Hettinger | ed20ad8 | 2004-09-04 20:09:13 +0000 | [diff] [blame^] | 5 | from random import random |
Jeremy Hylton | 4336eda | 2004-08-07 19:25:33 +0000 | [diff] [blame] | 6 | |
| 7 | class CompilerTest(unittest.TestCase): |
| 8 | |
| 9 | def testCompileLibrary(self): |
| 10 | # A simple but large test. Compile all the code in the |
| 11 | # standard library and its test suite. This doesn't verify |
| 12 | # that any of the code is correct, merely the compiler is able |
| 13 | # to generate some kind of code for it. |
| 14 | |
| 15 | libdir = os.path.dirname(unittest.__file__) |
| 16 | testdir = os.path.dirname(test.test_support.__file__) |
| 17 | |
| 18 | for dir in [libdir, testdir]: |
Tim Peters | 2a5f656 | 2004-08-08 16:37:37 +0000 | [diff] [blame] | 19 | for basename in os.listdir(dir): |
| 20 | if not basename.endswith(".py"): |
Jeremy Hylton | 4336eda | 2004-08-07 19:25:33 +0000 | [diff] [blame] | 21 | continue |
Raymond Hettinger | ed20ad8 | 2004-09-04 20:09:13 +0000 | [diff] [blame^] | 22 | if not TEST_ALL and random() < 0.98: |
| 23 | continue |
Tim Peters | 2a5f656 | 2004-08-08 16:37:37 +0000 | [diff] [blame] | 24 | path = os.path.join(dir, basename) |
Tim Peters | b6ecc16 | 2004-08-08 16:32:54 +0000 | [diff] [blame] | 25 | if test.test_support.verbose: |
Tim Peters | 2a5f656 | 2004-08-08 16:37:37 +0000 | [diff] [blame] | 26 | print "compiling", path |
| 27 | f = open(path) |
Jeremy Hylton | 4336eda | 2004-08-07 19:25:33 +0000 | [diff] [blame] | 28 | buf = f.read() |
| 29 | f.close() |
Tim Peters | 0955f29 | 2004-08-08 16:43:59 +0000 | [diff] [blame] | 30 | if "badsyntax" in basename: |
| 31 | self.assertRaises(SyntaxError, compiler.compile, |
| 32 | buf, basename, "exec") |
| 33 | else: |
| 34 | compiler.compile(buf, basename, "exec") |
Jeremy Hylton | 4336eda | 2004-08-07 19:25:33 +0000 | [diff] [blame] | 35 | |
| 36 | def test_main(): |
Raymond Hettinger | ed20ad8 | 2004-09-04 20:09:13 +0000 | [diff] [blame^] | 37 | global TEST_ALL |
| 38 | TEST_ALL = test.test_support.is_resource_enabled("compiler") |
Jeremy Hylton | 4336eda | 2004-08-07 19:25:33 +0000 | [diff] [blame] | 39 | test.test_support.run_unittest(CompilerTest) |
| 40 | |
| 41 | if __name__ == "__main__": |
| 42 | test_main() |