summaryrefslogtreecommitdiff
path: root/morphlib/localrepocache_tests.py
diff options
context:
space:
mode:
authorDaniel Silverstone <daniel.silverstone@codethink.co.uk>2012-09-25 13:46:02 +0000
committerDaniel Silverstone <daniel.silverstone@codethink.co.uk>2012-09-25 15:07:57 +0100
commitebed9ace77eed4b8e40675cff40a96f61ae291e2 (patch)
treef98202409666c39f3bea7cb5e1aca55c05002a7b /morphlib/localrepocache_tests.py
parentecdd22d0aa03ddb2bdac3fcba506d70d6ab45c4b (diff)
downloadmorph-ebed9ace77eed4b8e40675cff40a96f61ae291e2.tar.gz
Use tarballs instead of bundles
This makes a non-backward-compatible change to morph which switches it to using tarballs instead of bundles when initialising cached git repositories. This is faster because it doesn't require index-pack --fix-thin operations on the machine running morph.
Diffstat (limited to 'morphlib/localrepocache_tests.py')
-rw-r--r--morphlib/localrepocache_tests.py35
1 files changed, 27 insertions, 8 deletions
diff --git a/morphlib/localrepocache_tests.py b/morphlib/localrepocache_tests.py
index c178f8b4..26a92616 100644
--- a/morphlib/localrepocache_tests.py
+++ b/morphlib/localrepocache_tests.py
@@ -16,6 +16,7 @@
import unittest
import urllib2
+import os
import cliapp
@@ -27,11 +28,11 @@ class LocalRepoCacheTests(unittest.TestCase):
def setUp(self):
aliases = ['upstream=git://example.com/#example.com:%s.git']
repo_resolver = morphlib.repoaliasresolver.RepoAliasResolver(aliases)
- bundle_base_url = 'http://lorry.example.com/bundles/'
+ tarball_base_url = 'http://lorry.example.com/tarballs/'
self.reponame = 'upstream:reponame'
self.repourl = 'git://example.com/reponame'
escaped_url = 'git___example_com_reponame'
- self.bundle_url = '%s%s.bndl' % (bundle_base_url, escaped_url)
+ self.tarball_url = '%s%s.tar' % (tarball_base_url, escaped_url)
self.cachedir = '/cache/dir'
self.cache_path = '%s/%s' % (self.cachedir, escaped_url)
self.cache = set()
@@ -39,12 +40,20 @@ class LocalRepoCacheTests(unittest.TestCase):
self.fetched = []
self.removed = []
self.lrc = morphlib.localrepocache.LocalRepoCache(
- object(), self.cachedir, repo_resolver, bundle_base_url)
+ object(), self.cachedir, repo_resolver, tarball_base_url)
self.lrc._git = self.fake_git
self.lrc._exists = self.fake_exists
self.lrc._fetch = self.not_found
self.lrc._mkdir = self.fake_mkdir
self.lrc._remove = self.fake_remove
+ self.lrc._runcmd = self.fake_runcmd
+
+ def fake_runcmd(self, args, cwd=None):
+ if args[0:2] == ['tar', 'xf']:
+ self.unpacked_tar = args[2]
+ self.cache.add(cwd)
+ else:
+ raise NotImplementedError()
def fake_git(self, args, cwd=None):
if args[0] == 'clone':
@@ -58,7 +67,15 @@ class LocalRepoCacheTests(unittest.TestCase):
elif args[0:2] == ['remote', 'set-url']:
remote = args[2]
url = args[3]
- self.remotes[remote]['url'] = url
+ self.remotes[remote] = {'url': url}
+ elif args[0:2] == ['config', 'remote.origin.url']:
+ remote = 'origin'
+ url = args[2]
+ self.remotes[remote] = {'url': url}
+ elif args[0:2] == ['config', 'remote.origin.mirror']:
+ remote = 'origin'
+ elif args[0:2] == ['config', 'remote.origin.fetch']:
+ remote = 'origin'
else:
raise NotImplementedError()
@@ -113,15 +130,17 @@ class LocalRepoCacheTests(unittest.TestCase):
self.assertRaises(morphlib.localrepocache.NoRemote,
self.lrc.cache_repo, self.repourl)
- def test_does_not_mind_a_missing_bundle(self):
+ def test_does_not_mind_a_missing_tarball(self):
self.lrc.cache_repo(self.repourl)
self.assertEqual(self.fetched, [])
- def test_fetches_bundle_when_it_exists(self):
+ def test_fetches_tarball_when_it_exists(self):
self.lrc._fetch = self.fake_fetch
+ self.unpacked_tar = ""
+ self.mkdir_path = ""
self.lrc.cache_repo(self.repourl)
- self.assertEqual(self.fetched, [self.bundle_url])
- self.assertEqual(self.removed, [self.cache_path + '.bundle'])
+ self.assertEqual(self.fetched, [self.tarball_url])
+ self.assertEqual(self.removed, [self.cache_path + '.tar'])
self.assertEqual(self.remotes['origin']['url'], self.repourl)
def test_gets_cached_shortened_repo(self):