From 05934953bfd9c22515c3f560d2944d7fccb65fa5 Mon Sep 17 00:00:00 2001 From: Edward Lesmes Date: Thu, 19 Dec 2019 20:38:09 +0000 Subject: [PATCH] gclient: Make smoketests run on Windows. Bug: 1024683 Change-Id: I1c30473699c1bd6b198188b53b632e3617fed335 Reviewed-on: https://chromium-review.googlesource.com/c/chromium/tools/depot_tools/+/1929653 Reviewed-by: Anthony Polito Commit-Queue: Edward Lesmes --- PRESUBMIT.py | 1 - fix_encoding.py | 7 + gclient.py | 12 +- gclient_scm.py | 15 +- testing_support/fake_cipd.py | 4 +- testing_support/fake_repos.py | 24 ++-- tests/gclient_smoketest.py | 261 +++++++++++++--------------------- 7 files changed, 137 insertions(+), 187 deletions(-) diff --git a/PRESUBMIT.py b/PRESUBMIT.py index f65055e01..c25679b13 100644 --- a/PRESUBMIT.py +++ b/PRESUBMIT.py @@ -70,7 +70,6 @@ def CommonChecks(input_api, output_api, tests_to_black_list, run_on_python3): print('Warning: skipping most unit tests on Windows') tests_to_black_list = [ r'.*auth_test\.py$', - r'.*gclient_smoketest\.py$', r'.*git_cl_test\.py$', r'.*git_common_test\.py$', r'.*git_hyper_blame_test\.py$', diff --git a/fix_encoding.py b/fix_encoding.py index fb4214c3c..b327a494c 100644 --- a/fix_encoding.py +++ b/fix_encoding.py @@ -84,6 +84,10 @@ def fix_win_sys_argv(encoding): if _SYS_ARGV_PROCESSED: return False + if sys.version_info.major == 3: + _SYS_ARGV_PROCESSED = True + return True + # These types are available on linux but not Mac. # pylint: disable=no-name-in-module,F0401 from ctypes import byref, c_int, POINTER, windll, WINFUNCTYPE @@ -269,6 +273,9 @@ class WinUnicodeOutput(WinUnicodeOutputBase): if sys.version_info.major == 2 and isinstance(text, unicode): # Replace characters that cannot be printed instead of failing. text = text.encode(self.encoding, 'replace') + if sys.version_info.major == 3 and isinstance(text, bytes): + # Replace characters that cannot be printed instead of failing. + text = text.decode(self.encoding, 'replace') self._stream.write(text) except Exception as e: complain('%s.write: %r' % (self.name, e)) diff --git a/gclient.py b/gclient.py index bf7b1ff3c..128d334ee 100755 --- a/gclient.py +++ b/gclient.py @@ -1042,8 +1042,8 @@ class Dependency(gclient_utils.WorkItem, DependencySettings): if isinstance(value, basestring): value = gclient_eval.EvaluateCondition(value, variables) lines.append('%s = %s' % (arg, ToGNString(value))) - with open(os.path.join(self.root.root_dir, self._gn_args_file), 'w') as f: - f.write('\n'.join(lines)) + with open(os.path.join(self.root.root_dir, self._gn_args_file), 'wb') as f: + f.write('\n'.join(lines).encode('utf-8', 'replace')) @gclient_utils.lockedmethod def _run_is_done(self, file_list): @@ -1322,10 +1322,10 @@ class GClient(GitDependency): DEFAULT_CLIENT_FILE_TEXT = ("""\ solutions = [ - { "name" : "%(solution_name)s", - "url" : "%(solution_url)s", - "deps_file" : "%(deps_file)s", - "managed" : %(managed)s, + { "name" : %(solution_name)r, + "url" : %(solution_url)r, + "deps_file" : %(deps_file)r, + "managed" : %(managed)r, "custom_deps" : { }, "custom_vars": %(custom_vars)r, diff --git a/gclient_scm.py b/gclient_scm.py index fc0272cd7..eabafa56d 100644 --- a/gclient_scm.py +++ b/gclient_scm.py @@ -1475,15 +1475,16 @@ class CipdRoot(object): @contextlib.contextmanager def _create_ensure_file(self): try: + contents = '$ParanoidMode CheckPresence\n\n' + for subdir, packages in sorted(self._packages_by_subdir.items()): + contents += '@Subdir %s\n' % subdir + for package in sorted(packages, key=lambda p: p.name): + contents += '%s %s\n' % (package.name, package.version) + contents += '\n' ensure_file = None with tempfile.NamedTemporaryFile( - suffix='.ensure', delete=False, mode='w') as ensure_file: - ensure_file.write('$ParanoidMode CheckPresence\n\n') - for subdir, packages in sorted(self._packages_by_subdir.items()): - ensure_file.write('@Subdir %s\n' % subdir) - for package in sorted(packages, key=lambda p: p.name): - ensure_file.write('%s %s\n' % (package.name, package.version)) - ensure_file.write('\n') + suffix='.ensure', delete=False, mode='wb') as ensure_file: + ensure_file.write(contents.encode('utf-8', 'replace')) yield ensure_file.name finally: if ensure_file is not None and os.path.exists(ensure_file.name): diff --git a/testing_support/fake_cipd.py b/testing_support/fake_cipd.py index a06fcf9b9..9bb3cf10b 100644 --- a/testing_support/fake_cipd.py +++ b/testing_support/fake_cipd.py @@ -40,8 +40,8 @@ def main(): for path, packages in new_content.items(): if not os.path.exists(path): os.makedirs(path) - with open(os.path.join(path, '_cipd'), 'w') as f: - f.write('\n'.join(packages)) + with open(os.path.join(path, '_cipd'), 'wb') as f: + f.write('\n'.join(packages).encode('utf-8', 'replace')) # Save the ensure file that we got shutil.copy(args.ensure_file, os.path.join(args.root, '_cipd')) diff --git a/testing_support/fake_repos.py b/testing_support/fake_repos.py index 4705e657e..bb8461410 100755 --- a/testing_support/fake_repos.py +++ b/testing_support/fake_repos.py @@ -249,7 +249,7 @@ gclient_gn_args = [ ] deps = { 'src/repo2': { - 'url': '%(git_base)srepo_2', + 'url': %(git_base)r + 'repo_2', 'condition': 'True', }, 'src/repo2/repo3': '/' + Var('DummyVariable') + '_3@%(hash3)s', @@ -305,7 +305,7 @@ deps = { self._commit_git('repo_1', { 'DEPS': """ deps = { - 'src/repo2': '%(git_base)srepo_2@%(hash)s', + 'src/repo2': %(git_base)r + 'repo_2@%(hash)s', 'src/repo2/repo_renamed': '/repo_3', 'src/should_not_process': { 'url': '/repo_4', @@ -341,8 +341,8 @@ hooks = [ self._commit_git('repo_5', { 'DEPS': """ deps = { - 'src/repo1': '%(git_base)srepo_1@%(hash1)s', - 'src/repo2': '%(git_base)srepo_2@%(hash2)s', + 'src/repo1': %(git_base)r + 'repo_1@%(hash1)s', + 'src/repo2': %(git_base)r + 'repo_2@%(hash2)s', } # Hooks to run after a project is processed but before its dependencies are @@ -363,8 +363,8 @@ pre_deps_hooks = [ self._commit_git('repo_5', { 'DEPS': """ deps = { - 'src/repo1': '%(git_base)srepo_1@%(hash1)s', - 'src/repo2': '%(git_base)srepo_2@%(hash2)s', + 'src/repo1': %(git_base)r + 'repo_1@%(hash1)s', + 'src/repo2': %(git_base)r + 'repo_2@%(hash2)s', } # Hooks to run after a project is processed but before its dependencies are @@ -390,7 +390,7 @@ pre_deps_hooks = [ 'DEPS': """ vars = { 'DummyVariable': 'repo', - 'git_base': '%(git_base)s', + 'git_base': %(git_base)r, 'hook1_contents': 'git_hooked1', 'repo5_var': '/repo_5', @@ -413,7 +413,7 @@ gclient_gn_args = [ ] allowed_hosts = [ - '%(git_base)s', + %(git_base)r, ] deps = { 'src/repo2': { @@ -718,13 +718,13 @@ class FakeRepoSkiaDEPS(FakeReposBase): NB_GIT_REPOS = 5 DEPS_git_pre = """deps = { - 'src/third_party/skia/gyp': '%(git_base)srepo_3', - 'src/third_party/skia/include': '%(git_base)srepo_4', - 'src/third_party/skia/src': '%(git_base)srepo_5', + 'src/third_party/skia/gyp': %(git_base)r + 'repo_3', + 'src/third_party/skia/include': %(git_base)r + 'repo_4', + 'src/third_party/skia/src': %(git_base)r + 'repo_5', }""" DEPS_post = """deps = { - 'src/third_party/skia': '%(git_base)srepo_1', + 'src/third_party/skia': %(git_base)r + 'repo_1', }""" def populateGit(self): diff --git a/tests/gclient_smoketest.py b/tests/gclient_smoketest.py index 3c0ffb888..9d4ea1a68 100755 --- a/tests/gclient_smoketest.py +++ b/tests/gclient_smoketest.py @@ -40,6 +40,7 @@ class GClientSmokeBase(fake_repos.FakeReposTestBase): self.env['DEPOT_TOOLS_METRICS'] = '0' # Suppress Python 3 warnings and other test undesirables. self.env['GCLIENT_TEST'] = '1' + self.maxDiff = None def gclient(self, cmd, cwd=None, error_ok=False): if not cwd: @@ -193,75 +194,75 @@ class GClientSmoke(GClientSmokeBase): self.check(('', '', 0), results) mode = 'r' if sys.version_info.major == 3 else 'rU' with open(p, mode) as f: - self.checkString(expected, f.read()) - - test(['config', self.git_base + 'src/'], - ('solutions = [\n' - ' { "name" : "src",\n' - ' "url" : "%ssrc",\n' - ' "deps_file" : "DEPS",\n' - ' "managed" : True,\n' - ' "custom_deps" : {\n' - ' },\n' - ' "custom_vars": {},\n' - ' },\n' - ']\n' % self.git_base)) - - test(['config', self.git_base + 'repo_1', '--name', 'src', + actual = {} + exec(f.read(), {}, actual) + self.assertEqual(expected, actual) + + test( + ['config', self.git_base + 'src/'], + { + 'solutions': [{ + 'name': 'src', + 'url': self.git_base + 'src', + 'deps_file': 'DEPS', + 'managed': True, + 'custom_deps': {}, + 'custom_vars': {}, + }], + }) + + test(['config', self.git_base + 'repo_1', + '--name', 'src', '--cache-dir', 'none'], - ('solutions = [\n' - ' { "name" : "src",\n' - ' "url" : "%srepo_1",\n' - ' "deps_file" : "DEPS",\n' - ' "managed" : True,\n' - ' "custom_deps" : {\n' - ' },\n' - ' "custom_vars": {},\n' - ' },\n' - ']\n' - 'cache_dir = None\n') % self.git_base) + {'solutions': [{ + 'name': 'src', + 'url': self.git_base + 'repo_1', + 'deps_file': 'DEPS', + 'managed': True, + 'custom_deps': {}, + 'custom_vars': {}, + }], + 'cache_dir': None}) test(['config', 'https://example.com/foo', 'faa', '--cache-dir', 'something'], - 'solutions = [\n' - ' { "name" : "foo",\n' - ' "url" : "https://example.com/foo",\n' - ' "deps_file" : "DEPS",\n' - ' "managed" : True,\n' - ' "custom_deps" : {\n' - ' },\n' - ' "custom_vars": {},\n' - ' },\n' - ']\n' - 'cache_dir = \'something\'\n') - - test(['config', 'https://example.com/foo', '--deps', 'blah'], - 'solutions = [\n' - ' { "name" : "foo",\n' - ' "url" : "https://example.com/foo",\n' - ' "deps_file" : "blah",\n' - ' "managed" : True,\n' - ' "custom_deps" : {\n' - ' },\n' - ' "custom_vars": {},\n' - ' },\n' - ']\n') + {'solutions': [{ + 'name': 'foo', + 'url': 'https://example.com/foo', + 'deps_file': 'DEPS', + 'managed': True, + 'custom_deps': {}, + 'custom_vars': {}, + }], + 'cache_dir': 'something'}) + + test(['config', 'https://example.com/foo', + '--deps', 'blah'], + {'solutions': [{ + 'name': 'foo', + 'url': 'https://example.com/foo', + 'deps_file': 'blah', + 'managed': True, + 'custom_deps': {}, + 'custom_vars': {}, + }]}) test(['config', self.git_base + 'src/', '--custom-var', 'bool_var=True', '--custom-var', 'str_var="abc"'], - ('solutions = [\n' - ' { "name" : "src",\n' - ' "url" : "%ssrc",\n' - ' "deps_file" : "DEPS",\n' - ' "managed" : True,\n' - ' "custom_deps" : {\n' - ' },\n' - ' "custom_vars": {\'bool_var\': True, \'str_var\': \'abc\'},\n' - ' },\n' - ']\n') % self.git_base) - - test(['config', '--spec', '["blah blah"]'], '["blah blah"]') + {'solutions': [{ + 'name': 'src', + 'url': self.git_base + 'src', + 'deps_file': 'DEPS', + 'managed': True, + 'custom_deps': {}, + 'custom_vars': { + 'bool_var': True, + 'str_var': 'abc', + }, + }]}) + + test(['config', '--spec', 'bah = ["blah blah"]'], {'bah': ["blah blah"]}) os.remove(p) results = self.gclient(['config', 'foo', 'faa', 'fuu'], error_ok=True) @@ -314,10 +315,10 @@ class GClientSmokeGIT(GClientSmokeBase): self.env['PATH'] = (os.path.join(ROOT_DIR, 'testing_support') + os.pathsep + self.env['PATH']) self.enabled = self.FAKE_REPOS.set_up_git() + if not self.enabled: + self.skipTest('git fake repos not available') def testSync(self): - if not self.enabled: - return self.gclient(['config', self.git_base + 'repo_1', '--name', 'src']) # Test unversioned checkout. self.parseGclient( @@ -386,7 +387,6 @@ class GClientSmokeGIT(GClientSmokeBase): with open(output_json) as f: output_json = json.load(f) - self.maxDiff = None out = { 'solutions': { 'src/': { @@ -420,8 +420,6 @@ class GClientSmokeGIT(GClientSmokeBase): def testSyncIgnoredSolutionName(self): """TODO(maruel): This will become an error soon.""" - if not self.enabled: - return self.gclient(['config', self.git_base + 'repo_1', '--name', 'src']) self.parseGclient( ['sync', '--deps', 'mac', '--jobs', '1', @@ -437,8 +435,6 @@ class GClientSmokeGIT(GClientSmokeBase): self.assertTree(tree) def testSyncNoSolutionName(self): - if not self.enabled: - return # When no solution name is provided, gclient uses the first solution listed. self.gclient(['config', self.git_base + 'repo_1', '--name', 'src']) self.parseGclient( @@ -461,8 +457,6 @@ class GClientSmokeGIT(GClientSmokeBase): self.assertTree(tree) def testSyncJobs(self): - if not self.enabled: - return self.gclient(['config', self.git_base + 'repo_1', '--name', 'src']) # Test unversioned checkout. self.parseGclient( @@ -528,15 +522,11 @@ class GClientSmokeGIT(GClientSmokeBase): self.assertTree(tree) def testSyncFetch(self): - if not self.enabled: - return self.gclient(['config', self.git_base + 'repo_13', '--name', 'src']) self.gclient( ['sync', '-v', '-v', '-v', '--revision', self.githash('repo_13', 2)]) def testSyncFetchUpdate(self): - if not self.enabled: - return self.gclient(['config', self.git_base + 'repo_13', '--name', 'src']) # Sync to an earlier revision first, one that doesn't refer to @@ -549,18 +539,14 @@ class GClientSmokeGIT(GClientSmokeBase): ['sync', '-v', '-v', '-v', '--revision', self.githash('repo_13', 2)]) def testSyncDirect(self): - if not self.enabled: - return self.gclient(['config', self.git_base + 'repo_12', '--name', 'src']) self.gclient( ['sync', '-v', '-v', '-v', '--revision', 'refs/changes/1212']) def testSyncUnmanaged(self): - if not self.enabled: - return self.gclient([ 'config', '--spec', - 'solutions=[{"name":"src", "url": "%s", "managed": False}]' % ( + 'solutions=[{"name":"src", "url": %r, "managed": False}]' % ( self.git_base + 'repo_5')]) self.gclient([ 'sync', '--revision', 'src@' + self.githash('repo_5', 2)]) @@ -572,12 +558,9 @@ class GClientSmokeGIT(GClientSmokeBase): ('repo_1@1', 'src/repo1'), ('repo_2@1', 'src/repo2')) tree['src/git_pre_deps_hooked'] = 'git_pre_deps_hooked' - self.maxDiff = None self.assertTree(tree) def testSyncUrl(self): - if not self.enabled: - return self.gclient(['config', self.git_base + 'repo_1', '--name', 'src']) self.gclient([ 'sync', '-v', '-v', '-v', @@ -594,8 +577,6 @@ class GClientSmokeGIT(GClientSmokeBase): self.assertTree(tree) def testSyncPatchRef(self): - if not self.enabled: - return self.gclient(['config', self.git_base + 'repo_1', '--name', 'src']) self.gclient([ 'sync', '-v', '-v', '-v', @@ -618,8 +599,6 @@ class GClientSmokeGIT(GClientSmokeBase): self.gitrevparse(os.path.join(self.root_dir, 'src/repo2'))) def testSyncPatchRefNoHooks(self): - if not self.enabled: - return self.gclient(['config', self.git_base + 'repo_1', '--name', 'src']) self.gclient([ 'sync', '-v', '-v', '-v', @@ -641,8 +620,6 @@ class GClientSmokeGIT(GClientSmokeBase): self.gitrevparse(os.path.join(self.root_dir, 'src/repo2'))) def testRunHooks(self): - if not self.enabled: - return self.gclient(['config', self.git_base + 'repo_1', '--name', 'src']) self.gclient(['sync', '--deps', 'mac']) tree = self.mangle_git_tree(('repo_1@2', 'src'), @@ -667,8 +644,6 @@ class GClientSmokeGIT(GClientSmokeBase): self.assertTree(tree) def testRunHooksCondition(self): - if not self.enabled: - return self.gclient(['config', self.git_base + 'repo_7', '--name', 'src']) self.gclient(['sync', '--deps', 'mac']) tree = self.mangle_git_tree(('repo_7@1', 'src')) @@ -676,8 +651,6 @@ class GClientSmokeGIT(GClientSmokeBase): self.assertTree(tree) def testPreDepsHooks(self): - if not self.enabled: - return self.gclient(['config', self.git_base + 'repo_5', '--name', 'src']) expectation = [ ('running', self.root_dir), # git clone @@ -728,17 +701,16 @@ class GClientSmokeGIT(GClientSmokeBase): self.assertTree(tree) def testPreDepsHooksError(self): - if not self.enabled: - return self.gclient(['config', self.git_base + 'repo_5', '--name', 'src']) expectated_stdout = [ ('running', self.root_dir), # git clone ('running', self.root_dir), # pre-deps hook ('running', self.root_dir), # pre-deps hook (fails) ] - expected_stderr = ("Error: Command 'vpython -c import sys; " + vpython = 'vpython.bat' if sys.platform == 'win32' else 'vpython' + expected_stderr = ("Error: Command '%s -c import sys; " "sys.exit(1)' returned non-zero exit status 1 in %s\n" - % self.root_dir) + % (vpython, self.root_dir)) stdout, stderr, retcode = self.gclient( ['sync', '--deps', 'mac', '--jobs=1', '--revision', 'src@' + self.githash('repo_5', 3)], error_ok=True) @@ -747,8 +719,6 @@ class GClientSmokeGIT(GClientSmokeBase): self.checkBlock(stdout, expectated_stdout) def testRevInfo(self): - if not self.enabled: - return self.gclient(['config', self.git_base + 'repo_1', '--name', 'src']) self.gclient(['sync', '--deps', 'mac']) results = self.gclient(['revinfo', '--deps', 'mac']) @@ -762,8 +732,6 @@ class GClientSmokeGIT(GClientSmokeBase): self.check((out, '', 0), results) def testRevInfoActual(self): - if not self.enabled: - return self.gclient(['config', self.git_base + 'repo_1', '--name', 'src']) self.gclient(['sync', '--deps', 'mac']) results = self.gclient(['revinfo', '--deps', 'mac', '--actual']) @@ -779,8 +747,6 @@ class GClientSmokeGIT(GClientSmokeBase): self.check((out, '', 0), results) def testRevInfoFilterPath(self): - if not self.enabled: - return self.gclient(['config', self.git_base + 'repo_1', '--name', 'src']) self.gclient(['sync', '--deps', 'mac']) results = self.gclient(['revinfo', '--deps', 'mac', '--filter', 'src']) @@ -791,8 +757,6 @@ class GClientSmokeGIT(GClientSmokeBase): self.check((out, '', 0), results) def testRevInfoFilterURL(self): - if not self.enabled: - return self.gclient(['config', self.git_base + 'repo_1', '--name', 'src']) self.gclient(['sync', '--deps', 'mac']) results = self.gclient(['revinfo', '--deps', 'mac', @@ -805,8 +769,6 @@ class GClientSmokeGIT(GClientSmokeBase): self.check((out, '', 0), results) def testRevInfoFilterURLOrPath(self): - if not self.enabled: - return self.gclient(['config', self.git_base + 'repo_1', '--name', 'src']) self.gclient(['sync', '--deps', 'mac']) results = self.gclient(['revinfo', '--deps', 'mac', '--filter', 'src', @@ -820,8 +782,6 @@ class GClientSmokeGIT(GClientSmokeBase): self.check((out, '', 0), results) def testRevInfoJsonOutput(self): - if not self.enabled: - return self.gclient(['config', self.git_base + 'repo_1', '--name', 'src']) self.gclient(['sync', '--deps', 'mac']) output_json = os.path.join(self.root_dir, 'output.json') @@ -846,8 +806,6 @@ class GClientSmokeGIT(GClientSmokeBase): self.assertEqual(out, output_json) def testRevInfoJsonOutputSnapshot(self): - if not self.enabled: - return self.gclient(['config', self.git_base + 'repo_1', '--name', 'src']) self.gclient(['sync', '--deps', 'mac']) output_json = os.path.join(self.root_dir, 'output.json') @@ -1015,10 +973,9 @@ class GClientSmokeGIT(GClientSmokeBase): 'bar_rev', ], results[0].splitlines()) + # TODO(crbug.com/1024683): Enable for windows. + @unittest.skipIf(sys.platform == 'win32', 'not yet fixed on win') def testFlatten(self): - if not self.enabled: - return - output_deps = os.path.join(self.root_dir, 'DEPS.flattened') self.assertFalse(os.path.exists(output_deps)) @@ -1045,7 +1002,6 @@ class GClientSmokeGIT(GClientSmokeBase): with open(output_deps) as f: deps_contents = f.read() - self.maxDiff = None # pylint: disable=attribute-defined-outside-init self.assertEqual([ 'gclient_gn_args_file = "src/repo2/gclient.args"', 'gclient_gn_args = [\'false_var\', \'false_str_var\', \'true_var\', ' @@ -1227,10 +1183,9 @@ class GClientSmokeGIT(GClientSmokeBase): '# ' + self.git_base + 'repo_8, DEPS', ], deps_contents.splitlines()) + # TODO(crbug.com/1024683): Enable for windows. + @unittest.skipIf(sys.platform == 'win32', 'not yet fixed on win') def testFlattenPinAllDeps(self): - if not self.enabled: - return - output_deps = os.path.join(self.root_dir, 'DEPS.flattened') self.assertFalse(os.path.exists(output_deps)) @@ -1242,7 +1197,6 @@ class GClientSmokeGIT(GClientSmokeBase): with open(output_deps) as f: deps_contents = f.read() - self.maxDiff = None # pylint: disable=attribute-defined-outside-init self.assertEqual([ 'gclient_gn_args_file = "src/repo2/gclient.args"', 'gclient_gn_args = [\'false_var\', \'false_str_var\', \'true_var\', ' @@ -1438,10 +1392,9 @@ class GClientSmokeGIT(GClientSmokeBase): self.githash('repo_8', 1)), ], deps_contents.splitlines()) + # TODO(crbug.com/1024683): Enable for windows. + @unittest.skipIf(sys.platform == 'win32', 'not yet fixed on win') def testFlattenRecursedeps(self): - if not self.enabled: - return - output_deps = os.path.join(self.root_dir, 'DEPS.flattened') self.assertFalse(os.path.exists(output_deps)) @@ -1457,7 +1410,6 @@ class GClientSmokeGIT(GClientSmokeBase): with open(output_deps) as f: deps_contents = f.read() - self.maxDiff = None self.assertEqual([ 'gclient_gn_args_file = "src/repo8/gclient.args"', "gclient_gn_args = ['str_var']", @@ -1543,10 +1495,9 @@ class GClientSmokeGIT(GClientSmokeBase): ['src/repo9', self.git_base + 'repo_9']]}, ], deps_files_contents) + # TODO(crbug.com/1024683): Enable for windows. + @unittest.skipIf(sys.platform == 'win32', 'not yet fixed on win') def testFlattenCipd(self): - if not self.enabled: - return - output_deps = os.path.join(self.root_dir, 'DEPS.flattened') self.assertFalse(os.path.exists(output_deps)) @@ -1557,7 +1508,6 @@ class GClientSmokeGIT(GClientSmokeBase): with open(output_deps) as f: deps_contents = f.read() - self.maxDiff = None # pylint: disable=attribute-defined-outside-init self.assertEqual([ 'deps = {', ' # src', @@ -1613,11 +1563,12 @@ class GClientSmokeGITMutates(GClientSmokeBase): def setUp(self): super(GClientSmokeGITMutates, self).setUp() self.enabled = self.FAKE_REPOS.set_up_git() - - def testRevertAndStatus(self): if not self.enabled: - return + self.skipTest('git fake repos not available') + # TODO(crbug.com/1024683): Enable for windows. + @unittest.skipIf(sys.platform == 'win32', 'not yet fixed on win') + def testRevertAndStatus(self): # Commit new change to repo to make repo_2's hash use a custom_var. cur_deps = self.FAKE_REPOS.git_hashes['repo_1'][-1][1]['DEPS'] repo_2_hash = self.FAKE_REPOS.git_hashes['repo_2'][1][0][:7] @@ -1629,14 +1580,14 @@ class GClientSmokeGITMutates(GClientSmokeBase): 'origin': 'git/repo_1@3\n', }) - config_template = ( -"""solutions = [{ - "name" : "src", - "url" : "%(git_base)srepo_1", - "deps_file" : "DEPS", - "managed" : True, - "custom_vars" : %(custom_vars)s, -}]""") + config_template = ''.join([ + 'solutions = [{' + ' "name" : "src",' + ' "url" : %(git_base)r + "repo_1",' + ' "deps_file" : "DEPS",' + ' "managed" : True,' + ' "custom_vars" : %(custom_vars)s,' + '}]']) self.gclient(['config', '--spec', config_template % { 'git_base': self.git_base, @@ -1693,8 +1644,6 @@ class GClientSmokeGITMutates(GClientSmokeBase): self.assertEqual(0, len(out)) def testSyncNoHistory(self): - if not self.enabled: - return # Create an extra commit in repo_2 and point DEPS to its hash. cur_deps = self.FAKE_REPOS.git_hashes['repo_1'][-1][1]['DEPS'] repo_2_hash_old = self.FAKE_REPOS.git_hashes['repo_2'][1][0][:7] @@ -1709,13 +1658,13 @@ class GClientSmokeGITMutates(GClientSmokeBase): 'origin': 'git/repo_1@4\n', }) - config_template = ( -"""solutions = [{ -"name" : "src", -"url" : "%(git_base)srepo_1", -"deps_file" : "DEPS", -"managed" : True, -}]""") + config_template = ''.join([ + 'solutions = [{' + ' "name" : "src",' + ' "url" : %(git_base)r + "repo_1",' + ' "deps_file" : "DEPS",' + ' "managed" : True,' + '}]']) self.gclient(['config', '--spec', config_template % { 'git_base': self.git_base @@ -1742,18 +1691,17 @@ class SkiaDEPSTransitionSmokeTest(GClientSmokeBase): def setUp(self): super(SkiaDEPSTransitionSmokeTest, self).setUp() self.enabled = self.FAKE_REPOS.set_up_git() - - def testSkiaDEPSChangeGit(self): if not self.enabled: - return + self.skipTest('git fake repos not available') + def testSkiaDEPSChangeGit(self): # Create an initial checkout: # - Single checkout at the root. # - Multiple checkouts in a shared subdirectory. self.gclient(['config', '--spec', 'solutions=[' '{"name": "src",' - ' "url": "' + self.git_base + 'repo_2",' + ' "url": ' + repr(self.git_base )+ '+ "repo_2",' '}]']) checkout_path = os.path.join(self.root_dir, 'src') @@ -1828,6 +1776,8 @@ class BlinkDEPSTransitionSmokeTest(GClientSmokeBase): def setUp(self): super(BlinkDEPSTransitionSmokeTest, self).setUp() self.enabled = self.FAKE_REPOS.set_up_git() + if not self.enabled: + self.skipTest('git fake repos not available') self.checkout_path = os.path.join(self.root_dir, 'src') self.blink = os.path.join(self.checkout_path, 'third_party', 'WebKit') self.blink_git_url = self.FAKE_REPOS.git_base + 'repo_2' @@ -1867,9 +1817,6 @@ class BlinkDEPSTransitionSmokeTest(GClientSmokeBase): def testBlinkDEPSChangeUsingGclient(self): """Checks that {src,blink} repos are consistent when syncing going back and forth using gclient sync src@revision.""" - if not self.enabled: - return - self.gclient(['config', '--spec', 'solutions=[' '{"name": "src",' @@ -1893,9 +1840,6 @@ class BlinkDEPSTransitionSmokeTest(GClientSmokeBase): def testBlinkDEPSChangeUsingGit(self): """Like testBlinkDEPSChangeUsingGclient, but move the main project using directly git and not gclient sync.""" - if not self.enabled: - return - self.gclient(['config', '--spec', 'solutions=[' '{"name": "src",' @@ -1926,9 +1870,6 @@ class BlinkDEPSTransitionSmokeTest(GClientSmokeBase): def testBlinkLocalBranchesArePreserved(self): """Checks that the state of local git branches are effectively preserved when going back and forth.""" - if not self.enabled: - return - self.gclient(['config', '--spec', 'solutions=[' '{"name": "src",' @@ -1958,6 +1899,8 @@ class GClientSmokeCipd(GClientSmokeBase): def setUp(self): super(GClientSmokeCipd, self).setUp() self.enabled = self.FAKE_REPOS.set_up_git() + if not self.enabled: + self.skipTest('git fake repos not available') self.env['PATH'] = (os.path.join(ROOT_DIR, 'testing_support') + os.pathsep + self.env['PATH'])