hi all, the following script is currently planned in gluon\tests and is for running doctests on all *.py files in gluon (and below). currently I've excluded to modules, as it has dependencies that need proper handling when not existing.
what still needs to be added is running all doctests for the apps available, and the testscripts currently in test. --------------------- starts here ------------------- import os import sys import unittest import doctest import fnmatch import imp # based on http://code.activestate.com/recipes/474083/ # get the absolute path of [:x]'s parents up from this script location # as this script should be in gluon/tests we are looking for gluon (up 1) gluon_path = reduce (lambda l, r: l + os.path.sep + r, os.path.dirname(os.path.realpath(__file__)).split(os.path.sep)[:-1]) sys.path.append(gluon_path) # some scripts require that we work from web2py's root (up 1) os.chdir(os.path.join(gluon_path, '..')) # list any subdirs of gluon here that must be excluded exclude_subdirs = ['scripts', 'tests'] # and the same for specific modules exclude_modules = [ 'memcache', # requires memcache(d) 'memdb', # depends on google app engine, tb updated ] # make full paths excluded_paths = \ [os.path.join(gluon_path, subdir) for subdir in exclude_subdirs] # build a suite of doctests suite = unittest.TestSuite() has_no_doctests = {} print '--collecting--' for path, subdirs, files in os.walk(gluon_path): if path in excluded_paths: continue for mod_file in [filename for filename in files if fnmatch.fnmatch(filename, '*.py')]: mod_name = mod_file[:-3] # skip '.py' if mod_name in exclude_modules: continue (f, filename, description) = imp.find_module(mod_name, [path]) try: mod = imp.load_module(mod_name, f, filename, description) suite.addTest(doctest.DocTestSuite(mod)) except ValueError, e: # so far, only for missing doctests has_no_doctests[os.path.join(path, mod_file)[len(gluon_path):]] = e except ImportError, e: # we can encounter some modules not being present print '%s: %s' % (os.path.join(path, mod_file)[len(gluon_path):], e) finally: if f: f.close() print '---no doctests--' for mod in has_no_doctests.keys(): print '%s: %s' % (mod, has_no_doctests[mod]) print '--running doctests--' runner = unittest.TextTestRunner() runner.run(suite) --~--~---------~--~----~------------~-------~--~----~ You received this message because you are subscribed to the Google Groups "web2py-users" group. To post to this group, send email to [email protected] To unsubscribe from this group, send email to [email protected] For more options, visit this group at http://groups.google.com/group/web2py?hl=en -~----------~----~----~----~------~----~------~--~---
run-doctests.py
Description: Binary data

