1 | #!/bin/env python |
---|
2 | |
---|
3 | """Testlet to check that packages required are importable""" |
---|
4 | |
---|
5 | import os |
---|
6 | import sys |
---|
7 | import time |
---|
8 | import test_utils as util |
---|
9 | |
---|
10 | |
---|
11 | # packages we are testing |
---|
12 | Package_Imports = ('from Scientific.IO.NetCDF import NetCDFFile', |
---|
13 | 'import numpy', |
---|
14 | 'import Numeric', |
---|
15 | 'import RandomArray', |
---|
16 | 'import pypar', |
---|
17 | 'import scipy', |
---|
18 | 'import matplotlib', |
---|
19 | 'import pylab', |
---|
20 | 'import wx', |
---|
21 | 'import sqlalchemy', |
---|
22 | ) |
---|
23 | |
---|
24 | name = 'Test if python packages are importable' |
---|
25 | |
---|
26 | def test(logfile): |
---|
27 | result = True |
---|
28 | |
---|
29 | (cluster, domain) = util.get_hostname() |
---|
30 | |
---|
31 | # get python to run |
---|
32 | python_env_var = os.getenv('PYTHON') |
---|
33 | |
---|
34 | # get max width of the import tests |
---|
35 | width = 0 |
---|
36 | for pkg in Package_Imports: |
---|
37 | width = max(len(pkg), width) |
---|
38 | |
---|
39 | # create a 'null' stdout object |
---|
40 | null_stdout = open('/dev/null', 'w') |
---|
41 | |
---|
42 | # test each import |
---|
43 | num_errors = 0 |
---|
44 | error_packages = [] |
---|
45 | |
---|
46 | for pkg in Package_Imports: |
---|
47 | util.log_print(logfile, "Testing: %s" % pkg.ljust(width+2)) |
---|
48 | try: |
---|
49 | # turn off stdout while doing this |
---|
50 | save_stdout = sys.stdout |
---|
51 | sys.stdout = null_stdout |
---|
52 | |
---|
53 | exec pkg |
---|
54 | |
---|
55 | sys.stdout = save_stdout |
---|
56 | util.log_print_nl(logfile, 'OK') |
---|
57 | except ImportError, e: |
---|
58 | sys.stdout = save_stdout |
---|
59 | util.log_print_nl(logfile, 'ERROR') |
---|
60 | error_packages.append(pkg) |
---|
61 | num_errors += 1 |
---|
62 | result = False |
---|
63 | except: |
---|
64 | sys.stdout = save_stdout |
---|
65 | util.log_print_nl(logfile, 'EXCEPTION') |
---|
66 | error_packages.append(pkg) |
---|
67 | num_errors += 1 |
---|
68 | result = False |
---|
69 | |
---|
70 | # close the 'null' stdout |
---|
71 | null_stdout.close() |
---|
72 | |
---|
73 | # report errors |
---|
74 | util.log_print_nl(logfile) |
---|
75 | if num_errors == 0: |
---|
76 | util.log_print_nl(logfile, 'All OK.') |
---|
77 | else: |
---|
78 | if num_errors == 1: |
---|
79 | util.log_print_nl(logfile, '\nGot %d error: ' % num_errors) |
---|
80 | else: |
---|
81 | util.log_print_nl(logfile, '\nGot %d errors: ' % num_errors) |
---|
82 | for pkg in error_packages: |
---|
83 | util.log_print_nl(logfile, '\t%s' % pkg) |
---|
84 | |
---|
85 | return result |
---|
86 | |
---|
87 | |
---|
88 | if __name__ == '__main__': |
---|
89 | import os |
---|
90 | |
---|
91 | logfile = 'test.log' |
---|
92 | if len(sys.argv) > 1: |
---|
93 | logfile = sys.argv[1] |
---|
94 | |
---|
95 | try: |
---|
96 | os.remove(logfile) |
---|
97 | except: |
---|
98 | pass |
---|
99 | |
---|
100 | if not test(logfile): |
---|
101 | sys.exit(10) |
---|
102 | |
---|
103 | sys.exit(0) |
---|