diff --git a/rhodecode/lib/vcs/backends/base.py b/rhodecode/lib/vcs/backends/base.py --- a/rhodecode/lib/vcs/backends/base.py +++ b/rhodecode/lib/vcs/backends/base.py @@ -80,6 +80,10 @@ class BaseRepository(object): def __len__(self): return self.count() + def __eq__(self, other): + same_instance = isinstance(other, self.__class__) + return same_instance and getattr(other, 'path', None) == self.path + @LazyProperty def alias(self): for k, v in settings.BACKENDS.items(): diff --git a/rhodecode/tests/vcs/test_repository.py b/rhodecode/tests/vcs/test_repository.py --- a/rhodecode/tests/vcs/test_repository.py +++ b/rhodecode/tests/vcs/test_repository.py @@ -31,6 +31,19 @@ class RepositoryBaseTest(BackendTestMixi self.assertEqual(self.repo.get_user_email(TEST_USER_CONFIG_FILE), 'foo.bar@example.com') + def test_repo_equality(self): + self.assertTrue(self.repo == self.repo) + + def test_repo_equality_broken_object(self): + import copy + _repo = copy.copy(self.repo) + delattr(_repo, 'path') + self.assertTrue(self.repo != _repo) + + def test_repo_equality_other_object(self): + class dummy(object): + path = self.repo.path + self.assertTrue(self.repo != dummy()) class RepositoryGetDiffTest(BackendTestMixin):