#!/bin/env python '''Testlet to check that packages required are importable''' import os import sys import time import test_utils as util # packages we are testing Package_Imports = ('from Scientific.IO.NetCDF import NetCDFFile', 'import numpy', 'import Numeric', 'import RandomArray', 'import pypar', 'import matplotlib', 'import pylab', ) name = 'Test if python packages are importable' def test(logfile): result = True (cluster, domain) = util.get_hostname() # get python to run python_env_var = os.getenv('PYTHON') # get max width of the import tests width = 0 for pkg in Package_Imports: width = max(len(pkg), width) # create a 'null' stdout object null_stdout = open('/dev/null', 'w') # test each import num_errors = 0 error_packages = [] for pkg in Package_Imports: util.log_print(logfile, "Testing: %s" % pkg.ljust(width+2)) try: # turn off stdout while doing this save_stdout = sys.stdout sys.stdout = null_stdout exec pkg sys.stdout = save_stdout util.log_print_nl(logfile, 'OK') except ImportError, e: sys.stdout = save_stdout util.log_print_nl(logfile, 'ERROR') error_packages.append(pkg) num_errors += 1 result = False except: sys.stdout = save_stdout util.log_print_nl(logfile, 'EXCEPTION') error_packages.append(pkg) num_errors += 1 result = False # close the 'null' stdout null_stdout.close() # report errors util.log_print_nl(logfile) if num_errors == 0: util.log_print_nl(logfile, 'All OK.') else: if num_errors == 1: util.log_print_nl(logfile, '\nGot %d error: ' % num_errors) else: util.log_print_nl(logfile, '\nGot %d errors: ' % num_errors) for pkg in error_packages: util.log_print_nl(logfile, '\t%s' % pkg) return result if __name__ == '__main__': import os logfile = 'test.log' if len(sys.argv) > 1: logfile = sys.argv[1] try: os.remove(logfile) except: pass if not test(logfile): sys.exit(10) sys.exit(0)