Browse Source

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/+/1925038
Reviewed-by: Anthony Polito <apolito@google.com>
Commit-Queue: Edward Lesmes <ehmaldonado@chromium.org>
Edward Lemur 5 years ago
parent
commit
65f6b45d6d
2 changed files with 34 additions and 48 deletions
  1. 1 1
      testing_support/fake_repos.py
  2. 33 47
      tests/gclient_smoketest.py

+ 1 - 1
testing_support/fake_repos.py

@@ -526,7 +526,7 @@ deps_os ={
 vars = {
 vars = {
   'str_var': 'xyz',
   'str_var': 'xyz',
 }
 }
-gclient_gn_args_file = 'src/repo2/gclient.args'
+gclient_gn_args_file = 'src/repo8/gclient.args'
 gclient_gn_args = [
 gclient_gn_args = [
   'str_var',
   'str_var',
 ]
 ]

+ 33 - 47
tests/gclient_smoketest.py

@@ -41,7 +41,7 @@ class GClientSmokeBase(fake_repos.FakeReposTestBase):
     # Suppress Python 3 warnings and other test undesirables.
     # Suppress Python 3 warnings and other test undesirables.
     self.env['GCLIENT_TEST'] = '1'
     self.env['GCLIENT_TEST'] = '1'
 
 
-  def gclient(self, cmd, cwd=None):
+  def gclient(self, cmd, cwd=None, error_ok=False):
     if not cwd:
     if not cwd:
       cwd = self.root_dir
       cwd = self.root_dir
     if COVERAGE:
     if COVERAGE:
@@ -57,6 +57,10 @@ class GClientSmokeBase(fake_repos.FakeReposTestBase):
     (stdout, stderr) = process.communicate()
     (stdout, stderr) = process.communicate()
     logging.debug("XXX: %s\n%s\nXXX" % (' '.join(cmd), stdout))
     logging.debug("XXX: %s\n%s\nXXX" % (' '.join(cmd), stdout))
     logging.debug("YYY: %s\n%s\nYYY" % (' '.join(cmd), stderr))
     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'),
     return (stdout.replace('\r\n', '\n'), stderr.replace('\r\n', '\n'),
             process.returncode)
             process.returncode)
 
 
@@ -87,11 +91,10 @@ class GClientSmokeBase(fake_repos.FakeReposTestBase):
   def parseGclient(self, cmd, items, expected_stderr='', untangle=False):
   def parseGclient(self, cmd, items, expected_stderr='', untangle=False):
     """Parse gclient's output to make it easier to test.
     """Parse gclient's output to make it easier to test.
     If untangle is True, tries to sort out the output from parallel checkout."""
     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:
     if untangle:
       stdout = self.untangle(stdout)
       stdout = self.untangle(stdout)
     self.checkString(expected_stderr, stderr)
     self.checkString(expected_stderr, stderr)
-    self.assertEqual(0, returncode)
     return self.checkBlock(stdout, items)
     return self.checkBlock(stdout, items)
 
 
   def splitBlock(self, stdout):
   def splitBlock(self, stdout):
@@ -169,19 +172,18 @@ class GClientSmoke(GClientSmokeBase):
 
 
   def testNotConfigured(self):
   def testNotConfigured(self):
     res = ('', 'Error: client not configured; see \'gclient config\'\n', 1)
     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):
   def testConfig(self):
     # Get any bootstrapping out of the way.
     # Get any bootstrapping out of the way.
     results = self.gclient(['version'])
     results = self.gclient(['version'])
-    self.assertEqual(results[2], 0)
 
 
     p = join(self.root_dir, '.gclient')
     p = join(self.root_dir, '.gclient')
     def test(cmd, expected):
     def test(cmd, expected):
@@ -262,7 +264,7 @@ class GClientSmoke(GClientSmokeBase):
     test(['config', '--spec', '["blah blah"]'], '["blah blah"]')
     test(['config', '--spec', '["blah blah"]'], '["blah blah"]')
 
 
     os.remove(p)
     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'
     err = ('Usage: gclient.py config [options] [url]\n\n'
            'gclient.py: error: Inconsistent arguments. Use either --spec or one'
            'gclient.py: error: Inconsistent arguments. Use either --spec or one'
            ' or 2 args\n')
            ' or 2 args\n')
@@ -309,6 +311,8 @@ class GClientSmoke(GClientSmokeBase):
 class GClientSmokeGIT(GClientSmokeBase):
 class GClientSmokeGIT(GClientSmokeBase):
   def setUp(self):
   def setUp(self):
     super(GClientSmokeGIT, self).setUp()
     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()
     self.enabled = self.FAKE_REPOS.set_up_git()
 
 
   def testSync(self):
   def testSync(self):
@@ -527,9 +531,8 @@ class GClientSmokeGIT(GClientSmokeBase):
     if not self.enabled:
     if not self.enabled:
       return
       return
     self.gclient(['config', self.git_base + 'repo_13', '--name', 'src'])
     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)])
         ['sync', '-v', '-v', '-v', '--revision', self.githash('repo_13', 2)])
-    self.assertEqual(0, rc)
 
 
   def testSyncFetchUpdate(self):
   def testSyncFetchUpdate(self):
     if not self.enabled:
     if not self.enabled:
@@ -538,22 +541,19 @@ class GClientSmokeGIT(GClientSmokeBase):
 
 
     # Sync to an earlier revision first, one that doesn't refer to
     # Sync to an earlier revision first, one that doesn't refer to
     # non-standard refs.
     # non-standard refs.
-    _out, _err, rc = self.gclient(
+    self.gclient(
         ['sync', '-v', '-v', '-v', '--revision', self.githash('repo_13', 1)])
         ['sync', '-v', '-v', '-v', '--revision', self.githash('repo_13', 1)])
-    self.assertEqual(0, rc)
 
 
     # Make sure update that pulls a non-standard ref works.
     # 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)])
         ['sync', '-v', '-v', '-v', '--revision', self.githash('repo_13', 2)])
-    self.assertEqual(0, rc)
 
 
   def testSyncDirect(self):
   def testSyncDirect(self):
     if not self.enabled:
     if not self.enabled:
       return
       return
     self.gclient(['config', self.git_base + 'repo_12', '--name', 'src'])
     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'])
         ['sync', '-v', '-v', '-v', '--revision', 'refs/changes/1212'])
-    self.assertEqual(0, rc)
 
 
   def testSyncUnmanaged(self):
   def testSyncUnmanaged(self):
     if not self.enabled:
     if not self.enabled:
@@ -739,9 +739,9 @@ class GClientSmokeGIT(GClientSmokeBase):
     expected_stderr = ("Error: Command 'vpython -c import sys; "
     expected_stderr = ("Error: Command 'vpython -c import sys; "
                        "sys.exit(1)' returned non-zero exit status 1 in %s\n"
                        "sys.exit(1)' returned non-zero exit status 1 in %s\n"
                        % self.root_dir)
                        % 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(stderr, expected_stderr)
     self.assertEqual(2, retcode)
     self.assertEqual(2, retcode)
     self.checkBlock(stdout, expectated_stdout)
     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',
         'setdep', '-r', 'foo@new_foo', '-r', 'bar@new_bar',
         '--var', 'foo_var=new_val', '--deps-file', fake_deps])
         '--var', 'foo_var=new_val', '--deps-file', fake_deps])
 
 
     with open(fake_deps) as f:
     with open(fake_deps) as f:
       contents = f.read().splitlines()
       contents = f.read().splitlines()
 
 
-    self.assertEqual('', results[1], results[1])
-    self.assertEqual(0, results[2])
     self.assertEqual([
     self.assertEqual([
           'vars = { ',
           'vars = { ',
           '  "foo_var": "new_val",',
           '  "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',
         'setdep', '-r', 'foo@new_foo', '-r', 'bar@new_bar',
         '--var', 'foo_var=new_val', '--deps-file', fake_deps])
         '--var', 'foo_var=new_val', '--deps-file', fake_deps])
 
 
     with open(fake_deps) as f:
     with open(fake_deps) as f:
       contents = f.read().splitlines()
       contents = f.read().splitlines()
 
 
-    self.assertEqual('', results[1], results[1])
-    self.assertEqual(0, results[2])
     self.assertEqual([
     self.assertEqual([
           'vars = { ',
           'vars = { ',
           '  "foo_var": "new_val",',
           '  "foo_var": "new_val",',
@@ -980,13 +976,11 @@ class GClientSmokeGIT(GClientSmokeBase):
         'getdep', '-r', 'foo', '-r', 'bar','--var', 'foo_var',
         'getdep', '-r', 'foo', '-r', 'bar','--var', 'foo_var',
         '--deps-file', fake_deps])
         '--deps-file', fake_deps])
 
 
-    self.assertEqual('', results[1])
     self.assertEqual([
     self.assertEqual([
         'foo_val',
         'foo_val',
         'foo_rev',
         'foo_rev',
         'bar_rev',
         'bar_rev',
     ], results[0].splitlines())
     ], results[0].splitlines())
-    self.assertEqual(0, results[2])
 
 
   def testGetDep_BuiltinVariables(self):
   def testGetDep_BuiltinVariables(self):
     self.gclient(['config', self.git_base + 'repo_1', '--name', 'src'])
     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',
         'getdep', '-r', 'foo', '-r', 'bar','--var', 'foo_var',
         '--deps-file', fake_deps])
         '--deps-file', fake_deps])
 
 
-    self.assertEqual('', results[1])
     self.assertEqual([
     self.assertEqual([
         'foo_val',
         'foo_val',
         'foo_rev',
         'foo_rev',
         'bar_rev',
         'bar_rev',
     ], results[0].splitlines())
     ], results[0].splitlines())
-    self.assertEqual(0, results[2])
 
 
   def testFlatten(self):
   def testFlatten(self):
     if not self.enabled:
     if not self.enabled:
@@ -1045,11 +1037,10 @@ class GClientSmokeGIT(GClientSmokeBase):
         'name': 'src',
         'name': 'src',
         'deps_file': output_deps
         'deps_file': output_deps
     }]
     }]
-    results = self.gclient([
+    self.gclient([
         'sync',
         'sync',
         '--spec=solutions=%s' % solutions
         '--spec=solutions=%s' % solutions
     ])
     ])
-    self.assertEqual(results[2], 0)
 
 
     with open(output_deps) as f:
     with open(output_deps) as f:
       deps_contents = f.read()
       deps_contents = f.read()
@@ -1468,7 +1459,7 @@ class GClientSmokeGIT(GClientSmokeBase):
 
 
     self.maxDiff = None
     self.maxDiff = None
     self.assertEqual([
     self.assertEqual([
-        'gclient_gn_args_file = "src/repo2/gclient.args"',
+        'gclient_gn_args_file = "src/repo8/gclient.args"',
         "gclient_gn_args = ['str_var']",
         "gclient_gn_args = ['str_var']",
         'deps = {',
         'deps = {',
         '  # src',
         '  # src',
@@ -1972,8 +1963,7 @@ class GClientSmokeCipd(GClientSmokeBase):
 
 
   def testSyncCipd(self):
   def testSyncCipd(self):
     self.gclient(['config', self.git_base + 'repo_14', '--name', 'src'])
     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 = self.mangle_git_tree(('repo_14@1', 'src'))
     tree.update({
     tree.update({
@@ -2005,19 +1995,17 @@ class GClientSmokeCipd(GClientSmokeBase):
     self.gclient(['config', self.git_base + 'repo_13', '--name', 'src'])
     self.gclient(['config', self.git_base + 'repo_13', '--name', 'src'])
 
 
     # repo_13@1 has src/repo12 as a git dependency.
     # 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)])
         ['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'),
     tree = self.mangle_git_tree(('repo_13@1', 'src'),
                                 ('repo_12@1', 'src/repo12'))
                                 ('repo_12@1', 'src/repo12'))
     self.assertTree(tree)
     self.assertTree(tree)
 
 
     # repo_13@3 has src/repo12 as a cipd dependency.
     # 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),
         ['sync', '-v', '-v', '-v', '--revision', self.githash('repo_13', 3),
          '--delete_unversioned_trees'])
          '--delete_unversioned_trees'])
-    self.assertEqual(0, rc, out + err)
 
 
     tree = self.mangle_git_tree(('repo_13@3', 'src'))
     tree = self.mangle_git_tree(('repo_13@3', 'src'))
     tree.update({
     tree.update({
@@ -2037,10 +2025,9 @@ class GClientSmokeCipd(GClientSmokeBase):
     self.gclient(['config', self.git_base + 'repo_13', '--name', 'src'])
     self.gclient(['config', self.git_base + 'repo_13', '--name', 'src'])
 
 
     # repo_13@3 has src/repo12 as a cipd dependency.
     # 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),
         ['sync', '-v', '-v', '-v', '--revision', self.githash('repo_13', 3),
          '--delete_unversioned_trees'])
          '--delete_unversioned_trees'])
-    self.assertEqual(0, rc, out + err)
 
 
     tree = self.mangle_git_tree(('repo_13@3', 'src'))
     tree = self.mangle_git_tree(('repo_13@3', 'src'))
     tree.update({
     tree.update({
@@ -2057,9 +2044,8 @@ class GClientSmokeCipd(GClientSmokeBase):
     self.assertTree(tree)
     self.assertTree(tree)
 
 
     # repo_13@1 has src/repo12 as a git dependency.
     # 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)])
         ['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'),
     tree = self.mangle_git_tree(('repo_13@1', 'src'),
                                 ('repo_12@1', 'src/repo12'))
                                 ('repo_12@1', 'src/repo12'))