Chromium Code Reviews| Index: tests/gclient_smoketest.py |
| diff --git a/tests/gclient_smoketest.py b/tests/gclient_smoketest.py |
| index 427699816bc97b0429879697ae46f659014fa4b1..a44c9d68994beb3c43437fe69f8634e8765e282a 100755 |
| --- a/tests/gclient_smoketest.py |
| +++ b/tests/gclient_smoketest.py |
| @@ -109,9 +109,11 @@ class GClientSmokeBase(FakeReposTestBase): |
| not re.match( |
| r'_____ [^ ]+ : Attempting rebase onto [0-9a-f]+...', |
| line) and |
| - not re.match(r'_____ [^ ]+ at [^ ]+', line)): |
| - # The two regexp above are a bit too broad, they are necessary only |
| - # for git checkouts. |
| + not re.match(r'_____ [^ ]+ at [^ ]+', line) and not |
| + re.match( |
| + r'_____ (.*) looks like a git-svn checkout. Skipping.', |
| + line)): |
| + # The regexp above are a bit too broad. |
| self.fail(line) |
| else: |
| results.append([[match.group(1), match.group(2), match.group(3)]]) |
| @@ -776,7 +778,59 @@ class GClientSmokeSVN(GClientSmokeBase): |
| # Cripple src/third_party/foo and make sure gclient still succeeds. |
| gclient_utils.rmtree(join(third_party, 'foo', '.svn')) |
| - self.assertEquals(0, self.gclient(cmd)[-1]) |
| + self.assertEquals(0, self.gclient(cmd + ['--force'])[-1]) |
| + |
| + def testSkipGitSvn(self): |
|
borenet
2014/02/27 22:07:36
This test probably isn't needed.
|
| + # Check that gclient skips git-svn checkouts. |
| + if not self.enabled: |
| + return |
| + |
| + # Create the .gclient file. |
| + svn_url = self.svn_base + 'trunk/src' |
| + self.gclient(['config', svn_url], cwd=self.root_dir) |
| + |
| + # Create a git-svn checkout. |
| + # Use check_output to hide the output from the subprocess. |
| + subprocess2.check_output(['git', 'svn', 'clone', svn_url], |
| + cwd=self.root_dir) |
| + |
| + # Ensure that gclient skips the git-svn checkout. |
| + stdout, stderr, rc = self.gclient(['sync', '--jobs', '1']) |
| + self.assertEquals(rc, 0) |
| + self.assertFalse(stderr) |
| + self.assertTrue('_____ src looks like a git-svn checkout. Skipping.' |
| + in stdout) |
| + self.checkBlock(stdout, [ |
| + ['running', self.root_dir], |
| + ['running', os.path.join(self.root_dir, 'src', 'file', 'other')], |
| + ['running', self.root_dir], |
| + ['running', self.root_dir], |
| + ['running', self.root_dir], |
| + ['running', self.root_dir], |
| + ['running', self.root_dir], |
| + ]) |
| + |
| + # But, we still need the DEPS to be checked out... |
| + foo_dir = os.path.join(self.root_dir, 'src', 'third_party', 'foo') |
| + foo_rev = subprocess2.check_output(['svnversion', foo_dir]).strip() |
| + self.assertEquals(foo_rev, '1') |
| + |
| + other_dir = os.path.join(self.root_dir, 'src', 'other') |
| + other_rev = subprocess2.check_output(['svnversion', other_dir]).strip() |
| + self.assertEquals(other_rev, '2') |
| + |
| + # Verify that the DEPS are NOT skipped on a second update. |
| + stdout, stderr, rc = self.gclient(['sync', '--jobs', '1']) |
| + self.assertFalse(stderr) |
| + self.assertTrue('_____ src looks like a git-svn checkout. Skipping.' |
| + in stdout) |
| + self.assertFalse( |
| + '_____ src/other looks like a git-svn checkout. Skipping.' in stdout, |
| + 'Non git-svn checkout is incorrectly skipped.') |
| + self.assertFalse( |
| + '_____ src/third_party/foo looks like a git-svn checkout. Skipping.' |
| + in stdout, |
| + 'Non git-svn checkout is incorrectly skipped.') |
| class GClientSmokeSVNTransitive(GClientSmokeBase): |
| @@ -1396,6 +1450,77 @@ class GClientSmokeBoth(GClientSmokeBase): |
| self.assertEquals(sorted(entries), sorted(expected)) |
| + def testDeleteConflictingCheckout(self): |
|
borenet
2014/02/27 22:07:36
This test probably isn't needed. It should maybe
|
| + if not self.enabled: |
| + return |
| + |
| + # Create an initial svn checkout. |
| + self.gclient(['config', '--spec', |
| + 'solutions=[' |
| + '{"name": "src",' |
| + ' "url": "' + self.svn_base + 'trunk/src"},' |
| + ']' |
| + ]) |
| + results = self.gclient(['sync', '--deps', 'mac']) |
| + self.assertEqual(results[2], 0, 'Sync failed!') |
| + |
| + # Verify that we have the expected svn checkout. |
| + results = self.gclient(['revinfo', '--deps', 'mac']) |
| + actual = results[0].splitlines() |
| + expected = [ |
| + 'src: %strunk/src' % self.svn_base, |
| + 'src/file/other: File("%strunk/other/DEPS")' % self.svn_base, |
| + 'src/other: %strunk/other' % self.svn_base, |
| + 'src/third_party/foo: %strunk/third_party/foo@1' % self.svn_base, |
| + ] |
| + self.assertEquals(actual, expected) |
| + |
| + # Change the desired checkout to git. |
| + self.gclient(['config', '--spec', |
| + 'solutions=[' |
| + '{"name": "src",' |
| + ' "url": "' + self.git_base + 'repo_1"},' |
| + ']' |
| + ]) |
| + |
| + # Verify that the sync succeeds with --force. |
| + results = self.gclient(['sync', '--deps', 'mac', '--force']) |
| + self.assertEqual(results[2], 0, 'Sync failed!') |
| + |
| + # Verify that we got the desired git checkout. |
| + results = self.gclient(['revinfo', '--deps', 'mac']) |
| + actual = results[0].splitlines() |
| + expected = [ |
| + 'src: %srepo_1' % self.git_base, |
| + 'src/repo2: %srepo_2@%s' % (self.git_base, |
| + self.githash('repo_2', 1)[:7]), |
| + 'src/repo2/repo_renamed: %srepo_3' % self.git_base, |
| + ] |
| + self.assertEquals(actual, expected) |
| + |
| + # Change the desired checkout back to svn. |
| + self.gclient(['config', '--spec', |
| + 'solutions=[' |
| + '{"name": "src",' |
| + ' "url": "' + self.svn_base + 'trunk/src"},' |
| + ']' |
| + ]) |
| + |
| + # Verify that the sync succeeds. |
| + results = self.gclient(['sync', '--deps', 'mac', '--force']) |
| + self.assertEqual(results[2], 0, 'Sync failed!') |
| + |
| + # Verify that we have the expected svn checkout. |
| + results = self.gclient(['revinfo', '--deps', 'mac']) |
| + actual = results[0].splitlines() |
| + expected = [ |
| + 'src: %strunk/src' % self.svn_base, |
| + 'src/file/other: File("%strunk/other/DEPS")' % self.svn_base, |
| + 'src/other: %strunk/other' % self.svn_base, |
| + 'src/third_party/foo: %strunk/third_party/foo@1' % self.svn_base, |
| + ] |
| + self.assertEquals(actual, expected) |
| + |
| class GClientSmokeFromCheckout(GClientSmokeBase): |
| # WebKit abuses this. It has a .gclient and a DEPS from a checkout. |