allura
Revisión | 5ae71201091086e991e419746583e543e8491da9 (tree) |
---|---|
Tiempo | 2011-10-06 02:14:56 |
Autor | Rick Copeland <rcopeland@geek...> |
Commiter | Rick Copeland |
[#2020] Add tests for new Hg repo stuff
Signed-off-by: Rick Copeland <rcopeland@geek.net>
@@ -113,6 +113,10 @@ class RepoObject(object): | ||
113 | 113 | def legacy(self): |
114 | 114 | return Object(object_id=self._id) |
115 | 115 | |
116 | + @property | |
117 | + def object_id(self): | |
118 | + return self._id | |
119 | + | |
116 | 120 | class Commit(RepoObject): |
117 | 121 | # Ephemeral attrs |
118 | 122 | repo=None |
@@ -229,7 +233,12 @@ class Tree(RepoObject): | ||
229 | 233 | for x in self.blob_ids: |
230 | 234 | if README_RE.match(x.name): |
231 | 235 | name = x.name |
232 | - text = self.repo.open_blob(Object(object_id=x.id)).read() | |
236 | + obj = Object( | |
237 | + object_id=x.id, | |
238 | + path=lambda:self.path() + x['name'], | |
239 | + commit=Object( | |
240 | + object_id=self.commit._id)) | |
241 | + text = self.repo.open_blob(obj).read() | |
233 | 242 | text = h.really_unicode(text) |
234 | 243 | break |
235 | 244 | if text == '': |
@@ -66,6 +66,7 @@ def refresh_repo(repo, all_commits=False, notify=True): | ||
66 | 66 | |
67 | 67 | def refresh_commit_trees(ci, cache): |
68 | 68 | '''Refresh the list of trees included withn a commit''' |
69 | + if ci.tree_id is None: return | |
69 | 70 | trees_doc = TreesDoc(dict( |
70 | 71 | _id=ci._id, |
71 | 72 | tree_ids = list(trees(ci.tree_id, cache)))) |
@@ -228,6 +229,7 @@ def unknown_commit_ids(all_commit_ids): | ||
228 | 229 | |
229 | 230 | def compute_diffs(repo_id, tree_cache, rhs_ci): |
230 | 231 | '''compute simple differences between a commit and its first parent''' |
232 | + if rhs_ci.tree_id is None: return | |
231 | 233 | def _walk_tree(tree, tree_index): |
232 | 234 | for x in tree.blob_ids: yield x.id |
233 | 235 | for x in tree.other_ids: yield x.id |
@@ -51,7 +51,9 @@ class TestNewGit(unittest.TestCase): | ||
51 | 51 | ci.count_revisions() |
52 | 52 | ci.context() |
53 | 53 | self.rev.tree.ls() |
54 | - print self.rev.tree.readme() | |
54 | + # print self.rev.tree.readme() | |
55 | + assert self.rev.tree.readme() == ( | |
56 | + 'README', '<pre>This is readme\nAnother Line\n</pre>') | |
55 | 57 | assert self.rev.tree.path() == '/' |
56 | 58 | assert self.rev.tree.url() == ( |
57 | 59 | '/p/test/src/ci/' |
@@ -7,8 +7,60 @@ from ming.orm import ThreadLocalORMSession | ||
7 | 7 | |
8 | 8 | from alluratest.controller import setup_basic_test, setup_global_objects |
9 | 9 | from allura.lib import helpers as h |
10 | +from allura import model as M | |
10 | 11 | from forgehg import model as HM |
11 | 12 | |
13 | +class TestNewRepo(unittest.TestCase): | |
14 | + | |
15 | + def setUp(self): | |
16 | + setup_basic_test() | |
17 | + setup_global_objects() | |
18 | + h.set_context('test', 'src') | |
19 | + repo_dir = pkg_resources.resource_filename( | |
20 | + 'forgehg', 'tests/data') | |
21 | + self.repo = HM.Repository( | |
22 | + name='testrepo.hg', | |
23 | + fs_path=repo_dir, | |
24 | + url_path = '/test/', | |
25 | + tool = 'hg', | |
26 | + status = 'creating') | |
27 | + self.repo.refresh() | |
28 | + self.rev = M.repo.Commit.query.get(_id=self.repo.heads[0]['object_id']) | |
29 | + self.rev.repo = self.repo | |
30 | + ThreadLocalORMSession.flush_all() | |
31 | + ThreadLocalORMSession.close_all() | |
32 | + | |
33 | + def test_commit(self): | |
34 | + assert self.rev.primary() is self.rev | |
35 | + assert self.rev.index_id().startswith('allura/model/repo/Commit#') | |
36 | + self.rev.author_url | |
37 | + self.rev.committer_url | |
38 | + assert self.rev.tree._id == self.rev.tree_id | |
39 | + assert self.rev.summary == self.rev.message.splitlines()[0] | |
40 | + assert self.rev.shorthand_id() == '[1c7eb5]' | |
41 | + assert self.rev.symbolic_ids == (['default'], ['tip']) | |
42 | + assert self.rev.url() == ( | |
43 | + '/p/test/src/ci/' | |
44 | + '1c7eb55bbd66ff45906b4a25d4b403899e0ffff1/') | |
45 | + all_cis = self.rev.log(0, 1000) | |
46 | + assert len(all_cis) == 5 | |
47 | + assert self.rev.log(1,1000) == all_cis[1:] | |
48 | + assert self.rev.log(0,3) == all_cis[:3] | |
49 | + assert self.rev.log(1,2) == all_cis[1:3] | |
50 | + for ci in all_cis: | |
51 | + ci.count_revisions() | |
52 | + ci.context() | |
53 | + self.rev.tree.ls() | |
54 | + assert self.rev.tree.readme() == ( | |
55 | + 'README', '<pre>This is readme\nAnother line\n</pre>') | |
56 | + assert self.rev.tree.path() == '/' | |
57 | + assert self.rev.tree.url() == ( | |
58 | + '/p/test/src/ci/' | |
59 | + '1c7eb55bbd66ff45906b4a25d4b403899e0ffff1/' | |
60 | + 'tree/') | |
61 | + self.rev.tree.by_name['README'] | |
62 | + assert self.rev.tree.is_blob('README') == True | |
63 | + | |
12 | 64 | class TestHgRepo(unittest.TestCase): |
13 | 65 | |
14 | 66 | def setUp(self): |
@@ -240,7 +240,7 @@ class SVNImplementation(M.RepositoryImplementation): | ||
240 | 240 | lst[path.action].append(h.really_unicode(path.path)) |
241 | 241 | |
242 | 242 | def refresh_commit_info(self, oid, seen_object_ids): |
243 | - from alllura.model.repo import CommitDoc | |
243 | + from allura.model.repo import CommitDoc | |
244 | 244 | if CommitDoc.m.find(dict(_id=oid)).count(): |
245 | 245 | return False |
246 | 246 | try: |
@@ -265,7 +265,7 @@ class SVNImplementation(M.RepositoryImplementation): | ||
265 | 265 | tree_id=None, |
266 | 266 | committed=user, |
267 | 267 | authored=user, |
268 | - message=log.entry.message, | |
268 | + message=log_entry.message, | |
269 | 269 | parent_ids=[], |
270 | 270 | child_ids=[])) |
271 | 271 | if revno > 1: |
@@ -3,14 +3,62 @@ import shutil | ||
3 | 3 | import unittest |
4 | 4 | import pkg_resources |
5 | 5 | |
6 | -from pylons import c | |
7 | - | |
8 | 6 | from ming.orm import ThreadLocalORMSession |
9 | 7 | |
10 | 8 | from alluratest.controller import setup_basic_test, setup_global_objects |
11 | 9 | from allura.lib import helpers as h |
10 | +from allura import model as M | |
12 | 11 | from forgesvn import model as SM |
13 | 12 | |
13 | +class TestNewRepo(unittest.TestCase): | |
14 | + | |
15 | + def setUp(self): | |
16 | + setup_basic_test() | |
17 | + setup_global_objects() | |
18 | + h.set_context('test', 'src') | |
19 | + repo_dir = pkg_resources.resource_filename( | |
20 | + 'forgesvn', 'tests/data/') | |
21 | + self.repo = SM.Repository( | |
22 | + name='testsvn', | |
23 | + fs_path=repo_dir, | |
24 | + url_path = '/test/', | |
25 | + tool = 'svn', | |
26 | + status = 'creating') | |
27 | + self.repo.refresh() | |
28 | + self.rev = M.repo.Commit.query.get(_id=self.repo.heads[0]['object_id']) | |
29 | + self.rev.repo = self.repo | |
30 | + ThreadLocalORMSession.flush_all() | |
31 | + ThreadLocalORMSession.close_all() | |
32 | + | |
33 | + def test_commit(self): | |
34 | + assert self.rev.primary() is self.rev | |
35 | + assert self.rev.index_id().startswith('allura/model/repo/Commit#') | |
36 | + self.rev.author_url | |
37 | + self.rev.committer_url | |
38 | + assert self.rev.summary == self.rev.message.splitlines()[0] | |
39 | + assert self.rev.shorthand_id() == '[r5]' | |
40 | + assert self.rev.symbolic_ids == ([], []) | |
41 | + assert self.rev.url() == ( | |
42 | + '/p/test/src/5/') | |
43 | + all_cis = self.rev.log(0, 1000) | |
44 | + assert len(all_cis) == 5 | |
45 | + assert self.rev.log(1,1000) == all_cis[1:] | |
46 | + assert self.rev.log(0,3) == all_cis[:3] | |
47 | + assert self.rev.log(1,2) == all_cis[1:3] | |
48 | + for ci in all_cis: | |
49 | + ci.count_revisions() | |
50 | + ci.context() | |
51 | + self.rev.tree.ls() | |
52 | + assert self.rev.tree.readme() == ( | |
53 | + 'README', '<pre>This is readme\nAnother line\n</pre>') | |
54 | + assert self.rev.tree.path() == '/' | |
55 | + assert self.rev.tree.url() == ( | |
56 | + '/p/test/src/ci/' | |
57 | + '1c7eb55bbd66ff45906b4a25d4b403899e0ffff1/' | |
58 | + 'tree/') | |
59 | + self.rev.tree.by_name['README'] | |
60 | + assert self.rev.tree.is_blob('README') == True | |
61 | + | |
14 | 62 | class TestSVNRepo(unittest.TestCase): |
15 | 63 | |
16 | 64 | def setUp(self): |