comparison tests/test_util.py @ 652:c3900ad3bf69

test_util: support specifying a start revision
author Dan Villiom Podlaski Christiansen <danchr@gmail.com>
date Tue, 20 Jul 2010 11:55:07 +0200
parents 3cb5042531fb
children 35a1e93b6f78
comparison
equal deleted inserted replaced
651:827547493112 652:c3900ad3bf69
96 if drive: 96 if drive:
97 drive = '/' + drive 97 drive = '/' + drive
98 url = 'file://%s%s' % (drive, path) 98 url = 'file://%s%s' % (drive, path)
99 return url 99 return url
100 100
101 def testui(stupid=False, layout='auto'): 101 def testui(stupid=False, layout='auto', startrev=0):
102 u = ui.ui() 102 u = ui.ui()
103 bools = {True: 'true', False: 'false'} 103 bools = {True: 'true', False: 'false'}
104 u.setconfig('ui', 'quiet', bools[True]) 104 u.setconfig('ui', 'quiet', bools[True])
105 u.setconfig('hgsubversion', 'stupid', bools[stupid]) 105 u.setconfig('hgsubversion', 'stupid', bools[stupid])
106 u.setconfig('hgsubversion', 'layout', layout) 106 u.setconfig('hgsubversion', 'layout', layout)
107 u.setconfig('hgsubversion', 'startrev', startrev)
107 return u 108 return u
108 109
109 def load_svndump_fixture(path, fixture_name): 110 def load_svndump_fixture(path, fixture_name):
110 '''Loads an svnadmin dump into a fresh repo at path, which should not 111 '''Loads an svnadmin dump into a fresh repo at path, which should not
111 already exist. 112 already exist.
116 inp = open(os.path.join(FIXTURES, fixture_name)) 117 inp = open(os.path.join(FIXTURES, fixture_name))
117 proc = subprocess.Popen(['svnadmin', 'load', path,], stdin=inp, 118 proc = subprocess.Popen(['svnadmin', 'load', path,], stdin=inp,
118 stdout=subprocess.PIPE, stderr=subprocess.STDOUT) 119 stdout=subprocess.PIPE, stderr=subprocess.STDOUT)
119 proc.communicate() 120 proc.communicate()
120 121
121 def load_fixture_and_fetch(fixture_name, repo_path, wc_path, stupid=False, subdir='', 122 def load_fixture_and_fetch(fixture_name, repo_path, wc_path, stupid=False,
122 noupdate=True, layout='auto'): 123 subdir='', noupdate=True, layout='auto',
124 startrev=0):
123 load_svndump_fixture(repo_path, fixture_name) 125 load_svndump_fixture(repo_path, fixture_name)
124 if subdir: 126 if subdir:
125 repo_path += '/' + subdir 127 repo_path += '/' + subdir
126 _ui = testui(stupid=stupid, layout=layout) 128 _ui = testui(stupid=stupid, layout=layout, startrev=startrev)
127 commands.clone(_ui, fileurl(repo_path), wc_path, noupdate=noupdate) 129 commands.clone(_ui, fileurl(repo_path), wc_path, noupdate=noupdate)
128 return hg.repository(testui(), wc_path) 130 return hg.repository(testui(), wc_path)
129 131
130 def rmtree(path): 132 def rmtree(path):
131 # Read-only files cannot be removed under Windows 133 # Read-only files cannot be removed under Windows
216 raise 218 raise
217 219
218 def ui(self, stupid=False, layout='auto'): 220 def ui(self, stupid=False, layout='auto'):
219 return testui(stupid, layout) 221 return testui(stupid, layout)
220 222
221 def _load_fixture_and_fetch(self, fixture_name, subdir=None, stupid=False, layout='auto'): 223 def _load_fixture_and_fetch(self, fixture_name, subdir=None, stupid=False,
224 layout='auto', startrev=0):
222 if layout == 'single': 225 if layout == 'single':
223 if subdir is None: 226 if subdir is None:
224 subdir = 'trunk' 227 subdir = 'trunk'
225 elif subdir is None: 228 elif subdir is None:
226 subdir = '' 229 subdir = ''
227 return load_fixture_and_fetch(fixture_name, self.repo_path, 230 return load_fixture_and_fetch(fixture_name, self.repo_path,
228 self.wc_path, subdir=subdir, 231 self.wc_path, subdir=subdir,
229 stupid=stupid, layout=layout) 232 stupid=stupid, layout=layout,
233 startrev=startrev)
230 234
231 # define this as a property so that it reloads anytime we need it 235 # define this as a property so that it reloads anytime we need it
232 @property 236 @property
233 def repo(self): 237 def repo(self):
234 return hg.repository(testui(), self.wc_path) 238 return hg.repository(testui(), self.wc_path)