From 80aa40537a3596f24593b5a67adb6d635fe4fa22 Mon Sep 17 00:00:00 2001 From: Sebastian Thiel Date: Thu, 7 Jul 2011 12:55:03 +0200 Subject: 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 ... --- git/test/db/dulwich/lib.py | 18 ++++++++++++++++++ git/test/db/dulwich/test_base.py | 25 +++++++++++++------------ 2 files changed, 31 insertions(+), 12 deletions(-) create mode 100644 git/test/db/dulwich/lib.py (limited to 'git/test/db') 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 -- cgit v1.2.3