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): | |
209 # - var | 208 # - var |
210 # - hooks | 209 # - hooks |
| 210 # TODO(maruel): |
211 # - File | 211 # - File |
| 212 # - $matching_files |
| 213 # - use_relative_paths |
212 self._commit_svn(file_system(1, """ | 214 self._commit_svn(file_system(1, """ |
| 215 vars = { |
| 216 'DummyVariable': 'third_party', |
| 217 } |
213 deps = { | 218 deps = { |
214 'src/other': 'svn://%(host)s/svn/trunk/other', | 219 'src/other': 'svn://%(host)s/svn/trunk/other', |
215 'src/third_party/fpp': '/trunk/third_party/foo', | 220 'src/third_party/fpp': '/trunk/' + Var('DummyVariable') + '/foo', |
216 } | 221 } |
217 deps_os = { | 222 deps_os = { |
218 'mac': { | 223 'mac': { |
219 'src/third_party/prout': '/trunk/third_party/prout', | 224 'src/third_party/prout': '/trunk/third_party/prout', |
220 }, | 225 }, |
221 }""" % { 'host': '127.0.0.1' })) | 226 }""" % { 'host': '127.0.0.1' })) |
222 | 227 |
223 self._commit_svn(file_system(2, """ | 228 self._commit_svn(file_system(2, """ |
224 deps = { | 229 deps = { |
225 'src/other': 'svn://%(host)s/svn/trunk/other', | 230 'src/other': 'svn://%(host)s/svn/trunk/other', |
226 'src/third_party/foo': '/trunk/third_party/foo@1', | 231 'src/third_party/foo': '/trunk/third_party/foo@1', |
227 } | 232 } |
| 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 ] |
228 """ % { 'host': '127.0.0.1' })) | 248 """ % { 'host': '127.0.0.1' })) |
229 | 249 |
230 def setUpGIT(self): | 250 def setUpGIT(self): |
231 """Creates git repositories and start the servers.""" | 251 """Creates git repositories and start the servers.""" |
232 assert not self.gitdaemon | 252 assert not self.gitdaemon |
233 rmtree(self.git_root) | 253 rmtree(self.git_root) |
234 for repo in ['repo_%d' % r for r in range(1, 5)]: | 254 for repo in ['repo_%d' % r for r in range(1, 5)]: |
235 check_call(['git', 'init', '-q', join(self.git_root, repo)]) | 255 check_call(['git', 'init', '-q', join(self.git_root, repo)]) |
236 self.git_hashes[repo] = [] | 256 self.git_hashes[repo] = [] |
237 | 257 |
238 # Testing: | 258 # Testing: |
239 # - dependency disapear | 259 # - dependency disapear |
240 # - dependency renamed | 260 # - dependency renamed |
241 # - versioned and unversioned reference | 261 # - versioned and unversioned reference |
242 # - relative and full reference | 262 # - relative and full reference |
243 # - deps_os | 263 # - deps_os |
244 # TODO(maruel): | |
245 # - var | 264 # - var |
246 # - hooks | 265 # - hooks |
| 266 # TODO(maruel): |
247 # - File | 267 # - File |
| 268 # - $matching_files |
| 269 # - use_relative_paths |
248 self._commit_git('repo_1', { | 270 self._commit_git('repo_1', { |
249 'DEPS': """ | 271 'DEPS': """ |
| 272 vars = { |
| 273 'DummyVariable': 'repo', |
| 274 } |
250 deps = { | 275 deps = { |
251 'src/repo2': 'git://%(host)s/git/repo_2', | 276 'src/repo2': 'git://%(host)s/git/repo_2', |
252 'src/repo2/repo3': '/repo_3', | 277 'src/repo2/repo3': '/' + Var('DummyVariable') + '_3', |
253 } | 278 } |
254 deps_os = { | 279 deps_os = { |
255 'mac': { | 280 'mac': { |
256 'src/repo4': '/repo_4', | 281 'src/repo4': '/repo_4', |
257 }, | 282 }, |
258 }""" % { 'host': '127.0.0.1' }, | 283 }""" % { 'host': '127.0.0.1' }, |
259 'origin': 'git/repo_1@1\n', | 284 'origin': 'git/repo_1@1\n', |
260 }) | 285 }) |
261 | 286 |
262 self._commit_git('repo_2', { | 287 self._commit_git('repo_2', { |
(...skipping 19 matching lines...) Expand all Loading... |
282 self._commit_git('repo_4', { | 307 self._commit_git('repo_4', { |
283 'origin': "git/repo_4@2\n" | 308 'origin': "git/repo_4@2\n" |
284 }) | 309 }) |
285 | 310 |
286 self._commit_git('repo_1', { | 311 self._commit_git('repo_1', { |
287 'DEPS': """ | 312 'DEPS': """ |
288 deps = { | 313 deps = { |
289 'src/repo2': 'git://%(host)s/git/repo_2@%(hash)s', | 314 'src/repo2': 'git://%(host)s/git/repo_2@%(hash)s', |
290 'src/repo2/repo_renamed': '/repo_3', | 315 'src/repo2/repo_renamed': '/repo_3', |
291 } | 316 } |
292 """ % { 'host': '127.0.0.1', 'hash': self.git_hashes['repo_2'][0][0] }, | 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 """ % { |
| 333 # TODO(maruel): http://crosbug.com/3591 We need to strip the hash.. duh. |
| 334 'host': '127.0.0.1', 'hash': self.git_hashes['repo_2'][0][0][:7] }, |
293 'origin': "git/repo_1@2\n" | 335 'origin': "git/repo_1@2\n" |
294 }) | 336 }) |
295 | 337 |
296 # Start the daemon. | 338 # Start the daemon. |
297 cmd = ['git', 'daemon', '--export-all', '--base-path=' + self.repos_dir] | 339 cmd = ['git', 'daemon', '--export-all', '--base-path=' + self.repos_dir] |
298 if self.local_only: | 340 if self.local_only: |
299 cmd.append('--listen=127.0.0.1') | 341 cmd.append('--listen=127.0.0.1') |
300 logging.debug(cmd) | 342 logging.debug(cmd) |
301 self.gitdaemon.append(Popen(cmd, cwd=self.repos_dir)) | 343 self.gitdaemon.append(Popen(cmd, cwd=self.repos_dir)) |
302 | 344 |
(...skipping 38 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
341 sys.stdin.readline() | 383 sys.stdin.readline() |
342 except KeyboardInterrupt: | 384 except KeyboardInterrupt: |
343 fake.leak = True | 385 fake.leak = True |
344 finally: | 386 finally: |
345 fake.tearDown() | 387 fake.tearDown() |
346 return 0 | 388 return 0 |
347 | 389 |
348 | 390 |
349 if __name__ == '__main__': | 391 if __name__ == '__main__': |
350 sys.exit(main(sys.argv)) | 392 sys.exit(main(sys.argv)) |
OLD | NEW |