# Copyright (C) 2010, 2011 Sebastian Thiel (byronimo@gmail.com) and contributors # # This module is part of GitDB and is released under # the New BSD License: http://www.opensource.org/licenses/bsd-license.php """This module's whole purpose is to verify the __all__ descriptions in the respective module, by importing using from x import *""" # perform the actual imports import os from git import * def import_all(topdir, topmodule='git', skip="test"): base = os.path.basename join = os.path.join init_script = '__init__.py' prev_cwd = os.getcwd() try: os.chdir(os.path.dirname(topdir)) for root, dirs, files in os.walk(base(topdir)): if init_script not in files: del(dirs[:]) continue # END ignore non-packages if skip in root: continue # END handle ignores for relafile in files: if not relafile.endswith('.py'): continue if relafile == init_script: continue module_path = join(root, os.path.splitext(relafile)[0]).replace("/", ".").replace("\\", ".") m = __import__(module_path, globals(), locals(), [""]) try: attrlist = m.__all__ for attr in attrlist: assert hasattr(m, attr), "Invalid item in %s.__all__: %s" % (module_path, attr) # END veriy except AttributeError: pass # END try each listed attribute # END for each file in dir # END for each item finally: os.chdir(prev_cwd) # END handle previous currentdir class TestDummy(object): def test_base(self): dn = os.path.dirname # NOTE: i don't think this is working, as the __all__ variable is not used in this case import_all(dn(dn(__file__)))