source: misc/tools/acceptance_tests/test_python_packages.py @ 7656

Last change on this file since 7656 was 7656, checked in by gray, 14 years ago

Updating acceptance test files. Still pre-2010 tests.

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