فهرست منبع

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 سال پیش
والد
کامیت
65f6b45d6d
2فایلهای تغییر یافته به همراه34 افزوده شده و 48 حذف شده
  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 = {
   'str_var': 'xyz',
 }
-gclient_gn_args_file = 'src/repo2/gclient.args'
+gclient_gn_args_file = 'src/repo8/gclient.args'
 gclient_gn_args = [
   '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.
     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'))