diff options
author | Sebastian Thiel <byronimo@gmail.com> | 2011-07-07 12:55:03 +0200 |
---|---|---|
committer | Sebastian Thiel <byronimo@gmail.com> | 2011-07-07 12:55:03 +0200 |
commit | 80aa40537a3596f24593b5a67adb6d635fe4fa22 (patch) | |
tree | 5e748c6ff6cba897ce6f3081f0a7634ebb756922 /git/test/db | |
parent | 690828ce2e03ce32c5a66186c543d7c5050287e4 (diff) | |
download | gitpython-80aa40537a3596f24593b5a67adb6d635fe4fa22.tar.gz |
Added auto-skip mixin metacls, some serious brainfuck, if the required module was not found. Its actually a nice mix between decorators which are class types, and a mixin as a metaclass, which applies said decorator. The InstanceDecorator wouldn't actually be needed, but it adds flexibility. Maybe it should be removed ...
Diffstat (limited to 'git/test/db')
-rw-r--r-- | git/test/db/dulwich/lib.py | 18 | ||||
-rw-r--r-- | git/test/db/dulwich/test_base.py | 25 |
2 files changed, 31 insertions, 12 deletions
diff --git a/git/test/db/dulwich/lib.py b/git/test/db/dulwich/lib.py new file mode 100644 index 00000000..a1110ffa --- /dev/null +++ b/git/test/db/dulwich/lib.py @@ -0,0 +1,18 @@ +"""dulwich specific utilities, as well as all the default ones""" + +from git.test.lib import * + +#{ Decoorators + +def needs_dulwich_or_skip(func): + """Skip this test if we have no dulwich - print warning""" + return needs_module_or_skip('dulwich')(func) + +#}END decorators + +#{ MetaClasses + +class DulwichRequiredMetaMixin(InheritedTestMethodsOverrideWrapperMetaClsAutoMixin): + decorator = [needs_dulwich_or_skip] + +#} END metaclasses diff --git a/git/test/db/dulwich/test_base.py b/git/test/db/dulwich/test_base.py index f3489014..9bc9c394 100644 --- a/git/test/db/dulwich/test_base.py +++ b/git/test/db/dulwich/test_base.py @@ -2,21 +2,22 @@ # # This module is part of GitDB and is released under # the New BSD License: http://www.opensource.org/licenses/bsd-license.php +from lib import * from git.test.db.base import RepoBase from git.db.complex import PureCompatibilityGitDB try: - import git.db.dulwich # import test + import dulwich +except ImportError: + # om this case, all other dulwich tests will be skipped + pass - class TestPyDBBase(RepoBase): - - RepoCls = PureCompatibilityGitDB +class TestPyDBBase(RepoBase): + __metaclass__ = DulwichRequiredMetaMixin + RepoCls = PureCompatibilityGitDB + + @needs_dulwich_or_skip + def test_basics(self): + import dulwich + pass - # def test_basics(self): - # pass - -except ImportError: - del(RepoBase) - import warnings - warnings.warn("Skipped all dulwich tests as they are not in the path") -#END handle import |