summaryrefslogtreecommitdiff
path: root/git/test/db
diff options
context:
space:
mode:
Diffstat (limited to 'git/test/db')
-rw-r--r--git/test/db/base.py14
-rw-r--r--git/test/db/dulwich/__init__.py4
-rw-r--r--git/test/db/dulwich/lib.py23
-rw-r--r--git/test/db/dulwich/test_base.py33
-rw-r--r--git/test/db/lib.py3
5 files changed, 72 insertions, 5 deletions
diff --git a/git/test/db/base.py b/git/test/db/base.py
index 5291ba03..2f8f50e2 100644
--- a/git/test/db/base.py
+++ b/git/test/db/base.py
@@ -601,20 +601,26 @@ class RepoBase(TestDBBase):
self.failUnlessRaises(NotImplementedError, rev_parse, "@{1 week ago}")
def test_submodules(self):
- assert len(self.rorepo.submodules) == 1 # non-recursive
+ assert len(self.rorepo.submodules) == 2 # non-recursive
# in previous configurations, we had recursive repositories so this would compare to 2
- # now there is only one left, as gitdb was merged
- assert len(list(self.rorepo.iter_submodules())) == 1
+ # now there is only one left, as gitdb was merged, but we have smmap instead
+ assert len(list(self.rorepo.iter_submodules())) == 2
- assert isinstance(self.rorepo.submodule("git/ext/async"), Submodule)
+ assert isinstance(self.rorepo.submodule("async"), Submodule)
self.failUnlessRaises(ValueError, self.rorepo.submodule, "doesn't exist")
@with_rw_repo('HEAD', bare=False)
def test_submodule_update(self, rwrepo):
# fails in bare mode
rwrepo._bare = True
+ # special handling: there are repo implementations which have a bare attribute. IN that case, set it directly
+ if not rwrepo.bare:
+ rwrepo.bare = True
self.failUnlessRaises(InvalidGitRepositoryError, rwrepo.submodule_update)
rwrepo._bare = False
+ if rwrepo.bare:
+ rwrepo.bare = False
+ #END special repo handling
# test create submodule
sm = rwrepo.submodules[0]
diff --git a/git/test/db/dulwich/__init__.py b/git/test/db/dulwich/__init__.py
new file mode 100644
index 00000000..8a681e42
--- /dev/null
+++ b/git/test/db/dulwich/__init__.py
@@ -0,0 +1,4 @@
+# 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
diff --git a/git/test/db/dulwich/lib.py b/git/test/db/dulwich/lib.py
new file mode 100644
index 00000000..56734064
--- /dev/null
+++ b/git/test/db/dulwich/lib.py
@@ -0,0 +1,23 @@
+"""dulwich specific utilities, as well as all the default ones"""
+
+from git.test.lib import (
+ InheritedTestMethodsOverrideWrapperMetaClsAutoMixin,
+ needs_module_or_skip
+ )
+
+__all__ = ['needs_dulwich_or_skip', 'DulwichRequiredMetaMixin']
+
+#{ 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
new file mode 100644
index 00000000..50e64131
--- /dev/null
+++ b/git/test/db/dulwich/test_base.py
@@ -0,0 +1,33 @@
+# 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
+from lib import *
+from git.test.lib import TestBase, with_rw_repo
+from git.test.db.base import RepoBase
+
+
+
+try:
+ import dulwich
+except ImportError:
+ # om this case, all other dulwich tests will be skipped
+ # Need to properly initialize the class though, otherwise it would fail
+ from git.db.complex import PureCompatibilityGitDB as DulwichDB
+else:
+ # now we know dulwich is available, to do futher imports
+ from git.db.dulwich.complex import DulwichCompatibilityGitDB as DulwichDB
+
+#END handle imports
+
+class TestPyDBBase(RepoBase):
+ __metaclass__ = DulwichRequiredMetaMixin
+ RepoCls = DulwichDB
+
+ @needs_dulwich_or_skip
+ @with_rw_repo('HEAD', bare=False)
+ def test_basics(self, rw_repo):
+ db = DulwichDB(rw_repo.working_tree_dir)
+ print db.git_dir
+
+
diff --git a/git/test/db/lib.py b/git/test/db/lib.py
index 499ca252..2b3ddde5 100644
--- a/git/test/db/lib.py
+++ b/git/test/db/lib.py
@@ -70,7 +70,8 @@ class TestDBBase(TestBase):
each test type has its own repository
"""
if cls.needs_ro_repo:
- assert cls.RepoCls is not None, "RepoCls class member must be set"
+ if cls is not TestDBBase:
+ assert cls.RepoCls is not None, "RepoCls class member must be set in %s" % cls
cls.rorepo = cls.RepoCls(rorepo_dir())
#END handle rorepo