From: Andy R. Terrel <[EMAIL PROTECTED]> --- examples/all.py | 143 +++++++++++++++++++++++++++++++++++++------------------ 1 files changed, 97 insertions(+), 46 deletions(-)
diff --git a/examples/all.py b/examples/all.py index 65988af..3a395ab 100755 --- a/examples/all.py +++ b/examples/all.py @@ -1,57 +1,78 @@ #!/usr/bin/env python -"""Runner script - -Runs all the known working examples. - - Usage: - - When all examples run: - $ ./all > out - $ - - When some examples fail: - $ ./all > out - Traceback (most recent call last): - File "./limits_examples.py", line 17, in ? - [...] - $ - - Obviously, we want to achieve the first result. +"""all.py + +Runs all the examples for testing purposes and reports success and failure +to stderr. An example is marked successful if the running thread does not +throw an exception, for threaded examples, such as plotting, one needs to +check the stderr messages as well. + + $ ./all.py [-hw] + +Options: + -h print this help message and exit + -w Also run examples requiring windowed environment. + +Example Usage: + When no examples fail: + $ ./all.py > out + SUCCESSFUL: + - beginner.basic + [...] + NO FAILED EXAMPLES + $ + + When examples fail: + $ ./all.py -W > out + Traceback (most recent call last): + File "./all.py", line 111, in run_examples + [...] + SUCCESSFUL: + - beginner.basic + [...] + FAILED: + - intermediate.mplot2D + [...] + $ + + Obviously, we want to achieve the first result. """ import imp import os import sys import traceback +import getopt -WORKING_EXAMPLES = [ +TERMINAL_EXAMPLES = [ "beginner.basic", "beginner.differentiation", "beginner.expansion", "beginner.functions", "beginner.limits_examples", - #"beginner.plotting_nice_plot", "beginner.precision", "beginner.print_pretty", "beginner.series", "beginner.substitution", "beginner.expansion", "intermediate.differential_equations", - #"intermediate.mplot2d", - #"intermediate.mplot3d", - #"intermediate.print_gtk", "intermediate.trees", "intermediate.vandermonde", "advanced.fem", "advanced.gibbs_phenomenon", "advanced.pidigits", - #"advanced.plotting", "advanced.qft", "advanced.relativity", ] -example_dir = os.path.dirname(__file__) -example_modules = [] +WINDOWED_EXAMPLES = [ + "beginner.plotting_nice_plot", + #"intermediate.print_gtk", + "intermediate.mplot2d", + "intermediate.mplot3d", + "advanced.plotting", + ] + +EXAMPLE_DIR = os.path.dirname(__file__) def __import__(name, globals=None, locals=None, fromlist=None): """An alternative to the import function so that we can import @@ -68,7 +89,7 @@ def __import__(name, globals=None, locals=None, fromlist=None): # If any of the following calls raises an exception, # there's a problem we can't handle -- let the caller handle it. module_name = name.split('.')[-1] - module_path = os.path.join(example_dir, *name.split('.')[:-1]) + module_path = os.path.join(EXAMPLE_DIR, *name.split('.')[:-1]) fp, pathname, description = imp.find_module(module_name, [module_path]) @@ -79,37 +100,67 @@ def __import__(name, globals=None, locals=None, fromlist=None): if fp: fp.close() -def load_example_modules (): - """Loads modules based upon the given package name""" - global example_modules - for entry in WORKING_EXAMPLES: - mod = __import__(entry) - example_modules.append(mod) +def load_example_module(example): + """Loads modules based upon the given package name""" + mod = __import__(example) + return mod -def setup_path (): - """Put example directories in the path to load easily""" - sys.path.insert(0,example_dir) -def run_examples(): +def run_examples(windowed=False): + """Run example in list of modules""" success = [] fail = [] - for mod in example_modules: + examples = TERMINAL_EXAMPLES + if windowed: + examples += WINDOWED_EXAMPLES + for example in examples: print "="*79 - print "Running: ", mod.__name__ + print "Running: ", example try: + mod = load_example_module(example) mod.main() - success.append(mod.__name__) + success.append(example) except: traceback.print_exc() - fail.append(mod.__name__) - print "SUCCESS: ", success - print "FAIL: ", fail + fail.append(example) + if success: + print >> sys.stderr, "SUCCESSFUL: " + for example in success: + print >> sys.stderr, " -", example + else: + print >> sys.stderr, "NO SUCCESSFUL EXAMPLES" + if fail: + print >> sys.stderr, "FAILED: " + for example in fail: + print >> sys.stderr, " -", example + else: + print >> sys.stderr, "NO FAILED EXAMPLES" + def main (*args, **kws): - setup_path() - load_example_modules() - run_examples() + """Main script runner""" + + use_windowed = False + try: + opts, remainder = getopt.getopt(args, "hw") + print opts + for opt_key, opt_val in opts: + print opt_key == '-w' + if opt_key == '-w': + use_windowed = True + elif opt_key == "-h": + print __doc__ + sys.exit(0) + else: + raise getopt.GetoptError, "option %s not processed" % opt_key + except getopt.GetoptError, message: + print >> sys.stderr, message + print >> sys.stderr, "Use -h option for usage.\n" + sys.exit(1) + + run_examples(use_windowed) + if __name__ == "__main__": main(*sys.argv[1:]) -- 1.6.0.3 --~--~---------~--~----~------------~-------~--~----~ You received this message because you are subscribed to the Google Groups "sympy-patches" group. To post to this group, send email to sympy-patches@googlegroups.com To unsubscribe from this group, send email to [EMAIL PROTECTED] For more options, visit this group at http://groups.google.com/group/sympy-patches?hl=en -~----------~----~----~----~------~----~------~--~---