##// END OF EJS Templates
vcs: fixed issues with calling get_changesets method doesn't...
marcink -
r3835:42981614 beta
parent child Browse files
Show More
@@ -81,6 +81,18 b' class GitRepository(BaseRepository):'
81 81 except KeyError:
82 82 return None
83 83
84 @property
85 def _empty(self):
86 """
87 Checks if repository is empty ie. without any changesets
88 """
89
90 try:
91 self.revisions[0]
92 except (KeyError, IndexError):
93 return True
94 return False
95
84 96 @LazyProperty
85 97 def revisions(self):
86 98 """
@@ -250,9 +262,7 b' class GitRepository(BaseRepository):'
250 262
251 263 is_null = lambda o: len(o) == revision.count('0')
252 264
253 try:
254 self.revisions[0]
255 except (KeyError, IndexError):
265 if self._empty:
256 266 raise EmptyRepositoryError("There are no changesets yet")
257 267
258 268 if revision in (None, '', 'tip', 'HEAD', 'head', -1):
@@ -492,6 +502,11 b' class GitRepository(BaseRepository):'
492 502 if branch_name and branch_name not in self.branches:
493 503 raise BranchDoesNotExistError("Branch '%s' not found" \
494 504 % branch_name)
505 # actually we should check now if it's not an empty repo to not spaw
506 # subprocess commands
507 if self._empty:
508 raise EmptyRepositoryError("There are no changesets yet")
509
495 510 # %H at format means (full) commit hash, initial hashes are retrieved
496 511 # in ascending date order
497 512 cmd_template = 'log --date-order --reverse --pretty=format:"%H"'
@@ -78,7 +78,7 b' class MercurialRepository(BaseRepository'
78 78 @property
79 79 def _empty(self):
80 80 """
81 Checks if repository is empty without any changesets
81 Checks if repository is empty ie. without any changesets
82 82 """
83 83 # TODO: Following raises errors when using InMemoryChangeset...
84 84 # return len(self._repo.changelog) == 0
@@ -1,5 +1,6 b''
1 1 from __future__ import with_statement
2 2
3 import time
3 4 import datetime
4 5 from rhodecode.lib import vcs
5 6 from rhodecode.tests.vcs.base import BackendTestMixin
@@ -12,9 +13,10 b' from rhodecode.lib.vcs.nodes import ('
12 13 )
13 14 from rhodecode.lib.vcs.exceptions import (
14 15 BranchDoesNotExistError, ChangesetDoesNotExistError,
15 RepositoryError
16 RepositoryError, EmptyRepositoryError
16 17 )
17 18 from rhodecode.lib.vcs.utils.compat import unittest
19 from rhodecode.tests.vcs.conf import get_new_dir
18 20
19 21
20 22 class TestBaseChangeset(unittest.TestCase):
@@ -197,6 +199,14 b' class ChangesetsTestCaseMixin(BackendTes'
197 199 changesets = list(self.repo.get_changesets(start=2, end=3))
198 200 self.assertEqual(len(changesets), 2)
199 201
202 def test_get_changesets_on_empty_repo_raises_EmptyRepository_error(self):
203 Backend = self.get_backend()
204 repo_path = get_new_dir(str(time.time()))
205 repo = Backend(repo_path, create=True)
206
207 with self.assertRaises(EmptyRepositoryError):
208 list(repo.get_changesets(start='foobar'))
209
200 210 def test_get_changesets_includes_end_changeset(self):
201 211 second_id = self.repo.revisions[1]
202 212 changesets = list(self.repo.get_changesets(end=second_id))
General Comments 0
You need to be logged in to leave comments. Login now