Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(311)

Unified Diff: tests/gclient_smoketest.py

Issue 1158043003: Remove most svn related testing. (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/tools/depot_tools
Patch Set: Fix typo in doc Created 5 years, 7 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
« no previous file with comments | « tests/gclient_scm_test.py ('k') | tests/scm_unittest.py » ('j') | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
Index: tests/gclient_smoketest.py
diff --git a/tests/gclient_smoketest.py b/tests/gclient_smoketest.py
index 6a8e3aaebd26feaf902e4c7964b60ddfd9f496db..96b507959b9a947dd7d1b58f5d320abcecff6b59 100755
--- a/tests/gclient_smoketest.py
+++ b/tests/gclient_smoketest.py
@@ -20,20 +20,17 @@ 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
-from testing_support.fake_repos import FakeReposTestBase, FakeRepoTransitive, \
- FakeRepoSkiaDEPS, FakeRepoBlinkDEPS
-
import gclient_utils
import scm as gclient_scm
-
import subprocess2
+from testing_support import fake_repos
+from testing_support.fake_repos import join, write
GCLIENT_PATH = os.path.join(ROOT_DIR, 'gclient')
COVERAGE = False
-class GClientSmokeBase(FakeReposTestBase):
+class GClientSmokeBase(fake_repos.FakeReposTestBase):
def setUp(self):
super(GClientSmokeBase, self).setUp()
# Make sure it doesn't try to auto update when testing!
@@ -301,544 +298,6 @@ class GClientSmoke(GClientSmokeBase):
self.checkBlock(res[0], [('running', deps), ('running', src)])
-class GClientSmokeSVN(GClientSmokeBase):
- def setUp(self):
- super(GClientSmokeSVN, self).setUp()
- self.enabled = self.FAKE_REPOS.set_up_svn()
-
- def testSync(self):
- # TODO(maruel): safesync.
- if not self.enabled:
- return
- self.gclient(['config', self.svn_base + 'trunk/src/'])
- # Test unversioned checkout.
- self.parseGclient(['sync', '--deps', 'mac', '--jobs', '1'],
- ['running', 'running',
- # This is due to the way svn update is called for a
- # single file when File() is used in a DEPS file.
- ('running', os.path.join(self.root_dir, 'src', 'file', 'other')),
- 'running', 'running', 'running', 'running'])
- tree = self.mangle_svn_tree(
- ('trunk/src@2', 'src'),
- ('trunk/third_party/foo@1', 'src/third_party/foo'),
- ('trunk/other@2', 'src/other'))
- tree['src/file/other/DEPS'] = (
- self.FAKE_REPOS.svn_revs[2]['trunk/other/DEPS'])
- tree['src/svn_hooked1'] = 'svn_hooked1'
- self.assertTree(tree)
-
- # Manually remove svn_hooked1 before synching to make sure it's not
- # recreated.
- os.remove(join(self.root_dir, 'src', 'svn_hooked1'))
-
- # Test incremental versioned sync: sync backward.
- self.parseGclient(
- ['sync', '--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@2', 'src/third_party/fpp'),
- ('trunk/other@1', 'src/other'),
- ('trunk/third_party/foo@2', 'src/third_party/prout'))
- tree['src/file/other/DEPS'] = (
- self.FAKE_REPOS.svn_revs[2]['trunk/other/DEPS'])
- self.assertTree(tree)
- # Test incremental sync: delete-unversioned_trees isn't there.
- self.parseGclient(['sync', '--deps', 'mac', '--jobs', '1'],
- ['running', 'running', 'running', 'running', 'running'])
- tree = self.mangle_svn_tree(
- ('trunk/src@2', 'src'),
- ('trunk/third_party/foo@2', 'src/third_party/fpp'),
- ('trunk/third_party/foo@1', 'src/third_party/foo'),
- ('trunk/other@2', 'src/other'),
- ('trunk/third_party/foo@2', 'src/third_party/prout'))
- tree['src/file/other/DEPS'] = (
- self.FAKE_REPOS.svn_revs[2]['trunk/other/DEPS'])
- tree['src/svn_hooked1'] = 'svn_hooked1'
- self.assertTree(tree)
-
- def testSyncIgnoredSolutionName(self):
- """TODO(maruel): This will become an error soon."""
- if not self.enabled:
- return
- self.gclient(['config', self.svn_base + 'trunk/src/'])
- results = self.gclient(
- ['sync', '--deps', 'mac', '-r', 'invalid@1', '--jobs', '1'])
- self.checkBlock(results[0], [
- 'running', 'running',
- # This is due to the way svn update is called for a single file when
- # File() is used in a DEPS file.
- ('running', os.path.join(self.root_dir, 'src', 'file', 'other')),
- 'running', 'running', 'running', 'running'])
- self.checkString('Please fix your script, having invalid --revision flags '
- 'will soon considered an error.\n', results[1])
- self.assertEquals(0, results[2])
- tree = self.mangle_svn_tree(
- ('trunk/src@2', 'src'),
- ('trunk/third_party/foo@1', 'src/third_party/foo'),
- ('trunk/other@2', 'src/other'))
- tree['src/file/other/DEPS'] = (
- self.FAKE_REPOS.svn_revs[2]['trunk/other/DEPS'])
- tree['src/svn_hooked1'] = 'svn_hooked1'
- self.assertTree(tree)
-
- def testSyncNoSolutionName(self):
- # When no solution name is provided, gclient uses the first solution listed.
- if not self.enabled:
- return
- self.gclient(['config', self.svn_base + 'trunk/src/'])
- self.parseGclient(['sync', '--deps', 'mac', '-r', '1', '--jobs', '1'],
- ['running', 'running', 'running', 'running'])
- tree = self.mangle_svn_tree(
- ('trunk/src@1', 'src'),
- ('trunk/third_party/foo@2', 'src/third_party/fpp'),
- ('trunk/other@1', 'src/other'),
- ('trunk/third_party/foo@2', 'src/third_party/prout'))
- self.assertTree(tree)
-
- def testSyncJobs(self):
- if not self.enabled:
- return
- # TODO(maruel): safesync.
- self.gclient(['config', self.svn_base + 'trunk/src/'])
- # Test unversioned checkout.
- # Use --jobs 1 otherwise the order is not deterministic.
- self.parseGclient(
- ['sync', '--deps', 'mac', '--jobs', '1'],
- [
- 'running',
- 'running',
- # This is due to the way svn update is called for a
- # single file when File() is used in a DEPS file.
- ('running', os.path.join(self.root_dir, 'src', 'file', 'other')),
- 'running',
- 'running',
- 'running',
- 'running',
- ],
- untangle=True)
- tree = self.mangle_svn_tree(
- ('trunk/src@2', 'src'),
- ('trunk/third_party/foo@1', 'src/third_party/foo'),
- ('trunk/other@2', 'src/other'))
- tree['src/file/other/DEPS'] = (
- self.FAKE_REPOS.svn_revs[2]['trunk/other/DEPS'])
- tree['src/svn_hooked1'] = 'svn_hooked1'
- self.assertTree(tree)
-
- # Manually remove svn_hooked1 before synching to make sure it's not
- # recreated.
- os.remove(join(self.root_dir, 'src', 'svn_hooked1'))
-
- # Test incremental versioned sync: sync backward.
- self.parseGclient(
- ['sync', '--revision', 'src@1', '--deps', 'mac',
- '--delete_unversioned_trees', '--jobs', '8'],
- ['running', 'running', 'running', 'running', 'deleting'],
- untangle=True)
- tree = self.mangle_svn_tree(
- ('trunk/src@1', 'src'),
- ('trunk/third_party/foo@2', 'src/third_party/fpp'),
- ('trunk/other@1', 'src/other'),
- ('trunk/third_party/foo@2', 'src/third_party/prout'))
- tree['src/file/other/DEPS'] = (
- self.FAKE_REPOS.svn_revs[2]['trunk/other/DEPS'])
- self.assertTree(tree)
- # Test incremental sync: delete-unversioned_trees isn't there.
- self.parseGclient(['sync', '--deps', 'mac', '--jobs', '8'],
- ['running', 'running', 'running', 'running', 'running'],
- untangle=True)
- tree = self.mangle_svn_tree(
- ('trunk/src@2', 'src'),
- ('trunk/third_party/foo@2', 'src/third_party/fpp'),
- ('trunk/third_party/foo@1', 'src/third_party/foo'),
- ('trunk/other@2', 'src/other'),
- ('trunk/third_party/foo@2', 'src/third_party/prout'))
- tree['src/file/other/DEPS'] = (
- self.FAKE_REPOS.svn_revs[2]['trunk/other/DEPS'])
- tree['src/svn_hooked1'] = 'svn_hooked1'
- self.assertTree(tree)
-
- def testSyncCustomDeps(self):
- if not self.enabled:
- return
- out = (
- 'solutions = [\n'
- ' { "name" : "src",\n'
- ' "url" : "%(base)s/src",\n'
- ' "custom_deps" : {\n'
- # Remove 2 deps, change 1, add 1.
- ' "src/other": None,\n'
- ' "src/third_party/foo": \'%(base)s/third_party/prout\',\n'
- ' "src/file/other": None,\n'
- ' "new_deps": "/trunk/src/third_party",\n'
- ' },\n'
- ' "safesync_url": "",\n'
- ' },\n'
- ']\n\n' %
- { 'base': self.svn_base + 'trunk' })
- fileobj = open(os.path.join(self.root_dir, '.gclient'), 'w')
- fileobj.write(out)
- fileobj.close()
- self.parseGclient(
- ['sync', '--deps', 'mac', '--jobs', '1'],
- ['running', 'running', 'running', 'running'],
- untangle=True)
- tree = self.mangle_svn_tree(
- ('trunk/src@2', 'src'),
- ('trunk/third_party/prout@2', 'src/third_party/foo'),
- ('trunk/src/third_party@2', 'new_deps'))
- tree['src/svn_hooked1'] = 'svn_hooked1'
- self.assertTree(tree)
-
- def testSyncCustomDepsNoDeps(self):
- if not self.enabled:
- return
- out = (
- 'solutions = [\n'
- # This directory has no DEPS file.
- ' { "name" : "src/third_party",\n'
- ' "url" : "%(base)s/src/third_party",\n'
- ' "custom_deps" : {\n'
- # Add 1.
- ' "src/other": \'/trunk/other\',\n'
- ' },\n'
- ' "safesync_url": "",\n'
- ' },\n'
- ']\n\n' %
- { 'base': self.svn_base + 'trunk' })
- fileobj = open(os.path.join(self.root_dir, '.gclient'), 'w')
- fileobj.write(out)
- fileobj.close()
- self.parseGclient(
- ['sync', '--deps', 'mac', '--jobs', '1'],
- ['running', 'running'],
- untangle=True)
- tree = self.mangle_svn_tree(
- ('trunk/src/third_party@2', 'src/third_party'),
- ('trunk/other@2', 'src/other'))
- self.assertTree(tree)
-
- def testRevertAndStatus(self):
- if not self.enabled:
- return
- self.gclient(['config', self.svn_base + 'trunk/src/'])
- # Tested in testSync.
- self.gclient(['sync', '--deps', 'mac'])
- write(join(self.root_dir, 'src', 'other', 'hi'), 'Hey!')
-
- out = self.parseGclient(['status', '--deps', 'mac', '--jobs', '1'],
- [['running', join(self.root_dir, 'src')],
- ['running', join(self.root_dir, 'src', 'other')]])
- out = self.svnBlockCleanup(out)
- self.checkString('file', out[0][1])
- self.checkString('other', out[0][2])
- self.checkString('svn_hooked1', out[0][3])
- self.checkString(join('third_party', 'foo'), out[0][4])
- self.checkString('hi', out[1][1])
- self.assertEquals(5, len(out[0]))
- self.assertEquals(2, len(out[1]))
-
- # Revert implies --force implies running hooks without looking at pattern
- # matching.
- results = self.gclient(['revert', '--deps', 'mac', '--jobs', '1'])
- out = self.splitBlock(results[0])
- # src, src/other is missing, src/other, src/third_party/foo is missing,
- # src/third_party/foo, 2 svn hooks, 3 related to File().
- self.assertEquals( 8, len(out))
- self.checkString('', results[1])
- self.assertEquals(0, results[2])
- tree = self.mangle_svn_tree(
- ('trunk/src@2', 'src'),
- ('trunk/third_party/foo@1', 'src/third_party/foo'),
- ('trunk/other@2', 'src/other'))
- tree['src/file/other/DEPS'] = (
- self.FAKE_REPOS.svn_revs[2]['trunk/other/DEPS'])
- tree['src/svn_hooked1'] = 'svn_hooked1'
- tree['src/svn_hooked2'] = 'svn_hooked2'
- self.assertTree(tree)
-
- out = self.parseGclient(['status', '--deps', 'mac', '--jobs', '1'],
- [['running', join(self.root_dir, 'src')]])
- out = self.svnBlockCleanup(out)
- self.checkString('file', out[0][1])
- self.checkString('other', out[0][2])
- self.checkString('svn_hooked1', out[0][3])
- self.checkString('svn_hooked2', out[0][4])
- self.checkString(join('third_party', 'foo'), out[0][5])
- self.assertEquals(6, len(out[0]))
- self.assertEquals(1, len(out))
-
- def testRevertAndStatusDepsOs(self):
- if not self.enabled:
- return
- self.gclient(['config', self.svn_base + 'trunk/src/'])
- # Tested in testSync.
- self.gclient(['sync', '--deps', 'mac', '--revision', 'src@1'])
- write(join(self.root_dir, 'src', 'other', 'hi'), 'Hey!')
-
- # Without --verbose, gclient won't output the directories without
- # modification.
- out = self.parseGclient(['status', '--deps', 'mac', '--jobs', '1'],
- [['running', join(self.root_dir, 'src')],
- ['running', join(self.root_dir, 'src', 'other')]])
- out = self.svnBlockCleanup(out)
- self.checkString('other', out[0][1])
- self.checkString(join('third_party', 'fpp'), out[0][2])
- self.checkString(join('third_party', 'prout'), out[0][3])
- self.checkString('hi', out[1][1])
- self.assertEquals(4, len(out[0]))
- self.assertEquals(2, len(out[1]))
-
- # So verify it works with --verbose.
- out = self.parseGclient(
- ['status', '--deps', 'mac', '--verbose', '--jobs', '1'],
- [['running', join(self.root_dir, 'src')],
- ['running', join(self.root_dir, 'src', 'other')],
- ['running', join(self.root_dir, 'src', 'third_party', 'fpp')],
- ['running', join(self.root_dir, 'src', 'third_party', 'prout')]])
- out = self.svnBlockCleanup(out)
- self.checkString('other', out[0][5])
- self.checkString(join('third_party', 'fpp'), out[0][7])
- self.checkString(join('third_party', 'prout'), out[0][8])
- self.checkString('hi', out[1][5])
- self.assertEquals(9, len(out[0]))
- self.assertEquals(7, len(out[1]))
- self.assertEquals(6, len(out[2]))
- self.assertEquals(6, len(out[3]))
- self.assertEquals(4, len(out))
-
- # Revert implies --force implies running hooks without looking at pattern
- # matching.
- # TODO(maruel): In general, gclient revert output is wrong. It should output
- # the file list after some ___ running 'svn status'
- results = self.gclient(['revert', '--deps', 'mac', '--jobs', '1'])
- out = self.splitBlock(results[0])
- self.assertEquals(4, len(out))
- self.checkString('', results[1])
- self.assertEquals(0, results[2])
- tree = self.mangle_svn_tree(
- ('trunk/src@1', 'src'),
- ('trunk/third_party/foo@2', 'src/third_party/fpp'),
- ('trunk/other@1', 'src/other'),
- ('trunk/third_party/prout@2', 'src/third_party/prout'))
- self.assertTree(tree)
-
- out = self.parseGclient(['status', '--deps', 'mac', '--jobs', '1'],
- [['running', join(self.root_dir, 'src')]])
- out = self.svnBlockCleanup(out)
- self.checkString('other', out[0][1])
- self.checkString(join('third_party', 'fpp'), out[0][2])
- self.checkString(join('third_party', 'prout'), out[0][3])
- self.assertEquals(4, len(out[0]))
-
- def testRunHooks(self):
- if not self.enabled:
- return
- self.gclient(['config', self.svn_base + 'trunk/src/'])
- self.gclient(['sync', '--deps', 'mac'])
- out = self.parseGclient(['runhooks', '--deps', 'mac'],
- ['running', 'running'])
- self.checkString(1, len(out[0]))
- self.checkString(1, len(out[1]))
-
- def testRunHooksDepsOs(self):
- if not self.enabled:
- return
- self.gclient(['config', self.svn_base + 'trunk/src/'])
- self.gclient(['sync', '--deps', 'mac', '--revision', 'src@1'])
- out = self.parseGclient(['runhooks', '--deps', 'mac'], [])
- self.assertEquals([], out)
-
- def testRevInfo(self):
- if not self.enabled:
- return
- self.gclient(['config', self.svn_base + 'trunk/src/'])
- self.gclient(['sync', '--deps', 'mac'])
- results = self.gclient(['revinfo', '--deps', 'mac'])
- out = ('src: %(base)s/src\n'
- 'src/file/other: File("%(base)s/other/DEPS")\n'
- 'src/other: %(base)s/other\n'
- 'src/third_party/foo: %(base)s/third_party/foo@1\n' %
- { 'base': self.svn_base + 'trunk' })
- self.check((out, '', 0), results)
- results = self.gclient(['revinfo', '--deps', 'mac', '--actual'])
- out = ('src: %(base)s/src@2\n'
- 'src/file/other: %(base)s/other/DEPS@2\n'
- 'src/other: %(base)s/other@2\n'
- 'src/third_party/foo: %(base)s/third_party/foo@1\n' %
- { 'base': self.svn_base + 'trunk' })
- self.check((out, '', 0), results)
- results = self.gclient(['revinfo', '--deps', 'mac', '--snapshot'])
- out = ('# Snapshot generated with gclient revinfo --snapshot\n'
- 'solutions = [\n'
- ' { "name" : "src",\n'
- ' "url" : "%(base)s/src",\n'
- ' "deps_file" : "DEPS",\n'
- ' "managed" : True,\n'
- ' "custom_deps" : {\n'
- ' "foo/bar": None,\n'
- ' "invalid": None,\n'
- ' "src/file/other": \'%(base)s/other/DEPS@2\',\n'
- ' "src/other": \'%(base)s/other@2\',\n'
- ' "src/third_party/foo": '
- '\'%(base)s/third_party/foo@1\',\n'
- ' },\n'
- ' "safesync_url": "",\n'
- ' },\n'
- ']\n\n' %
- { 'base': self.svn_base + 'trunk' })
- self.check((out, '', 0), results)
-
- def testRevInfoAltDeps(self):
- if not self.enabled:
- return
- self.gclient(['config', self.svn_base + 'trunk/src/', '--deps-file',
- 'DEPS.alt'])
- self.gclient(['sync'])
- results = self.gclient(['revinfo', '--snapshot'])
- out = ('# Snapshot generated with gclient revinfo --snapshot\n'
- 'solutions = [\n'
- ' { "name" : "src",\n'
- ' "url" : "%(base)s/src",\n'
- ' "deps_file" : "DEPS.alt",\n'
- ' "managed" : True,\n'
- ' "custom_deps" : {\n'
- ' "foo/bar": None,\n'
- ' "invalid": None,\n'
- ' "src/other2": \'%(base)s/other@2\',\n'
- ' },\n'
- ' "safesync_url": "",\n'
- ' },\n'
- ']\n\n' %
- { 'base': self.svn_base + 'trunk' })
- self.check((out, '', 0), results)
-
-
- def testWrongDirectory(self):
- # Check that we're not using a .gclient configuration which only talks
- # about a subdirectory src when we're in a different subdirectory src-other.
- if not self.enabled:
- return
- self.gclient(['config', self.svn_base + 'trunk/src/'])
- self.gclient(['sync'])
- other_src = join(self.root_dir, 'src-other')
- os.mkdir(other_src)
- res = ('', 'Error: client not configured; see \'gclient config\'\n', 1)
- self.check(res, self.gclient(['status'], other_src))
-
- def testCorrectDirectory(self):
- # Check that when we're in the subdirectory src, the .gclient configuration
- # is used.
- if not self.enabled:
- return
- self.gclient(['config', self.svn_base + 'trunk/src/'])
- self.gclient(['sync'])
- src = join(self.root_dir, 'src')
- res = self.gclient(['status', '--jobs', '1'], src)
- self.checkBlock(res[0], [('running', src)])
-
- def testInitialCheckoutNotYetDone(self):
- # Check that gclient can be executed when the initial checkout hasn't been
- # done yet.
- if not self.enabled:
- return
- self.gclient(['config', self.svn_base + 'trunk/src/'])
- self.parseGclient(
- ['sync', '--jobs', '1'],
- ['running', 'running',
- # This is due to the way svn update is called for a
- # single file when File() is used in a DEPS file.
- ('running', os.path.join(self.root_dir, 'src', 'file', 'other')),
- 'running', 'running', 'running', 'running'])
-
- def testInitialCheckoutFailed(self):
- # Check that gclient can be executed from an arbitrary sub directory if the
- # initial checkout has failed.
- if not self.enabled:
- return
- self.gclient(['config', self.svn_base + 'trunk/src/'])
- self.gclient(['sync'])
- # Cripple the checkout.
- os.remove(join(self.root_dir, '.gclient_entries'))
- src = join(self.root_dir, 'src')
- res = self.gclient(['sync', '--jobs', '1'], src)
- self.checkBlock(res[0],
- ['running', 'running', 'running'])
-
- def testUnversionedRepository(self):
- # Check that gclient automatically deletes crippled SVN repositories.
- if not self.enabled:
- return
- self.gclient(['config', self.svn_base + 'trunk/src/'])
- cmd = ['sync', '--jobs', '1', '--delete_unversioned_trees', '--reset']
- self.assertEquals(0, self.gclient(cmd)[-1])
- third_party = join(self.root_dir, 'src', 'third_party')
- subprocess2.check_call(['svn', 'propset', '-q', 'svn:ignore', 'foo', '.'],
- cwd=third_party)
-
- # 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])
-
-
-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):
- 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.
- # This happens often on http://googlecode.com but is unexpected to happen
- # with svnserve (unless you manually change 'svn:date')
- test_case(parent=3, timestamp=1, fixed=1,
- output=['running', 'running', 'running'])
-
-
class GClientSmokeGIT(GClientSmokeBase):
def setUp(self):
super(GClientSmokeGIT, self).setUp()
@@ -1220,247 +679,15 @@ class GClientSmokeGITMutates(GClientSmokeBase):
self.assertTrue(os.path.exists(join(repo2_root, 'last_file')))
-class GClientSmokeBoth(GClientSmokeBase):
- def setUp(self):
- super(GClientSmokeBoth, self).setUp()
- self.enabled = self.FAKE_REPOS.set_up_svn() and self.FAKE_REPOS.set_up_git()
-
- def testMultiSolutions(self):
- if not self.enabled:
- return
- self.gclient(['config', '--spec',
- 'solutions=['
- '{"name": "src",'
- ' "url": "' + self.svn_base + 'trunk/src/"},'
- '{"name": "src-git",'
- '"url": "' + self.git_base + 'repo_1"}]'])
- self.parseGclient(['sync', '--deps', 'mac', '--jobs', '1'],
- ['running', 'running',
- # This is due to the way svn update is called for a single
- # file when File() is used in a DEPS file.
- ('running', self.root_dir + '/src/file/other'),
- 'running', 'running', 'running', 'running',
- 'running', 'running'])
- tree = self.mangle_git_tree(('repo_1@2', 'src-git'),
- ('repo_2@1', 'src/repo2'),
- ('repo_3@2', 'src/repo2/repo_renamed'))
- tree.update(self.mangle_svn_tree(
- ('trunk/src@2', 'src'),
- ('trunk/third_party/foo@1', 'src/third_party/foo'),
- ('trunk/other@2', 'src/other')))
- tree['src/file/other/DEPS'] = (
- self.FAKE_REPOS.svn_revs[2]['trunk/other/DEPS'])
- tree['src/git_hooked1'] = 'git_hooked1'
- tree['src/git_hooked2'] = 'git_hooked2'
- tree['src/svn_hooked1'] = 'svn_hooked1'
- self.assertTree(tree)
-
- def testMultiSolutionsJobs(self):
- if not self.enabled:
- return
- self.gclient(['config', '--spec',
- 'solutions=['
- '{"name": "src",'
- ' "url": "' + self.svn_base + 'trunk/src/"},'
- '{"name": "src-git",'
- '"url": "' + self.git_base + 'repo_1"}]'])
- # There is no guarantee that the ordering will be consistent.
- (stdout, stderr, returncode) = self.gclient(
- ['sync', '--deps', 'mac', '--jobs', '8'])
- stdout = self.untangle(stdout)
- self.checkString('', stderr)
- self.assertEquals(0, returncode)
- results = self.splitBlock(stdout)
- self.assertEquals(9, len(results))
- tree = self.mangle_git_tree(('repo_1@2', 'src-git'),
- ('repo_2@1', 'src/repo2'),
- ('repo_3@2', 'src/repo2/repo_renamed'))
- tree.update(self.mangle_svn_tree(
- ('trunk/src@2', 'src'),
- ('trunk/third_party/foo@1', 'src/third_party/foo'),
- ('trunk/other@2', 'src/other')))
- tree['src/file/other/DEPS'] = (
- self.FAKE_REPOS.svn_revs[2]['trunk/other/DEPS'])
- tree['src/git_hooked1'] = 'git_hooked1'
- tree['src/git_hooked2'] = 'git_hooked2'
- tree['src/svn_hooked1'] = 'svn_hooked1'
- self.assertTree(tree)
-
- def testMultiSolutionsMultiRev(self):
- if not self.enabled:
- return
- self.gclient(['config', '--spec',
- 'solutions=['
- '{"name": "src",'
- ' "url": "' + self.svn_base + 'trunk/src/"},'
- '{"name": "src-git",'
- '"url": "' + self.git_base + 'repo_1"}]'])
- self.parseGclient(
- ['sync', '--deps', 'mac', '--jobs', '1', '--revision', '1',
- '-r', 'src-git@' + self.githash('repo_1', 1)],
- ['running', 'running', 'running', 'running'],
- expected_stderr=
- 'You must specify the full solution name like --revision src@1\n'
- 'when you have multiple solutions setup in your .gclient file.\n'
- 'Other solutions present are: src-git.\n')
- tree = self.mangle_git_tree(('repo_1@1', 'src-git'),
- ('repo_2@2', 'src/repo2'),
- ('repo_3@1', 'src/repo2/repo3'),
- ('repo_4@2', 'src/repo4'))
- tree.update(self.mangle_svn_tree(
- ('trunk/src@1', 'src'),
- ('trunk/third_party/foo@2', 'src/third_party/fpp'),
- ('trunk/other@1', 'src/other'),
- ('trunk/third_party/foo@2', 'src/third_party/prout')))
- self.assertTree(tree)
-
- def testRevInfo(self):
- if not self.enabled:
- return
- self.gclient(['config', '--spec',
- 'solutions=['
- '{"name": "src",'
- ' "url": "' + self.svn_base + 'trunk/src/"},'
- '{"name": "src-git",'
- '"url": "' + self.git_base + 'repo_1"}]'])
- self.gclient(['sync', '--deps', 'mac'])
- results = self.gclient(['revinfo', '--deps', 'mac'])
- out = ('src: %(svn_base)s/src/\n'
- 'src-git: %(git_base)srepo_1\n'
- 'src/file/other: File("%(svn_base)s/other/DEPS")\n'
- 'src/other: %(svn_base)s/other\n'
- 'src/repo2: %(git_base)srepo_2@%(hash2)s\n'
- 'src/repo2/repo_renamed: %(git_base)srepo_3\n'
- 'src/third_party/foo: %(svn_base)s/third_party/foo@1\n') % {
- 'svn_base': self.svn_base + 'trunk',
- 'git_base': self.git_base,
- 'hash2': self.githash('repo_2', 1)[:7],
- }
- self.check((out, '', 0), results)
- results = self.gclient(['revinfo', '--deps', 'mac', '--actual'])
- out = ('src: %(svn_base)s/src/@2\n'
- 'src-git: %(git_base)srepo_1@%(hash1)s\n'
- 'src/file/other: %(svn_base)s/other/DEPS@2\n'
- 'src/other: %(svn_base)s/other@2\n'
- 'src/repo2: %(git_base)srepo_2@%(hash2)s\n'
- 'src/repo2/repo_renamed: %(git_base)srepo_3@%(hash3)s\n'
- 'src/third_party/foo: %(svn_base)s/third_party/foo@1\n') % {
- 'svn_base': self.svn_base + 'trunk',
- 'git_base': self.git_base,
- 'hash1': self.githash('repo_1', 2),
- 'hash2': self.githash('repo_2', 1),
- 'hash3': self.githash('repo_3', 2),
- }
- self.check((out, '', 0), results)
-
- def testRecurse(self):
- if not self.enabled:
- return
- self.gclient(['config', '--spec',
- 'solutions=['
- '{"name": "src",'
- ' "url": "' + self.svn_base + 'trunk/src/"},'
- '{"name": "src-git",'
- '"url": "' + self.git_base + 'repo_1"}]'])
- self.gclient(['sync', '--deps', 'mac'])
- results = self.gclient(['recurse', '-j1', 'sh', '-c',
- 'echo $GCLIENT_SCM,$GCLIENT_URL,`pwd`'])
-
- entries = [tuple(line.split(','))
- for line in results[0].strip().split('\n')]
- logging.debug(entries)
-
- bases = {'svn': self.svn_base, 'git': self.git_base}
- expected_source = [
- ('svn', 'trunk/src/', 'src'),
- ('git', 'repo_1', 'src-git'),
- ('svn', 'trunk/other', 'src/other'),
- ('git', 'repo_2@' + self.githash('repo_2', 1)[:7], 'src/repo2'),
- ('git', 'repo_3', 'src/repo2/repo_renamed'),
- ('svn', 'trunk/third_party/foo@1', 'src/third_party/foo'),
- ]
- expected = [(scm, bases[scm] + url, os.path.join(self.root_dir, path))
- for (scm, url, path) in expected_source]
-
- self.assertEquals(sorted(entries), sorted(expected))
-
-
class SkiaDEPSTransitionSmokeTest(GClientSmokeBase):
"""Simulate the behavior of bisect bots as they transition across the Skia
DEPS change."""
- FAKE_REPOS_CLASS = FakeRepoSkiaDEPS
+ FAKE_REPOS_CLASS = fake_repos.FakeRepoSkiaDEPS
def setUp(self):
super(SkiaDEPSTransitionSmokeTest, self).setUp()
- self.enabled = self.FAKE_REPOS.set_up_git() and self.FAKE_REPOS.set_up_svn()
-
- def testSkiaDEPSChangeSVN(self):
- if not self.enabled:
- return
-
- # Create an initial checkout:
- # - Single checkout at the root.
- # - Multiple checkouts in a shared subdirectory.
- self.gclient(['config', '--spec',
- 'solutions=['
- '{"name": "src",'
- ' "url": "' + self.svn_base + 'trunk/src/",'
- '}]'])
-
- checkout_path = os.path.join(self.root_dir, 'src')
- skia = os.path.join(checkout_path, 'third_party', 'skia')
- skia_gyp = os.path.join(skia, 'gyp')
- skia_include = os.path.join(skia, 'include')
- skia_src = os.path.join(skia, 'src')
-
- gyp_svn_url = self.svn_base + 'skia/gyp'
- include_svn_url = self.svn_base + 'skia/include'
- src_svn_url = self.svn_base + 'skia/src'
- skia_git_url = self.git_base + 'repo_1'
-
- # Initial sync. Verify that we get the expected checkout.
- res = self.gclient(['sync', '--deps', 'mac', '--revision', 'src@2'])
- self.assertEqual(res[2], 0, 'Initial sync failed.')
- self.assertEqual(gclient_scm.SVN.CaptureLocalInfo([], skia_gyp)['URL'],
- gyp_svn_url)
- self.assertEqual(gclient_scm.SVN.CaptureLocalInfo([], skia_include)['URL'],
- include_svn_url)
- self.assertEqual(gclient_scm.SVN.CaptureLocalInfo([], skia_src)['URL'],
- src_svn_url)
-
- # Verify that the sync succeeds. Verify that we have the expected merged
- # checkout.
- res = self.gclient(['sync', '--deps', 'mac', '--revision', 'src@3'])
- self.assertEqual(res[2], 0, 'DEPS change sync failed.')
- self.assertEqual(gclient_scm.GIT.Capture(['config', 'remote.origin.url'],
- skia), skia_git_url)
-
- # Sync again. Verify that we still have the expected merged checkout.
- res = self.gclient(['sync', '--deps', 'mac', '--revision', 'src@3'])
- self.assertEqual(res[2], 0, 'Subsequent sync failed.')
- self.assertEqual(gclient_scm.GIT.Capture(['config', 'remote.origin.url'],
- skia), skia_git_url)
-
- # Sync back to the original DEPS. Verify that we get the original structure.
- res = self.gclient(['sync', '--deps', 'mac', '--revision', 'src@2'])
- self.assertEqual(res[2], 0, 'Reverse sync failed.')
- self.assertEqual(gclient_scm.SVN.CaptureLocalInfo([], skia_gyp)['URL'],
- gyp_svn_url)
- self.assertEqual(gclient_scm.SVN.CaptureLocalInfo([], skia_include)['URL'],
- include_svn_url)
- self.assertEqual(gclient_scm.SVN.CaptureLocalInfo([], skia_src)['URL'],
- src_svn_url)
-
- # Sync again. Verify that we still have the original structure.
- res = self.gclient(['sync', '--deps', 'mac', '--revision', 'src@2'])
- self.assertEqual(res[2], 0, 'Subsequent sync #2 failed.')
- self.assertEqual(gclient_scm.SVN.CaptureLocalInfo([], skia_gyp)['URL'],
- gyp_svn_url)
- self.assertEqual(gclient_scm.SVN.CaptureLocalInfo([], skia_include)['URL'],
- include_svn_url)
- self.assertEqual(gclient_scm.SVN.CaptureLocalInfo([], skia_src)['URL'],
- src_svn_url)
+ self.enabled = self.FAKE_REPOS.set_up_git()
def testSkiaDEPSChangeGit(self):
if not self.enabled:
@@ -1542,7 +769,7 @@ class BlinkDEPSTransitionSmokeTest(GClientSmokeBase):
"""Simulate the behavior of bisect bots as they transition across the Blink
DEPS change."""
- FAKE_REPOS_CLASS = FakeRepoBlinkDEPS
+ FAKE_REPOS_CLASS = fake_repos.FakeRepoBlinkDEPS
def setUp(self):
super(BlinkDEPSTransitionSmokeTest, self).setUp()
@@ -1673,103 +900,6 @@ class BlinkDEPSTransitionSmokeTest(GClientSmokeBase):
['git', 'show-ref', '-q', '--verify', 'refs/heads/foo'], cwd=self.blink)
-class GClientSmokeFromCheckout(GClientSmokeBase):
- # WebKit abuses this. It has a .gclient and a DEPS from a checkout.
- def setUp(self):
- super(GClientSmokeFromCheckout, self).setUp()
- self.enabled = self.FAKE_REPOS.set_up_svn()
- os.rmdir(self.root_dir)
- if self.enabled:
- usr, pwd = self.FAKE_REPOS.USERS[0]
- subprocess2.check_call(
- ['svn', 'checkout', self.svn_base + '/trunk/webkit',
- self.root_dir, '-q',
- '--non-interactive', '--no-auth-cache',
- '--username', usr, '--password', pwd])
-
- def testSync(self):
- if not self.enabled:
- return
- self.parseGclient(['sync', '--deps', 'mac', '--jobs', '1'],
- ['running', 'running'])
- tree = self.mangle_svn_tree(
- ('trunk/webkit@2', ''),
- ('trunk/third_party/foo@1', 'foo/bar'))
- self.assertTree(tree)
-
- def testRevertAndStatus(self):
- if not self.enabled:
- return
- self.gclient(['sync'])
-
- # TODO(maruel): This is incorrect.
- out = self.parseGclient(['status', '--deps', 'mac', '--jobs', '1'], [])
-
- # Revert implies --force implies running hooks without looking at pattern
- # matching.
- results = self.gclient(['revert', '--deps', 'mac', '--jobs', '1'])
- out = self.splitBlock(results[0])
- self.assertEquals(2, len(out))
- # This value varies depending on the version of svn being run.
- # New vesions (the one in Trust) print "Updating '.':" and "At revision 1.".
- # Older versions (the one in Precise) print just "At revision 1.".
- #self.assertEquals(3, len(out[0]))
- self.assertEquals(2, len(out[1]))
- self.checkString('foo', out[1][1])
- self.checkString('', results[1])
- self.assertEquals(0, results[2])
- tree = self.mangle_svn_tree(
- ('trunk/webkit@2', ''),
- ('trunk/third_party/foo@1', 'foo/bar'))
- self.assertTree(tree)
-
- # TODO(maruel): This is incorrect.
- out = self.parseGclient(['status', '--deps', 'mac'], [])
-
- def testRunHooks(self):
- if not self.enabled:
- return
- # Hooks aren't really tested for now since there is no hook defined.
- self.gclient(['sync', '--deps', 'mac'])
- out = self.parseGclient(['runhooks', '--deps', 'mac'], ['running'])
- self.assertEquals(1, len(out))
- self.assertEquals(2, len(out[0]))
- self.assertEquals(3, len(out[0][0]))
- self.checkString('foo', out[0][1])
- tree = self.mangle_svn_tree(
- ('trunk/webkit@2', ''),
- ('trunk/third_party/foo@1', 'foo/bar'))
- self.assertTree(tree)
-
- def testRevInfo(self):
- if not self.enabled:
- return
- self.gclient(['sync', '--deps', 'mac'])
- results = self.gclient(['revinfo', '--deps', 'mac'])
- expected = (
- './: None\nfoo/bar: %strunk/third_party/foo@1\n' % self.svn_base,
- '', 0)
- self.check(expected, results)
- # TODO(maruel): To be added after the refactor.
- #results = self.gclient(['revinfo', '--snapshot'])
- #expected = (
- # './: None\nfoo/bar: %strunk/third_party/foo@1\n' % self.svn_base,
- # '', 0)
- #self.check(expected, results)
-
- def testRest(self):
- if not self.enabled:
- return
- self.gclient(['sync'])
- # TODO(maruel): This is incorrect, it should run on ./ too.
- self.parseGclient(
- ['cleanup', '--deps', 'mac', '--verbose', '--jobs', '1'],
- [('running', join(self.root_dir, 'foo', 'bar'))])
- self.parseGclient(
- ['diff', '--deps', 'mac', '--verbose', '--jobs', '1'],
- [('running', join(self.root_dir, 'foo', 'bar'))])
-
-
if __name__ == '__main__':
if '-v' in sys.argv:
logging.basicConfig(level=logging.DEBUG)
« no previous file with comments | « tests/gclient_scm_test.py ('k') | tests/scm_unittest.py » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698