OLD | NEW |
1 #!/usr/bin/python | 1 #!/usr/bin/python |
2 # Copyright (c) 2010 The Chromium Authors. All rights reserved. | 2 # Copyright (c) 2010 The Chromium Authors. All rights reserved. |
3 # Use of this source code is governed by a BSD-style license that can be | 3 # Use of this source code is governed by a BSD-style license that can be |
4 # found in the LICENSE file. | 4 # found in the LICENSE file. |
5 | 5 |
6 """Generate fake repositories for testing.""" | 6 """Generate fake repositories for testing.""" |
7 | 7 |
8 import logging | 8 import logging |
9 import os | 9 import os |
10 import re | 10 import re |
(...skipping 187 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
198 fs[k] = fs[k] % { 'rev': rev } | 198 fs[k] = fs[k] % { 'rev': rev } |
199 fs['trunk/src/DEPS'] = DEPS | 199 fs['trunk/src/DEPS'] = DEPS |
200 return fs | 200 return fs |
201 | 201 |
202 # Testing: | 202 # Testing: |
203 # - dependency disapear | 203 # - dependency disapear |
204 # - dependency renamed | 204 # - dependency renamed |
205 # - versioned and unversioned reference | 205 # - versioned and unversioned reference |
206 # - relative and full reference | 206 # - relative and full reference |
207 # - deps_os | 207 # - deps_os |
| 208 # TODO(maruel): |
208 # - var | 209 # - var |
209 # - hooks | 210 # - hooks |
210 # TODO(maruel): | |
211 # - File | 211 # - File |
212 # - $matching_files | |
213 # - use_relative_paths | |
214 self._commit_svn(file_system(1, """ | 212 self._commit_svn(file_system(1, """ |
215 vars = { | |
216 'DummyVariable': 'third_party', | |
217 } | |
218 deps = { | 213 deps = { |
219 'src/other': 'svn://%(host)s/svn/trunk/other', | 214 'src/other': 'svn://%(host)s/svn/trunk/other', |
220 'src/third_party/fpp': '/trunk/' + Var('DummyVariable') + '/foo', | 215 'src/third_party/fpp': '/trunk/third_party/foo', |
221 } | 216 } |
222 deps_os = { | 217 deps_os = { |
223 'mac': { | 218 'mac': { |
224 'src/third_party/prout': '/trunk/third_party/prout', | 219 'src/third_party/prout': '/trunk/third_party/prout', |
225 }, | 220 }, |
226 }""" % { 'host': '127.0.0.1' })) | 221 }""" % { 'host': '127.0.0.1' })) |
227 | 222 |
228 self._commit_svn(file_system(2, """ | 223 self._commit_svn(file_system(2, """ |
229 deps = { | 224 deps = { |
230 'src/other': 'svn://%(host)s/svn/trunk/other', | 225 'src/other': 'svn://%(host)s/svn/trunk/other', |
231 'src/third_party/foo': '/trunk/third_party/foo@1', | 226 'src/third_party/foo': '/trunk/third_party/foo@1', |
232 } | 227 } |
233 # I think this is wrong to have the hooks run from the base of the gclient | |
234 # checkout. It's maybe a bit too late to change that behavior. | |
235 hooks = [ | |
236 { | |
237 'pattern': '.', | |
238 'action': ['python', '-c', | |
239 'open(\\'src/hooked1\\', \\'w\\').write(\\'hooked1\\')'], | |
240 }, | |
241 { | |
242 # Should not be run. | |
243 'pattern': 'nonexistent', | |
244 'action': ['python', '-c', | |
245 'open(\\'src/hooked2\\', \\'w\\').write(\\'hooked2\\')'], | |
246 }, | |
247 ] | |
248 """ % { 'host': '127.0.0.1' })) | 228 """ % { 'host': '127.0.0.1' })) |
249 | 229 |
250 def setUpGIT(self): | 230 def setUpGIT(self): |
251 """Creates git repositories and start the servers.""" | 231 """Creates git repositories and start the servers.""" |
252 assert not self.gitdaemon | 232 assert not self.gitdaemon |
253 rmtree(self.git_root) | 233 rmtree(self.git_root) |
254 for repo in ['repo_%d' % r for r in range(1, 5)]: | 234 for repo in ['repo_%d' % r for r in range(1, 5)]: |
255 check_call(['git', 'init', '-q', join(self.git_root, repo)]) | 235 check_call(['git', 'init', '-q', join(self.git_root, repo)]) |
256 self.git_hashes[repo] = [] | 236 self.git_hashes[repo] = [] |
257 | 237 |
258 # Testing: | 238 # Testing: |
259 # - dependency disapear | 239 # - dependency disapear |
260 # - dependency renamed | 240 # - dependency renamed |
261 # - versioned and unversioned reference | 241 # - versioned and unversioned reference |
262 # - relative and full reference | 242 # - relative and full reference |
263 # - deps_os | 243 # - deps_os |
| 244 # TODO(maruel): |
264 # - var | 245 # - var |
265 # - hooks | 246 # - hooks |
266 # TODO(maruel): | |
267 # - File | 247 # - File |
268 # - $matching_files | |
269 # - use_relative_paths | |
270 self._commit_git('repo_1', { | 248 self._commit_git('repo_1', { |
271 'DEPS': """ | 249 'DEPS': """ |
272 vars = { | |
273 'DummyVariable': 'repo', | |
274 } | |
275 deps = { | 250 deps = { |
276 'src/repo2': 'git://%(host)s/git/repo_2', | 251 'src/repo2': 'git://%(host)s/git/repo_2', |
277 'src/repo2/repo3': '/' + Var('DummyVariable') + '_3', | 252 'src/repo2/repo3': '/repo_3', |
278 } | 253 } |
279 deps_os = { | 254 deps_os = { |
280 'mac': { | 255 'mac': { |
281 'src/repo4': '/repo_4', | 256 'src/repo4': '/repo_4', |
282 }, | 257 }, |
283 }""" % { 'host': '127.0.0.1' }, | 258 }""" % { 'host': '127.0.0.1' }, |
284 'origin': 'git/repo_1@1\n', | 259 'origin': 'git/repo_1@1\n', |
285 }) | 260 }) |
286 | 261 |
287 self._commit_git('repo_2', { | 262 self._commit_git('repo_2', { |
(...skipping 19 matching lines...) Expand all Loading... |
307 self._commit_git('repo_4', { | 282 self._commit_git('repo_4', { |
308 'origin': "git/repo_4@2\n" | 283 'origin': "git/repo_4@2\n" |
309 }) | 284 }) |
310 | 285 |
311 self._commit_git('repo_1', { | 286 self._commit_git('repo_1', { |
312 'DEPS': """ | 287 'DEPS': """ |
313 deps = { | 288 deps = { |
314 'src/repo2': 'git://%(host)s/git/repo_2@%(hash)s', | 289 'src/repo2': 'git://%(host)s/git/repo_2@%(hash)s', |
315 'src/repo2/repo_renamed': '/repo_3', | 290 'src/repo2/repo_renamed': '/repo_3', |
316 } | 291 } |
317 # I think this is wrong to have the hooks run from the base of the gclient | |
318 # checkout. It's maybe a bit too late to change that behavior. | |
319 hooks = [ | |
320 { | |
321 'pattern': '.', | |
322 'action': ['python', '-c', | |
323 'open(\\'src/hooked1\\', \\'w\\').write(\\'hooked1\\')'], | |
324 }, | |
325 { | |
326 # Should not be run. | |
327 'pattern': 'nonexistent', | |
328 'action': ['python', '-c', | |
329 'open(\\'src/hooked2\\', \\'w\\').write(\\'hooked2\\')'], | |
330 }, | |
331 ] | |
332 """ % { 'host': '127.0.0.1', 'hash': self.git_hashes['repo_2'][0][0] }, | 292 """ % { 'host': '127.0.0.1', 'hash': self.git_hashes['repo_2'][0][0] }, |
333 'origin': "git/repo_1@2\n" | 293 'origin': "git/repo_1@2\n" |
334 }) | 294 }) |
335 | 295 |
336 # Start the daemon. | 296 # Start the daemon. |
337 cmd = ['git', 'daemon', '--export-all', '--base-path=' + self.repos_dir] | 297 cmd = ['git', 'daemon', '--export-all', '--base-path=' + self.repos_dir] |
338 if self.local_only: | 298 if self.local_only: |
339 cmd.append('--listen=127.0.0.1') | 299 cmd.append('--listen=127.0.0.1') |
340 logging.debug(cmd) | 300 logging.debug(cmd) |
341 self.gitdaemon.append(Popen(cmd, cwd=self.repos_dir)) | 301 self.gitdaemon.append(Popen(cmd, cwd=self.repos_dir)) |
(...skipping 39 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
381 sys.stdin.readline() | 341 sys.stdin.readline() |
382 except KeyboardInterrupt: | 342 except KeyboardInterrupt: |
383 fake.leak = True | 343 fake.leak = True |
384 finally: | 344 finally: |
385 fake.tearDown() | 345 fake.tearDown() |
386 return 0 | 346 return 0 |
387 | 347 |
388 | 348 |
389 if __name__ == '__main__': | 349 if __name__ == '__main__': |
390 sys.exit(main(sys.argv)) | 350 sys.exit(main(sys.argv)) |
OLD | NEW |