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 """Smoke tests for gclient.py. | 6 """Smoke tests for gclient.py. |
7 | 7 |
8 Shell out 'gclient' and run basic conformance tests. | 8 Shell out 'gclient' and run basic conformance tests. |
9 | 9 |
10 This test assumes GClientSmokeBase.URL_BASE is valid. | 10 This test assumes GClientSmokeBase.URL_BASE is valid. |
(...skipping 120 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
131 """Work around svn status difference between svn 1.5 and svn 1.6 | 131 """Work around svn status difference between svn 1.5 and svn 1.6 |
132 I don't know why but on Windows they are reversed. So sorts the items.""" | 132 I don't know why but on Windows they are reversed. So sorts the items.""" |
133 for i in xrange(len(out)): | 133 for i in xrange(len(out)): |
134 if len(out[i]) < 2: | 134 if len(out[i]) < 2: |
135 continue | 135 continue |
136 out[i] = [out[i][0]] + sorted([x[1:].strip() for x in out[i][1:]]) | 136 out[i] = [out[i][0]] + sorted([x[1:].strip() for x in out[i][1:]]) |
137 return out | 137 return out |
138 | 138 |
139 | 139 |
140 class GClientSmoke(GClientSmokeBase): | 140 class GClientSmoke(GClientSmokeBase): |
| 141 """Doesn't require neither svnserve nor git-daemon.""" |
141 def testHelp(self): | 142 def testHelp(self): |
142 """testHelp: make sure no new command was added.""" | 143 """testHelp: make sure no new command was added.""" |
143 result = self.gclient(['help']) | 144 result = self.gclient(['help']) |
144 # Roughly, not too short, not too long. | 145 # Roughly, not too short, not too long. |
145 self.assertTrue(1000 < len(result[0]) and len(result[0]) < 2000) | 146 self.assertTrue(1000 < len(result[0]) and len(result[0]) < 2000) |
146 self.assertEquals(0, len(result[1])) | 147 self.assertEquals(0, len(result[1])) |
147 self.assertEquals(0, result[2]) | 148 self.assertEquals(0, result[2]) |
148 | 149 |
149 def testUnknown(self): | 150 def testUnknown(self): |
150 result = self.gclient(['foo']) | 151 result = self.gclient(['foo']) |
(...skipping 94 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
245 'deps = { "src": "%strunk/src" }' % (self.svn_base)) | 246 'deps = { "src": "%strunk/src" }' % (self.svn_base)) |
246 src = join(self.root_dir, 'src') | 247 src = join(self.root_dir, 'src') |
247 os.mkdir(src) | 248 os.mkdir(src) |
248 res = self.gclient(['status', '--jobs', '1'], src) | 249 res = self.gclient(['status', '--jobs', '1'], src) |
249 self.checkBlock(res[0], [('running', deps), ('running', src)]) | 250 self.checkBlock(res[0], [('running', deps), ('running', src)]) |
250 | 251 |
251 | 252 |
252 class GClientSmokeSVN(GClientSmokeBase): | 253 class GClientSmokeSVN(GClientSmokeBase): |
253 def setUp(self): | 254 def setUp(self): |
254 GClientSmokeBase.setUp(self) | 255 GClientSmokeBase.setUp(self) |
255 self.FAKE_REPOS.setUpSVN() | 256 self.enabled = self.FAKE_REPOS.setUpSVN() |
256 | 257 |
257 def testSync(self): | 258 def testSync(self): |
258 # TODO(maruel): safesync. | 259 # TODO(maruel): safesync. |
| 260 if not self.enabled: |
| 261 return |
259 self.gclient(['config', self.svn_base + 'trunk/src/']) | 262 self.gclient(['config', self.svn_base + 'trunk/src/']) |
260 # Test unversioned checkout. | 263 # Test unversioned checkout. |
261 self.parseGclient(['sync', '--deps', 'mac', '--jobs', '1'], | 264 self.parseGclient(['sync', '--deps', 'mac', '--jobs', '1'], |
262 ['running', 'running', | 265 ['running', 'running', |
263 # This is due to the way svn update is called for a | 266 # This is due to the way svn update is called for a |
264 # single file when File() is used in a DEPS file. | 267 # single file when File() is used in a DEPS file. |
265 ('running', self.root_dir + '/src/file/other'), | 268 ('running', self.root_dir + '/src/file/other'), |
266 'running', 'running', 'running', 'running']) | 269 'running', 'running', 'running', 'running']) |
267 tree = self.mangle_svn_tree( | 270 tree = self.mangle_svn_tree( |
268 ('trunk/src@2', 'src'), | 271 ('trunk/src@2', 'src'), |
(...skipping 30 matching lines...) Expand all Loading... |
299 ('trunk/third_party/foo@1', 'src/third_party/foo'), | 302 ('trunk/third_party/foo@1', 'src/third_party/foo'), |
300 ('trunk/other@2', 'src/other'), | 303 ('trunk/other@2', 'src/other'), |
301 ('trunk/third_party/foo@2', 'src/third_party/prout')) | 304 ('trunk/third_party/foo@2', 'src/third_party/prout')) |
302 tree['src/file/other/DEPS'] = ( | 305 tree['src/file/other/DEPS'] = ( |
303 self.FAKE_REPOS.svn_revs[2]['trunk/other/DEPS']) | 306 self.FAKE_REPOS.svn_revs[2]['trunk/other/DEPS']) |
304 tree['src/svn_hooked1'] = 'svn_hooked1' | 307 tree['src/svn_hooked1'] = 'svn_hooked1' |
305 self.assertTree(tree) | 308 self.assertTree(tree) |
306 | 309 |
307 def testSyncIgnoredSolutionName(self): | 310 def testSyncIgnoredSolutionName(self): |
308 """TODO(maruel): This will become an error soon.""" | 311 """TODO(maruel): This will become an error soon.""" |
| 312 if not self.enabled: |
| 313 return |
309 self.gclient(['config', self.svn_base + 'trunk/src/']) | 314 self.gclient(['config', self.svn_base + 'trunk/src/']) |
310 results = self.gclient( | 315 results = self.gclient( |
311 ['sync', '--deps', 'mac', '-r', 'invalid@1', '--jobs', '1']) | 316 ['sync', '--deps', 'mac', '-r', 'invalid@1', '--jobs', '1']) |
312 self.checkBlock(results[0], [ | 317 self.checkBlock(results[0], [ |
313 'running', 'running', | 318 'running', 'running', |
314 # This is due to the way svn update is called for a single file when | 319 # This is due to the way svn update is called for a single file when |
315 # File() is used in a DEPS file. | 320 # File() is used in a DEPS file. |
316 ('running', self.root_dir + '/src/file/other'), | 321 ('running', self.root_dir + '/src/file/other'), |
317 'running', 'running', 'running', 'running']) | 322 'running', 'running', 'running', 'running']) |
318 self.checkString('Please fix your script, having invalid --revision flags ' | 323 self.checkString('Please fix your script, having invalid --revision flags ' |
319 'will soon considered an error.\n', results[1]) | 324 'will soon considered an error.\n', results[1]) |
320 self.assertEquals(0, results[2]) | 325 self.assertEquals(0, results[2]) |
321 tree = self.mangle_svn_tree( | 326 tree = self.mangle_svn_tree( |
322 ('trunk/src@2', 'src'), | 327 ('trunk/src@2', 'src'), |
323 ('trunk/third_party/foo@1', 'src/third_party/foo'), | 328 ('trunk/third_party/foo@1', 'src/third_party/foo'), |
324 ('trunk/other@2', 'src/other')) | 329 ('trunk/other@2', 'src/other')) |
325 tree['src/file/other/DEPS'] = ( | 330 tree['src/file/other/DEPS'] = ( |
326 self.FAKE_REPOS.svn_revs[2]['trunk/other/DEPS']) | 331 self.FAKE_REPOS.svn_revs[2]['trunk/other/DEPS']) |
327 tree['src/svn_hooked1'] = 'svn_hooked1' | 332 tree['src/svn_hooked1'] = 'svn_hooked1' |
328 self.assertTree(tree) | 333 self.assertTree(tree) |
329 | 334 |
330 def testSyncNoSolutionName(self): | 335 def testSyncNoSolutionName(self): |
331 # When no solution name is provided, gclient uses the first solution listed. | 336 # When no solution name is provided, gclient uses the first solution listed. |
| 337 if not self.enabled: |
| 338 return |
332 self.gclient(['config', self.svn_base + 'trunk/src/']) | 339 self.gclient(['config', self.svn_base + 'trunk/src/']) |
333 self.parseGclient(['sync', '--deps', 'mac', '-r', '1', '--jobs', '1'], | 340 self.parseGclient(['sync', '--deps', 'mac', '-r', '1', '--jobs', '1'], |
334 ['running', 'running', 'running', 'running']) | 341 ['running', 'running', 'running', 'running']) |
335 tree = self.mangle_svn_tree( | 342 tree = self.mangle_svn_tree( |
336 ('trunk/src@1', 'src'), | 343 ('trunk/src@1', 'src'), |
337 ('trunk/third_party/foo@2', 'src/third_party/fpp'), | 344 ('trunk/third_party/foo@2', 'src/third_party/fpp'), |
338 ('trunk/other@1', 'src/other'), | 345 ('trunk/other@1', 'src/other'), |
339 ('trunk/third_party/foo@2', 'src/third_party/prout')) | 346 ('trunk/third_party/foo@2', 'src/third_party/prout')) |
340 self.assertTree(tree) | 347 self.assertTree(tree) |
341 | 348 |
342 def testSyncJobs(self): | 349 def testSyncJobs(self): |
| 350 if not self.enabled: |
| 351 return |
343 # TODO(maruel): safesync. | 352 # TODO(maruel): safesync. |
344 self.gclient(['config', self.svn_base + 'trunk/src/']) | 353 self.gclient(['config', self.svn_base + 'trunk/src/']) |
345 # Test unversioned checkout. | 354 # Test unversioned checkout. |
346 self.parseGclient( | 355 self.parseGclient( |
347 ['sync', '--deps', 'mac', '--jobs', '8'], | 356 ['sync', '--deps', 'mac', '--jobs', '8'], |
348 ['running', 'running', | 357 ['running', 'running', |
349 # This is due to the way svn update is called for a | 358 # This is due to the way svn update is called for a |
350 # single file when File() is used in a DEPS file. | 359 # single file when File() is used in a DEPS file. |
351 ('running', self.root_dir + '/src/file/other'), | 360 ('running', self.root_dir + '/src/file/other'), |
352 'running', 'running', 'running', 'running'], | 361 'running', 'running', 'running', 'running'], |
(...skipping 34 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
387 ('trunk/third_party/foo@2', 'src/third_party/fpp'), | 396 ('trunk/third_party/foo@2', 'src/third_party/fpp'), |
388 ('trunk/third_party/foo@1', 'src/third_party/foo'), | 397 ('trunk/third_party/foo@1', 'src/third_party/foo'), |
389 ('trunk/other@2', 'src/other'), | 398 ('trunk/other@2', 'src/other'), |
390 ('trunk/third_party/foo@2', 'src/third_party/prout')) | 399 ('trunk/third_party/foo@2', 'src/third_party/prout')) |
391 tree['src/file/other/DEPS'] = ( | 400 tree['src/file/other/DEPS'] = ( |
392 self.FAKE_REPOS.svn_revs[2]['trunk/other/DEPS']) | 401 self.FAKE_REPOS.svn_revs[2]['trunk/other/DEPS']) |
393 tree['src/svn_hooked1'] = 'svn_hooked1' | 402 tree['src/svn_hooked1'] = 'svn_hooked1' |
394 self.assertTree(tree) | 403 self.assertTree(tree) |
395 | 404 |
396 def testRevertAndStatus(self): | 405 def testRevertAndStatus(self): |
| 406 if not self.enabled: |
| 407 return |
397 self.gclient(['config', self.svn_base + 'trunk/src/']) | 408 self.gclient(['config', self.svn_base + 'trunk/src/']) |
398 # Tested in testSync. | 409 # Tested in testSync. |
399 self.gclient(['sync', '--deps', 'mac']) | 410 self.gclient(['sync', '--deps', 'mac']) |
400 write(join(self.root_dir, 'src', 'other', 'hi'), 'Hey!') | 411 write(join(self.root_dir, 'src', 'other', 'hi'), 'Hey!') |
401 | 412 |
402 out = self.parseGclient(['status', '--deps', 'mac', '--jobs', '1'], | 413 out = self.parseGclient(['status', '--deps', 'mac', '--jobs', '1'], |
403 [['running', join(self.root_dir, 'src')], | 414 [['running', join(self.root_dir, 'src')], |
404 ['running', join(self.root_dir, 'src', 'other')]]) | 415 ['running', join(self.root_dir, 'src', 'other')]]) |
405 out = self.svnBlockCleanup(out) | 416 out = self.svnBlockCleanup(out) |
406 self.checkString('file', out[0][1]) | 417 self.checkString('file', out[0][1]) |
(...skipping 28 matching lines...) Expand all Loading... |
435 out = self.svnBlockCleanup(out) | 446 out = self.svnBlockCleanup(out) |
436 self.checkString('file', out[0][1]) | 447 self.checkString('file', out[0][1]) |
437 self.checkString('other', out[0][2]) | 448 self.checkString('other', out[0][2]) |
438 self.checkString('svn_hooked1', out[0][3]) | 449 self.checkString('svn_hooked1', out[0][3]) |
439 self.checkString('svn_hooked2', out[0][4]) | 450 self.checkString('svn_hooked2', out[0][4]) |
440 self.checkString(join('third_party', 'foo'), out[0][5]) | 451 self.checkString(join('third_party', 'foo'), out[0][5]) |
441 self.assertEquals(6, len(out[0])) | 452 self.assertEquals(6, len(out[0])) |
442 self.assertEquals(1, len(out)) | 453 self.assertEquals(1, len(out)) |
443 | 454 |
444 def testRevertAndStatusDepsOs(self): | 455 def testRevertAndStatusDepsOs(self): |
| 456 if not self.enabled: |
| 457 return |
445 self.gclient(['config', self.svn_base + 'trunk/src/']) | 458 self.gclient(['config', self.svn_base + 'trunk/src/']) |
446 # Tested in testSync. | 459 # Tested in testSync. |
447 self.gclient(['sync', '--deps', 'mac', '--revision', 'src@1']) | 460 self.gclient(['sync', '--deps', 'mac', '--revision', 'src@1']) |
448 write(join(self.root_dir, 'src', 'other', 'hi'), 'Hey!') | 461 write(join(self.root_dir, 'src', 'other', 'hi'), 'Hey!') |
449 | 462 |
450 # Without --verbose, gclient won't output the directories without | 463 # Without --verbose, gclient won't output the directories without |
451 # modification. | 464 # modification. |
452 out = self.parseGclient(['status', '--deps', 'mac', '--jobs', '1'], | 465 out = self.parseGclient(['status', '--deps', 'mac', '--jobs', '1'], |
453 [['running', join(self.root_dir, 'src')], | 466 [['running', join(self.root_dir, 'src')], |
454 ['running', join(self.root_dir, 'src', 'other')]]) | 467 ['running', join(self.root_dir, 'src', 'other')]]) |
(...skipping 41 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
496 | 509 |
497 out = self.parseGclient(['status', '--deps', 'mac', '--jobs', '1'], | 510 out = self.parseGclient(['status', '--deps', 'mac', '--jobs', '1'], |
498 [['running', join(self.root_dir, 'src')]]) | 511 [['running', join(self.root_dir, 'src')]]) |
499 out = self.svnBlockCleanup(out) | 512 out = self.svnBlockCleanup(out) |
500 self.checkString('other', out[0][1]) | 513 self.checkString('other', out[0][1]) |
501 self.checkString(join('third_party', 'fpp'), out[0][2]) | 514 self.checkString(join('third_party', 'fpp'), out[0][2]) |
502 self.checkString(join('third_party', 'prout'), out[0][3]) | 515 self.checkString(join('third_party', 'prout'), out[0][3]) |
503 self.assertEquals(4, len(out[0])) | 516 self.assertEquals(4, len(out[0])) |
504 | 517 |
505 def testRunHooks(self): | 518 def testRunHooks(self): |
| 519 if not self.enabled: |
| 520 return |
506 self.gclient(['config', self.svn_base + 'trunk/src/']) | 521 self.gclient(['config', self.svn_base + 'trunk/src/']) |
507 self.gclient(['sync', '--deps', 'mac']) | 522 self.gclient(['sync', '--deps', 'mac']) |
508 out = self.parseGclient(['runhooks', '--deps', 'mac'], | 523 out = self.parseGclient(['runhooks', '--deps', 'mac'], |
509 ['running', 'running']) | 524 ['running', 'running']) |
510 self.checkString(1, len(out[0])) | 525 self.checkString(1, len(out[0])) |
511 self.checkString(1, len(out[1])) | 526 self.checkString(1, len(out[1])) |
512 | 527 |
513 def testRunHooksDepsOs(self): | 528 def testRunHooksDepsOs(self): |
| 529 if not self.enabled: |
| 530 return |
514 self.gclient(['config', self.svn_base + 'trunk/src/']) | 531 self.gclient(['config', self.svn_base + 'trunk/src/']) |
515 self.gclient(['sync', '--deps', 'mac', '--revision', 'src@1']) | 532 self.gclient(['sync', '--deps', 'mac', '--revision', 'src@1']) |
516 out = self.parseGclient(['runhooks', '--deps', 'mac'], []) | 533 out = self.parseGclient(['runhooks', '--deps', 'mac'], []) |
517 self.assertEquals([], out) | 534 self.assertEquals([], out) |
518 | 535 |
519 def testRevInfo(self): | 536 def testRevInfo(self): |
| 537 if not self.enabled: |
| 538 return |
520 self.gclient(['config', self.svn_base + 'trunk/src/']) | 539 self.gclient(['config', self.svn_base + 'trunk/src/']) |
521 self.gclient(['sync', '--deps', 'mac']) | 540 self.gclient(['sync', '--deps', 'mac']) |
522 results = self.gclient(['revinfo', '--deps', 'mac']) | 541 results = self.gclient(['revinfo', '--deps', 'mac']) |
523 out = ('src: %(base)s/src\n' | 542 out = ('src: %(base)s/src\n' |
524 'src/file/other: File("%(base)s/other/DEPS")\n' | 543 'src/file/other: File("%(base)s/other/DEPS")\n' |
525 'src/other: %(base)s/other\n' | 544 'src/other: %(base)s/other\n' |
526 'src/third_party/foo: %(base)s/third_party/foo@1\n' % | 545 'src/third_party/foo: %(base)s/third_party/foo@1\n' % |
527 { 'base': self.svn_base + 'trunk' }) | 546 { 'base': self.svn_base + 'trunk' }) |
528 self.check((out, '', 0), results) | 547 self.check((out, '', 0), results) |
529 results = self.gclient(['revinfo', '--deps', 'mac', '--actual']) | 548 results = self.gclient(['revinfo', '--deps', 'mac', '--actual']) |
(...skipping 18 matching lines...) Expand all Loading... |
548 ' },\n' | 567 ' },\n' |
549 ' "safesync_url": "",\n' | 568 ' "safesync_url": "",\n' |
550 ' },\n' | 569 ' },\n' |
551 ']\n\n' % | 570 ']\n\n' % |
552 { 'base': self.svn_base + 'trunk' }) | 571 { 'base': self.svn_base + 'trunk' }) |
553 self.check((out, '', 0), results) | 572 self.check((out, '', 0), results) |
554 | 573 |
555 def testWrongDirectory(self): | 574 def testWrongDirectory(self): |
556 # Check that we're not using a .gclient configuration which only talks | 575 # Check that we're not using a .gclient configuration which only talks |
557 # about a subdirectory src when we're in a different subdirectory src-other. | 576 # about a subdirectory src when we're in a different subdirectory src-other. |
| 577 if not self.enabled: |
| 578 return |
558 self.gclient(['config', self.svn_base + 'trunk/src/']) | 579 self.gclient(['config', self.svn_base + 'trunk/src/']) |
559 self.gclient(['sync']) | 580 self.gclient(['sync']) |
560 other_src = join(self.root_dir, 'src-other') | 581 other_src = join(self.root_dir, 'src-other') |
561 os.mkdir(other_src) | 582 os.mkdir(other_src) |
562 res = ('', 'Error: client not configured; see \'gclient config\'\n', 1) | 583 res = ('', 'Error: client not configured; see \'gclient config\'\n', 1) |
563 self.check(res, self.gclient(['status'], other_src)) | 584 self.check(res, self.gclient(['status'], other_src)) |
564 | 585 |
565 def testCorrectDirectory(self): | 586 def testCorrectDirectory(self): |
566 # Check that when we're in the subdirectory src, the .gclient configuration | 587 # Check that when we're in the subdirectory src, the .gclient configuration |
567 # is used. | 588 # is used. |
| 589 if not self.enabled: |
| 590 return |
568 self.gclient(['config', self.svn_base + 'trunk/src/']) | 591 self.gclient(['config', self.svn_base + 'trunk/src/']) |
569 self.gclient(['sync']) | 592 self.gclient(['sync']) |
570 src = join(self.root_dir, 'src') | 593 src = join(self.root_dir, 'src') |
571 res = self.gclient(['status', '--jobs', '1'], src) | 594 res = self.gclient(['status', '--jobs', '1'], src) |
572 self.checkBlock(res[0], [('running', src)]) | 595 self.checkBlock(res[0], [('running', src)]) |
573 | 596 |
574 def testInitialCheckoutNotYetDone(self): | 597 def testInitialCheckoutNotYetDone(self): |
575 # Check that gclient can be executed when the initial checkout hasn't been | 598 # Check that gclient can be executed when the initial checkout hasn't been |
576 # done yet. | 599 # done yet. |
| 600 if not self.enabled: |
| 601 return |
577 self.gclient(['config', self.svn_base + 'trunk/src/']) | 602 self.gclient(['config', self.svn_base + 'trunk/src/']) |
578 self.parseGclient(['sync', '--jobs', '1'], | 603 self.parseGclient(['sync', '--jobs', '1'], |
579 ['running', 'running', | 604 ['running', 'running', |
580 # This is due to the way svn update is called for a | 605 # This is due to the way svn update is called for a |
581 # single file when File() is used in a DEPS file. | 606 # single file when File() is used in a DEPS file. |
582 ('running', self.root_dir + '/src/file/other'), | 607 ('running', self.root_dir + '/src/file/other'), |
583 'running', 'running', 'running', 'running']) | 608 'running', 'running', 'running', 'running']) |
584 | 609 |
585 def testInitialCheckoutFailed(self): | 610 def testInitialCheckoutFailed(self): |
586 # Check that gclient can be executed from an arbitrary sub directory if the | 611 # Check that gclient can be executed from an arbitrary sub directory if the |
587 # initial checkout has failed. | 612 # initial checkout has failed. |
| 613 if not self.enabled: |
| 614 return |
588 self.gclient(['config', self.svn_base + 'trunk/src/']) | 615 self.gclient(['config', self.svn_base + 'trunk/src/']) |
589 self.gclient(['sync']) | 616 self.gclient(['sync']) |
590 # Cripple the checkout. | 617 # Cripple the checkout. |
591 os.remove(join(self.root_dir, '.gclient_entries')) | 618 os.remove(join(self.root_dir, '.gclient_entries')) |
592 src = join(self.root_dir, 'src') | 619 src = join(self.root_dir, 'src') |
593 res = self.gclient(['sync', '--jobs', '1'], src) | 620 res = self.gclient(['sync', '--jobs', '1'], src) |
594 self.checkBlock(res[0], | 621 self.checkBlock(res[0], |
595 ['running', 'running', 'running']) | 622 ['running', 'running', 'running']) |
596 | 623 |
597 | 624 |
(...skipping 212 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
810 'hash1': self.githash('repo_1', 2), | 837 'hash1': self.githash('repo_1', 2), |
811 'hash2': self.githash('repo_2', 1), | 838 'hash2': self.githash('repo_2', 1), |
812 'hash3': self.githash('repo_3', 2), | 839 'hash3': self.githash('repo_3', 2), |
813 }) | 840 }) |
814 self.check((out, '', 0), results) | 841 self.check((out, '', 0), results) |
815 | 842 |
816 | 843 |
817 class GClientSmokeBoth(GClientSmokeBase): | 844 class GClientSmokeBoth(GClientSmokeBase): |
818 def setUp(self): | 845 def setUp(self): |
819 GClientSmokeBase.setUp(self) | 846 GClientSmokeBase.setUp(self) |
820 self.FAKE_REPOS.setUpSVN() | 847 self.enabled = self.FAKE_REPOS.setUpSVN() and self.FAKE_REPOS.setUpGIT() |
821 self.enabled = self.FAKE_REPOS.setUpGIT() | |
822 | 848 |
823 def testMultiSolutions(self): | 849 def testMultiSolutions(self): |
824 if not self.enabled: | 850 if not self.enabled: |
825 return | 851 return |
826 self.gclient(['config', '--spec', | 852 self.gclient(['config', '--spec', |
827 'solutions=[' | 853 'solutions=[' |
828 '{"name": "src",' | 854 '{"name": "src",' |
829 ' "url": "' + self.svn_base + 'trunk/src/"},' | 855 ' "url": "' + self.svn_base + 'trunk/src/"},' |
830 '{"name": "src-git",' | 856 '{"name": "src-git",' |
831 '"url": "' + self.git_base + 'repo_1"}]']) | 857 '"url": "' + self.git_base + 'repo_1"}]']) |
(...skipping 144 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
976 expected = [(scm, bases[scm] + url, os.path.join(self.root_dir, path)) | 1002 expected = [(scm, bases[scm] + url, os.path.join(self.root_dir, path)) |
977 for (scm, url, path) in expected_source] | 1003 for (scm, url, path) in expected_source] |
978 | 1004 |
979 self.assertEquals(sorted(entries), sorted(expected)) | 1005 self.assertEquals(sorted(entries), sorted(expected)) |
980 | 1006 |
981 | 1007 |
982 class GClientSmokeFromCheckout(GClientSmokeBase): | 1008 class GClientSmokeFromCheckout(GClientSmokeBase): |
983 # WebKit abuses this. It has a .gclient and a DEPS from a checkout. | 1009 # WebKit abuses this. It has a .gclient and a DEPS from a checkout. |
984 def setUp(self): | 1010 def setUp(self): |
985 GClientSmokeBase.setUp(self) | 1011 GClientSmokeBase.setUp(self) |
986 self.FAKE_REPOS.setUpSVN() | 1012 self.enabled = self.FAKE_REPOS.setUpSVN() |
987 os.rmdir(self.root_dir) | 1013 os.rmdir(self.root_dir) |
988 check_call(['svn', 'checkout', 'svn://127.0.0.1/svn/trunk/webkit', | 1014 if self.enabled: |
989 self.root_dir, '-q', | 1015 check_call(['svn', 'checkout', 'svn://127.0.0.1/svn/trunk/webkit', |
990 '--non-interactive', '--no-auth-cache', | 1016 self.root_dir, '-q', |
991 '--username', 'user1', '--password', 'foo']) | 1017 '--non-interactive', '--no-auth-cache', |
| 1018 '--username', 'user1', '--password', 'foo']) |
992 | 1019 |
993 def testSync(self): | 1020 def testSync(self): |
| 1021 if not self.enabled: |
| 1022 return |
994 self.parseGclient(['sync', '--deps', 'mac', '--jobs', '1'], | 1023 self.parseGclient(['sync', '--deps', 'mac', '--jobs', '1'], |
995 ['running', 'running']) | 1024 ['running', 'running']) |
996 tree = self.mangle_svn_tree( | 1025 tree = self.mangle_svn_tree( |
997 ('trunk/webkit@2', ''), | 1026 ('trunk/webkit@2', ''), |
998 ('trunk/third_party/foo@1', 'foo/bar')) | 1027 ('trunk/third_party/foo@1', 'foo/bar')) |
999 self.assertTree(tree) | 1028 self.assertTree(tree) |
1000 | 1029 |
1001 def testRevertAndStatus(self): | 1030 def testRevertAndStatus(self): |
| 1031 if not self.enabled: |
| 1032 return |
1002 self.gclient(['sync']) | 1033 self.gclient(['sync']) |
1003 | 1034 |
1004 # TODO(maruel): This is incorrect. | 1035 # TODO(maruel): This is incorrect. |
1005 out = self.parseGclient(['status', '--deps', 'mac', '--jobs', '1'], []) | 1036 out = self.parseGclient(['status', '--deps', 'mac', '--jobs', '1'], []) |
1006 | 1037 |
1007 # Revert implies --force implies running hooks without looking at pattern | 1038 # Revert implies --force implies running hooks without looking at pattern |
1008 # matching. | 1039 # matching. |
1009 results = self.gclient(['revert', '--deps', 'mac', '--jobs', '1']) | 1040 results = self.gclient(['revert', '--deps', 'mac', '--jobs', '1']) |
1010 out = self.splitBlock(results[0]) | 1041 out = self.splitBlock(results[0]) |
1011 self.assertEquals(2, len(out)) | 1042 self.assertEquals(2, len(out)) |
1012 self.checkString(2, len(out[0])) | 1043 self.checkString(2, len(out[0])) |
1013 self.checkString(2, len(out[1])) | 1044 self.checkString(2, len(out[1])) |
1014 self.checkString('foo', out[1][1]) | 1045 self.checkString('foo', out[1][1]) |
1015 self.checkString('', results[1]) | 1046 self.checkString('', results[1]) |
1016 self.assertEquals(0, results[2]) | 1047 self.assertEquals(0, results[2]) |
1017 tree = self.mangle_svn_tree( | 1048 tree = self.mangle_svn_tree( |
1018 ('trunk/webkit@2', ''), | 1049 ('trunk/webkit@2', ''), |
1019 ('trunk/third_party/foo@1', 'foo/bar')) | 1050 ('trunk/third_party/foo@1', 'foo/bar')) |
1020 self.assertTree(tree) | 1051 self.assertTree(tree) |
1021 | 1052 |
1022 # TODO(maruel): This is incorrect. | 1053 # TODO(maruel): This is incorrect. |
1023 out = self.parseGclient(['status', '--deps', 'mac'], []) | 1054 out = self.parseGclient(['status', '--deps', 'mac'], []) |
1024 | 1055 |
1025 def testRunHooks(self): | 1056 def testRunHooks(self): |
| 1057 if not self.enabled: |
| 1058 return |
1026 # Hooks aren't really tested for now since there is no hook defined. | 1059 # Hooks aren't really tested for now since there is no hook defined. |
1027 self.gclient(['sync', '--deps', 'mac']) | 1060 self.gclient(['sync', '--deps', 'mac']) |
1028 out = self.parseGclient(['runhooks', '--deps', 'mac'], ['running']) | 1061 out = self.parseGclient(['runhooks', '--deps', 'mac'], ['running']) |
1029 self.assertEquals(1, len(out)) | 1062 self.assertEquals(1, len(out)) |
1030 self.assertEquals(2, len(out[0])) | 1063 self.assertEquals(2, len(out[0])) |
1031 self.assertEquals(3, len(out[0][0])) | 1064 self.assertEquals(3, len(out[0][0])) |
1032 self.checkString('foo', out[0][1]) | 1065 self.checkString('foo', out[0][1]) |
1033 tree = self.mangle_svn_tree( | 1066 tree = self.mangle_svn_tree( |
1034 ('trunk/webkit@2', ''), | 1067 ('trunk/webkit@2', ''), |
1035 ('trunk/third_party/foo@1', 'foo/bar')) | 1068 ('trunk/third_party/foo@1', 'foo/bar')) |
1036 self.assertTree(tree) | 1069 self.assertTree(tree) |
1037 | 1070 |
1038 def testRevInfo(self): | 1071 def testRevInfo(self): |
| 1072 if not self.enabled: |
| 1073 return |
1039 self.gclient(['sync', '--deps', 'mac']) | 1074 self.gclient(['sync', '--deps', 'mac']) |
1040 results = self.gclient(['revinfo', '--deps', 'mac']) | 1075 results = self.gclient(['revinfo', '--deps', 'mac']) |
1041 expected = ( | 1076 expected = ( |
1042 './: None\nfoo/bar: svn://127.0.0.1/svn/trunk/third_party/foo@1\n', | 1077 './: None\nfoo/bar: svn://127.0.0.1/svn/trunk/third_party/foo@1\n', |
1043 '', 0) | 1078 '', 0) |
1044 self.check(expected, results) | 1079 self.check(expected, results) |
1045 # TODO(maruel): To be added after the refactor. | 1080 # TODO(maruel): To be added after the refactor. |
1046 #results = self.gclient(['revinfo', '--snapshot']) | 1081 #results = self.gclient(['revinfo', '--snapshot']) |
1047 #expected = ( | 1082 #expected = ( |
1048 # './: None\nfoo/bar: svn://127.0.0.1/svn/trunk/third_party/foo@1\n', | 1083 # './: None\nfoo/bar: svn://127.0.0.1/svn/trunk/third_party/foo@1\n', |
1049 # '', 0) | 1084 # '', 0) |
1050 #self.check(expected, results) | 1085 #self.check(expected, results) |
1051 | 1086 |
1052 def testRest(self): | 1087 def testRest(self): |
| 1088 if not self.enabled: |
| 1089 return |
1053 self.gclient(['sync']) | 1090 self.gclient(['sync']) |
1054 # TODO(maruel): This is incorrect, it should run on ./ too. | 1091 # TODO(maruel): This is incorrect, it should run on ./ too. |
1055 out = self.parseGclient( | 1092 out = self.parseGclient( |
1056 ['cleanup', '--deps', 'mac', '--verbose', '--jobs', '1'], | 1093 ['cleanup', '--deps', 'mac', '--verbose', '--jobs', '1'], |
1057 [('running', join(self.root_dir, 'foo', 'bar'))]) | 1094 [('running', join(self.root_dir, 'foo', 'bar'))]) |
1058 out = self.parseGclient( | 1095 out = self.parseGclient( |
1059 ['diff', '--deps', 'mac', '--verbose', '--jobs', '1'], | 1096 ['diff', '--deps', 'mac', '--verbose', '--jobs', '1'], |
1060 [('running', join(self.root_dir, 'foo', 'bar'))]) | 1097 [('running', join(self.root_dir, 'foo', 'bar'))]) |
1061 | 1098 |
1062 | 1099 |
1063 if __name__ == '__main__': | 1100 if __name__ == '__main__': |
1064 if '-c' in sys.argv: | 1101 if '-c' in sys.argv: |
1065 COVERAGE = True | 1102 COVERAGE = True |
1066 sys.argv.remove('-c') | 1103 sys.argv.remove('-c') |
1067 if os.path.exists('.coverage'): | 1104 if os.path.exists('.coverage'): |
1068 os.remove('.coverage') | 1105 os.remove('.coverage') |
1069 os.environ['COVERAGE_FILE'] = os.path.join( | 1106 os.environ['COVERAGE_FILE'] = os.path.join( |
1070 os.path.dirname(os.path.dirname(os.path.abspath(__file__))), | 1107 os.path.dirname(os.path.dirname(os.path.abspath(__file__))), |
1071 '.coverage') | 1108 '.coverage') |
1072 unittest.main() | 1109 unittest.main() |
OLD | NEW |