Chromium Code Reviews| Index: tests/gclient_smoketest.py |
| diff --git a/tests/gclient_smoketest.py b/tests/gclient_smoketest.py |
| index 4896e6633d982597811c5b75b00bf84821264c47..d467488079040c8037a093d058134ee35f80f392 100755 |
| --- a/tests/gclient_smoketest.py |
| +++ b/tests/gclient_smoketest.py |
| @@ -20,7 +20,9 @@ import unittest |
| ROOT_DIR = os.path.dirname(os.path.dirname(os.path.abspath(__file__))) |
| sys.path.insert(0, ROOT_DIR) |
| -from testing_support.fake_repos import join, write, FakeReposTestBase |
| +from testing_support.fake_repos import join, write |
| +from testing_support.fake_repos import FakeReposTestBase, FakeRepoTransitive |
| + |
| import gclient_utils |
| import subprocess2 |
| @@ -348,43 +350,6 @@ class GClientSmokeSVN(GClientSmokeBase): |
| tree['src/svn_hooked1'] = 'svn_hooked1' |
| self.assertTree(tree) |
| - def testSyncTransitive(self): |
| - # TODO(maruel): safesync. |
| - if not self.enabled: |
| - return |
| - self.gclient(['config', self.svn_base + 'trunk/src/']) |
| - |
| - # Make sure we can populate a new repository with --transitive. |
| - self.parseGclient( |
| - ['sync', '--transitive', '--revision', 'src@1', '--deps', 'mac', |
| - '--jobs', '1'], |
| - ['running', 'running', 'running', 'running']) |
| - tree = self.mangle_svn_tree( |
| - ('trunk/src@1', 'src'), |
| - ('trunk/third_party/foo@1', 'src/third_party/fpp'), |
| - ('trunk/other@1', 'src/other'), |
| - ('trunk/third_party/foo@1', 'src/third_party/prout')) |
| - |
| - # Get up to date, so we can test synching back. |
| - self.gclient(['sync', '--deps', 'mac', '--jobs', '1']) |
| - |
| - # Manually remove svn_hooked1 before synching to make sure it's not |
| - # recreated. |
| - os.remove(join(self.root_dir, 'src', 'svn_hooked1')) |
| - |
| - self.parseGclient( |
| - ['sync', '--transitive', '--revision', 'src@1', '--deps', 'mac', |
| - '--delete_unversioned_trees', '--jobs', '1'], |
| - ['running', 'running', 'running', 'running', 'deleting']) |
| - tree = self.mangle_svn_tree( |
| - ('trunk/src@1', 'src'), |
| - ('trunk/third_party/foo@1', 'src/third_party/fpp'), |
| - ('trunk/other@1', 'src/other'), |
| - ('trunk/third_party/foo@1', 'src/third_party/prout')) |
| - tree['src/file/other/DEPS'] = ( |
| - self.FAKE_REPOS.svn_revs[2]['trunk/other/DEPS']) |
| - self.assertTree(tree) |
| - |
| def testSyncIgnoredSolutionName(self): |
| """TODO(maruel): This will become an error soon.""" |
| if not self.enabled: |
| @@ -800,6 +765,60 @@ class GClientSmokeSVN(GClientSmokeBase): |
| gclient_utils.rmtree(join(third_party, 'foo', '.svn')) |
| self.assertEquals(0, self.gclient(cmd)[-1]) |
|
M-A Ruel
2013/04/16 20:28:04
2 lines
kustermann
2013/04/17 13:55:06
Done.
|
| +class GClientSmokeSVNTransitive(GClientSmokeBase): |
| + FAKE_REPOS_CLASS = FakeRepoTransitive |
| + |
| + def setUp(self): |
| + super(GClientSmokeSVNTransitive, self).setUp() |
| + self.enabled = self.FAKE_REPOS.set_up_svn() |
| + |
| + def testSyncTransitive(self): |
| + # TODO(maruel): safesync. |
| + if not self.enabled: |
| + return |
| + |
| + self.gclient(['config', self.svn_base + 'trunk/src/']) |
| + |
| + def test_case(parent, timestamp, fixed, output): |
| + # We check out revision 'parent' and expect the following: |
| + # - src/ is checked out at r'parent' |
| + # - src/same_repo is checked out at r'parent' (due to --transitive) |
| + # - src/same_repo_fixed is checked out at r'fixed' |
| + # - src/different_repo is checked out at r'timestamp' |
| + # (due to --transitive) |
| + # - src/different_repo_fixed is checked out at r'fixed' |
| + |
| + revisions = self.FAKE_REPOS.svn_revs |
| + self.parseGclient( |
| + ['sync', '--transitive', '--revision', 'src@%d' % parent, |
| + '--jobs', '1'], output) |
| + self.assertTree({ |
| + 'src/origin': revisions[parent]['trunk/src/origin'], |
| + 'src/DEPS': revisions[parent]['trunk/src/DEPS'], |
| + 'src/same_repo/origin': revisions[parent]['trunk/third_party/origin'], |
| + 'src/same_repo_fixed/origin': |
| + revisions[fixed]['trunk/third_party/origin'], |
| + 'src/different_repo/origin': |
| + revisions[timestamp]['trunk/third_party/origin'], |
| + 'src/different_repo_fixed/origin': |
| + revisions[fixed]['trunk/third_party/origin'], |
| + }) |
| + |
| + # Here are the test cases for checking out 'trunk/src' at r1, r2 and r3 |
| + # r1: Everything is normal |
| + test_case(parent=1, timestamp=1, fixed=1, |
| + output=['running', 'running', 'running', 'running', 'running']) |
| + # r2: Svn will scan from r1 upwards until it finds a revision matching the |
| + # given timestamp or it takes the next smallest one (which is r2 in this |
| + # case). |
| + test_case(parent=2, timestamp=2, fixed=1, |
| + output=['running', 'running', 'running']) |
| + # r3: Svn will scan from r1 upwards until it finds a revision matching the |
| + # given timestamp or it takes the next smallest one. Since |
| + # timestamp(r3) < timestamp(r2) svn will checkout r1. |
| + test_case(parent=3, timestamp=1, fixed=1, |
| + output=['running', 'running', 'running']) |
| + |
| class GClientSmokeGIT(GClientSmokeBase): |
| def setUp(self): |