Commit 65f6b45d authored by Edward Lemur's avatar Edward Lemur Committed by Commit Bot

gclient: Assert invokations of gclient succeed when running smoketests.

Bug: 1024683
Change-Id: I01245d34ad1fa1142ce726c80bf5b61567bafe35
Reviewed-on: https://chromium-review.googlesource.com/c/chromium/tools/depot_tools/+/1925038Reviewed-by: 's avatarAnthony Polito <apolito@google.com>
Commit-Queue: Edward Lesmes <ehmaldonado@chromium.org>
parent 589d4563
......@@ -526,7 +526,7 @@ deps_os ={
vars = {
'str_var': 'xyz',
}
gclient_gn_args_file = 'src/repo2/gclient.args'
gclient_gn_args_file = 'src/repo8/gclient.args'
gclient_gn_args = [
'str_var',
]
......
......@@ -41,7 +41,7 @@ class GClientSmokeBase(fake_repos.FakeReposTestBase):
# Suppress Python 3 warnings and other test undesirables.
self.env['GCLIENT_TEST'] = '1'
def gclient(self, cmd, cwd=None):
def gclient(self, cmd, cwd=None, error_ok=False):
if not cwd:
cwd = self.root_dir
if COVERAGE:
......@@ -57,6 +57,10 @@ class GClientSmokeBase(fake_repos.FakeReposTestBase):
(stdout, stderr) = process.communicate()
logging.debug("XXX: %s\n%s\nXXX" % (' '.join(cmd), stdout))
logging.debug("YYY: %s\n%s\nYYY" % (' '.join(cmd), stderr))
if not error_ok:
self.assertEqual(0, process.returncode, stderr)
return (stdout.replace('\r\n', '\n'), stderr.replace('\r\n', '\n'),
process.returncode)
......@@ -87,11 +91,10 @@ class GClientSmokeBase(fake_repos.FakeReposTestBase):
def parseGclient(self, cmd, items, expected_stderr='', untangle=False):
"""Parse gclient's output to make it easier to test.
If untangle is True, tries to sort out the output from parallel checkout."""
(stdout, stderr, returncode) = self.gclient(cmd)
(stdout, stderr, _) = self.gclient(cmd)
if untangle:
stdout = self.untangle(stdout)
self.checkString(expected_stderr, stderr)
self.assertEqual(0, returncode)
return self.checkBlock(stdout, items)
def splitBlock(self, stdout):
......@@ -169,19 +172,18 @@ class GClientSmoke(GClientSmokeBase):
def testNotConfigured(self):
res = ('', 'Error: client not configured; see \'gclient config\'\n', 1)
self.check(res, self.gclient(['diff']))
self.check(res, self.gclient(['pack']))
self.check(res, self.gclient(['revert']))
self.check(res, self.gclient(['revinfo']))
self.check(res, self.gclient(['runhooks']))
self.check(res, self.gclient(['status']))
self.check(res, self.gclient(['sync']))
self.check(res, self.gclient(['update']))
self.check(res, self.gclient(['diff'], error_ok=True))
self.check(res, self.gclient(['pack'], error_ok=True))
self.check(res, self.gclient(['revert'], error_ok=True))
self.check(res, self.gclient(['revinfo'], error_ok=True))
self.check(res, self.gclient(['runhooks'], error_ok=True))
self.check(res, self.gclient(['status'], error_ok=True))
self.check(res, self.gclient(['sync'], error_ok=True))
self.check(res, self.gclient(['update'], error_ok=True))
def testConfig(self):
# Get any bootstrapping out of the way.
results = self.gclient(['version'])
self.assertEqual(results[2], 0)
p = join(self.root_dir, '.gclient')
def test(cmd, expected):
......@@ -262,7 +264,7 @@ class GClientSmoke(GClientSmokeBase):
test(['config', '--spec', '["blah blah"]'], '["blah blah"]')
os.remove(p)
results = self.gclient(['config', 'foo', 'faa', 'fuu'])
results = self.gclient(['config', 'foo', 'faa', 'fuu'], error_ok=True)
err = ('Usage: gclient.py config [options] [url]\n\n'
'gclient.py: error: Inconsistent arguments. Use either --spec or one'
' or 2 args\n')
......@@ -309,6 +311,8 @@ class GClientSmoke(GClientSmokeBase):
class GClientSmokeGIT(GClientSmokeBase):
def setUp(self):
super(GClientSmokeGIT, self).setUp()
self.env['PATH'] = (os.path.join(ROOT_DIR, 'testing_support')
+ os.pathsep + self.env['PATH'])
self.enabled = self.FAKE_REPOS.set_up_git()
def testSync(self):
......@@ -527,9 +531,8 @@ class GClientSmokeGIT(GClientSmokeBase):
if not self.enabled:
return
self.gclient(['config', self.git_base + 'repo_13', '--name', 'src'])
_out, _err, rc = self.gclient(
self.gclient(
['sync', '-v', '-v', '-v', '--revision', self.githash('repo_13', 2)])
self.assertEqual(0, rc)
def testSyncFetchUpdate(self):
if not self.enabled:
......@@ -538,22 +541,19 @@ class GClientSmokeGIT(GClientSmokeBase):
# Sync to an earlier revision first, one that doesn't refer to
# non-standard refs.
_out, _err, rc = self.gclient(
self.gclient(
['sync', '-v', '-v', '-v', '--revision', self.githash('repo_13', 1)])
self.assertEqual(0, rc)
# Make sure update that pulls a non-standard ref works.
_out, _err, rc = self.gclient(
self.gclient(
['sync', '-v', '-v', '-v', '--revision', self.githash('repo_13', 2)])
self.assertEqual(0, rc)
def testSyncDirect(self):
if not self.enabled:
return
self.gclient(['config', self.git_base + 'repo_12', '--name', 'src'])
_out, _err, rc = self.gclient(
self.gclient(
['sync', '-v', '-v', '-v', '--revision', 'refs/changes/1212'])
self.assertEqual(0, rc)
def testSyncUnmanaged(self):
if not self.enabled:
......@@ -739,9 +739,9 @@ class GClientSmokeGIT(GClientSmokeBase):
expected_stderr = ("Error: Command 'vpython -c import sys; "
"sys.exit(1)' returned non-zero exit status 1 in %s\n"
% self.root_dir)
stdout, stderr, retcode = self.gclient(['sync', '--deps', 'mac', '--jobs=1',
'--revision',
'src@' + self.githash('repo_5', 3)])
stdout, stderr, retcode = self.gclient(
['sync', '--deps', 'mac', '--jobs=1', '--revision',
'src@' + self.githash('repo_5', 3)], error_ok=True)
self.assertEqual(stderr, expected_stderr)
self.assertEqual(2, retcode)
self.checkBlock(stdout, expectated_stdout)
......@@ -887,15 +887,13 @@ class GClientSmokeGIT(GClientSmokeBase):
'}',
]))
results = self.gclient([
self.gclient([
'setdep', '-r', 'foo@new_foo', '-r', 'bar@new_bar',
'--var', 'foo_var=new_val', '--deps-file', fake_deps])
with open(fake_deps) as f:
contents = f.read().splitlines()
self.assertEqual('', results[1], results[1])
self.assertEqual(0, results[2])
self.assertEqual([
'vars = { ',
' "foo_var": "new_val",',
......@@ -932,15 +930,13 @@ class GClientSmokeGIT(GClientSmokeBase):
'}]',
]))
results = self.gclient([
self.gclient([
'setdep', '-r', 'foo@new_foo', '-r', 'bar@new_bar',
'--var', 'foo_var=new_val', '--deps-file', fake_deps])
with open(fake_deps) as f:
contents = f.read().splitlines()
self.assertEqual('', results[1], results[1])
self.assertEqual(0, results[2])
self.assertEqual([
'vars = { ',
' "foo_var": "new_val",',
......@@ -980,13 +976,11 @@ class GClientSmokeGIT(GClientSmokeBase):
'getdep', '-r', 'foo', '-r', 'bar','--var', 'foo_var',
'--deps-file', fake_deps])
self.assertEqual('', results[1])
self.assertEqual([
'foo_val',
'foo_rev',
'bar_rev',
], results[0].splitlines())
self.assertEqual(0, results[2])
def testGetDep_BuiltinVariables(self):
self.gclient(['config', self.git_base + 'repo_1', '--name', 'src'])
......@@ -1015,13 +1009,11 @@ class GClientSmokeGIT(GClientSmokeBase):
'getdep', '-r', 'foo', '-r', 'bar','--var', 'foo_var',
'--deps-file', fake_deps])
self.assertEqual('', results[1])
self.assertEqual([
'foo_val',
'foo_rev',
'bar_rev',
], results[0].splitlines())
self.assertEqual(0, results[2])
def testFlatten(self):
if not self.enabled:
......@@ -1045,11 +1037,10 @@ class GClientSmokeGIT(GClientSmokeBase):
'name': 'src',
'deps_file': output_deps
}]
results = self.gclient([
self.gclient([
'sync',
'--spec=solutions=%s' % solutions
])
self.assertEqual(results[2], 0)
with open(output_deps) as f:
deps_contents = f.read()
......@@ -1468,7 +1459,7 @@ class GClientSmokeGIT(GClientSmokeBase):
self.maxDiff = None
self.assertEqual([
'gclient_gn_args_file = "src/repo2/gclient.args"',
'gclient_gn_args_file = "src/repo8/gclient.args"',
"gclient_gn_args = ['str_var']",
'deps = {',
' # src',
......@@ -1972,8 +1963,7 @@ class GClientSmokeCipd(GClientSmokeBase):
def testSyncCipd(self):
self.gclient(['config', self.git_base + 'repo_14', '--name', 'src'])
out, err, rc = self.gclient(['sync'])
self.assertEqual(0, rc, out + err)
self.gclient(['sync'])
tree = self.mangle_git_tree(('repo_14@1', 'src'))
tree.update({
......@@ -2005,19 +1995,17 @@ class GClientSmokeCipd(GClientSmokeBase):
self.gclient(['config', self.git_base + 'repo_13', '--name', 'src'])
# repo_13@1 has src/repo12 as a git dependency.
out, err, rc = self.gclient(
self.gclient(
['sync', '-v', '-v', '-v', '--revision', self.githash('repo_13', 1)])
self.assertEqual(0, rc, out + err)
tree = self.mangle_git_tree(('repo_13@1', 'src'),
('repo_12@1', 'src/repo12'))
self.assertTree(tree)
# repo_13@3 has src/repo12 as a cipd dependency.
out, err, rc = self.gclient(
self.gclient(
['sync', '-v', '-v', '-v', '--revision', self.githash('repo_13', 3),
'--delete_unversioned_trees'])
self.assertEqual(0, rc, out + err)
tree = self.mangle_git_tree(('repo_13@3', 'src'))
tree.update({
......@@ -2037,10 +2025,9 @@ class GClientSmokeCipd(GClientSmokeBase):
self.gclient(['config', self.git_base + 'repo_13', '--name', 'src'])
# repo_13@3 has src/repo12 as a cipd dependency.
out, err, rc = self.gclient(
self.gclient(
['sync', '-v', '-v', '-v', '--revision', self.githash('repo_13', 3),
'--delete_unversioned_trees'])
self.assertEqual(0, rc, out + err)
tree = self.mangle_git_tree(('repo_13@3', 'src'))
tree.update({
......@@ -2057,9 +2044,8 @@ class GClientSmokeCipd(GClientSmokeBase):
self.assertTree(tree)
# repo_13@1 has src/repo12 as a git dependency.
out, err, rc = self.gclient(
self.gclient(
['sync', '-v', '-v', '-v', '--revision', self.githash('repo_13', 1)])
self.assertEqual(0, rc, out + err)
tree = self.mangle_git_tree(('repo_13@1', 'src'),
('repo_12@1', 'src/repo12'))
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment