| OLD | NEW |
| (Empty) |
| 1 # Copyright 2014 The Chromium Authors. All rights reserved. | |
| 2 # Use of this source code is governed by a BSD-style license that can be | |
| 3 # found in the LICENSE file. | |
| 4 | |
| 5 import optparse | |
| 6 import os | |
| 7 import platform | |
| 8 import shutil | |
| 9 import subprocess | |
| 10 import sys | |
| 11 import tempfile | |
| 12 import unittest | |
| 13 import zipfile | |
| 14 | |
| 15 from catapult_base import cloud_storage | |
| 16 from telemetry.util import find_dependencies | |
| 17 | |
| 18 | |
| 19 class FindDependenciesTest(unittest.TestCase): | |
| 20 @unittest.skipUnless( | |
| 21 cloud_storage.SupportsProdaccess( | |
| 22 os.path.realpath(cloud_storage.FindGsutil())), | |
| 23 'Could not find a depot_tools installation with gsutil.') | |
| 24 def testGsutil(self): | |
| 25 parser = optparse.OptionParser() | |
| 26 find_dependencies.FindDependenciesCommand.AddCommandLineArgs(parser) | |
| 27 options, _ = parser.parse_args([]) | |
| 28 | |
| 29 try: | |
| 30 temp_dir = tempfile.mkdtemp() | |
| 31 zip_path = os.path.join(temp_dir, 'gsutil.zip') | |
| 32 options.zip = zip_path | |
| 33 | |
| 34 find_dependencies.ZipDependencies([], set(), options) | |
| 35 | |
| 36 if platform.system() == 'Windows': | |
| 37 with zipfile.ZipFile(zip_path, 'r') as zip_file: | |
| 38 zip_file.extractall(temp_dir) | |
| 39 else: | |
| 40 # Use unzip instead of Python zipfile to preserve file permissions. | |
| 41 with open(os.devnull, 'w') as dev_null: | |
| 42 subprocess.call(['unzip', zip_path], cwd=temp_dir, stdout=dev_null) | |
| 43 third_party_path = os.path.join(temp_dir, 'telemetry', 'src', 'tools', | |
| 44 'telemetry', 'third_party') | |
| 45 # __init__.py is in Chromium src, but we didn't include any repo files. | |
| 46 open(os.path.join(third_party_path, '__init__.py'), 'a').close() | |
| 47 | |
| 48 gsutil_path = os.path.join(third_party_path, 'gsutil', 'gsutil') | |
| 49 self.assertTrue(os.access(gsutil_path, os.X_OK)) | |
| 50 | |
| 51 with open(os.devnull, 'w') as dev_null: | |
| 52 # gsutil with no args should print usage and exit with exit code 0. | |
| 53 gsutil_command = [sys.executable, gsutil_path] | |
| 54 self.assertEqual(subprocess.call(gsutil_command, stdout=dev_null), 0) | |
| 55 | |
| 56 # gsutil config should wait for the user and not exit with exit code 1. | |
| 57 #gsutil_command = [sys.executable, gsutil_path, 'config', | |
| 58 # '-o', os.path.join(temp_dir, 'config_file')] | |
| 59 #gsutil_process = subprocess.Popen(gsutil_command, stdout=dev_null) | |
| 60 #try: | |
| 61 # util.WaitFor(gsutil_process.poll, timeout=0.5) | |
| 62 # self.assertEqual(gsutil_process.returncode, 0, | |
| 63 # msg='gsutil config failed.') | |
| 64 #except exceptions.TimeoutException: | |
| 65 # gsutil_process.terminate() | |
| 66 # gsutil_process.wait() | |
| 67 finally: | |
| 68 shutil.rmtree(temp_dir) | |
| OLD | NEW |