18
18
from bzrlib import (
22
from bzrlib.smart import (
25
22
from bzrlib.tests.per_repository import TestCaseWithRepository
28
class TestFetch(TestCaseWithRepository):
25
class TestFetchBase(TestCaseWithRepository):
30
27
def make_source_branch(self):
31
28
# It would be nice if there was a way to force this to be memory-only
51
48
self.addCleanup(source_b.unlock)
52
49
return content, source_b
52
class TestFetch(TestFetchBase):
54
54
def test_sprout_from_stacked_with_short_history(self):
55
55
content, source_b = self.make_source_branch()
56
56
# Split the generated content into a base branch, and a stacked branch
149
149
source_b.lock_read()
150
150
self.addCleanup(source_b.unlock)
151
151
stacked.pull(source_b, stop_revision='B-id')
154
class TestFetchFromRepoWithUnconfiguredFallbacks(TestFetchBase):
156
def make_stacked_source_repo(self):
157
_, source_b = self.make_source_branch()
158
# Use 'make_branch' which gives us a bzr:// branch when appropriate,
159
# rather than creating a branch-on-disk
160
stack_b = self.make_branch('stack-on')
161
stack_b.pull(source_b, stop_revision='B-id')
162
stacked_b = self.make_branch('stacked')
163
stacked_b.set_stacked_on_url('../stack-on')
164
stacked_b.pull(source_b, stop_revision='C-id')
165
return stacked_b.repository
167
def test_fetch_everything_includes_parent_invs(self):
168
stacked = self.make_stacked_source_repo()
169
repo_missing_fallbacks = stacked.bzrdir.open_repository()
170
self.addCleanup(repo_missing_fallbacks.lock_read().unlock)
171
target = self.make_repository('target')
172
self.addCleanup(target.lock_write().unlock)
174
repo_missing_fallbacks,
175
fetch_spec=vf_search.EverythingResult(repo_missing_fallbacks))
176
self.assertEqual(repo_missing_fallbacks.revisions.keys(),
177
target.revisions.keys())
178
self.assertEqual(repo_missing_fallbacks.inventories.keys(),
179
target.inventories.keys())
180
self.assertEqual(['C-id'],
181
sorted(k[-1] for k in target.revisions.keys()))
182
self.assertEqual(['B-id', 'C-id'],
183
sorted(k[-1] for k in target.inventories.keys()))