13
13
# You should have received a copy of the GNU General Public License
14
14
# along with this program; if not, write to the Free Software
15
# Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
15
# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
17
17
"""Tests for the Branch facility that are not interface tests.
19
For interface tests see tests/branch_implementations/*.py.
19
For interface tests see tests/per_branch/*.py.
21
21
For concrete class tests see this file, and for meta-branch tests
22
22
also see this file.
378
379
self.assertTrue(branch.repository.has_revision(revid))
382
class BzrBranch8(TestCaseWithTransport):
384
def make_branch(self, location, format=None):
386
format = bzrdir.format_registry.make_bzrdir('1.9')
387
format.set_branch_format(_mod_branch.BzrBranchFormat8())
388
return TestCaseWithTransport.make_branch(self, location, format=format)
390
def create_branch_with_reference(self):
391
branch = self.make_branch('branch')
392
branch._set_all_reference_info({'file-id': ('path', 'location')})
396
def instrument_branch(branch, gets):
397
old_get = branch._transport.get
398
def get(*args, **kwargs):
399
gets.append((args, kwargs))
400
return old_get(*args, **kwargs)
401
branch._transport.get = get
403
def test_reference_info_caching_read_locked(self):
405
branch = self.create_branch_with_reference()
407
self.addCleanup(branch.unlock)
408
self.instrument_branch(branch, gets)
409
branch.get_reference_info('file-id')
410
branch.get_reference_info('file-id')
411
self.assertEqual(1, len(gets))
413
def test_reference_info_caching_read_unlocked(self):
415
branch = self.create_branch_with_reference()
416
self.instrument_branch(branch, gets)
417
branch.get_reference_info('file-id')
418
branch.get_reference_info('file-id')
419
self.assertEqual(2, len(gets))
421
def test_reference_info_caching_write_locked(self):
423
branch = self.make_branch('branch')
425
self.instrument_branch(branch, gets)
426
self.addCleanup(branch.unlock)
427
branch._set_all_reference_info({'file-id': ('path2', 'location2')})
428
path, location = branch.get_reference_info('file-id')
429
self.assertEqual(0, len(gets))
430
self.assertEqual('path2', path)
431
self.assertEqual('location2', location)
433
def test_reference_info_caches_cleared(self):
434
branch = self.make_branch('branch')
436
branch.set_reference_info('file-id', 'path2', 'location2')
438
doppelganger = Branch.open('branch')
439
doppelganger.set_reference_info('file-id', 'path3', 'location3')
440
self.assertEqual(('path3', 'location3'),
441
branch.get_reference_info('file-id'))
381
443
class TestBranchReference(TestCaseWithTransport):
382
444
"""Tests for the branch reference facility."""