Index: chrome/test/pylib/common/util.py |
diff --git a/chrome/test/pylib/common/util.py b/chrome/test/pylib/common/util.py |
deleted file mode 100644 |
index be56966bfe726f24a51df6e3c1d349951e7a823a..0000000000000000000000000000000000000000 |
--- a/chrome/test/pylib/common/util.py |
+++ /dev/null |
@@ -1,151 +0,0 @@ |
-# Copyright (c) 2012 The Chromium Authors. All rights reserved. |
-# Use of this source code is governed by a BSD-style license that can be |
-# found in the LICENSE file. |
- |
-"""Generic utilities for all python scripts.""" |
- |
-import atexit |
-import httplib |
-import os |
-import signal |
-import stat |
-import subprocess |
-import sys |
-import tempfile |
-import urlparse |
- |
- |
-def GetPlatformName(): |
- """Return a string to be used in paths for the platform.""" |
- if IsWindows(): |
- return 'win' |
- if IsMac(): |
- return 'mac' |
- if IsLinux(): |
- return 'linux' |
- raise NotImplementedError('Unknown platform "%s".' % sys.platform) |
- |
- |
-def IsWindows(): |
- return sys.platform == 'cygwin' or sys.platform.startswith('win') |
- |
- |
-def IsLinux(): |
- return sys.platform.startswith('linux') |
- |
- |
-def IsMac(): |
- return sys.platform.startswith('darwin') |
- |
- |
-def _DeleteDir(path): |
- """Deletes a directory recursively, which must exist.""" |
- # Don't use shutil.rmtree because it can't delete read-only files on Win. |
- for root, dirs, files in os.walk(path, topdown=False): |
- for name in files: |
- filename = os.path.join(root, name) |
- os.chmod(filename, stat.S_IWRITE) |
- os.remove(filename) |
- for name in dirs: |
- os.rmdir(os.path.join(root, name)) |
- os.rmdir(path) |
- |
- |
-def Delete(path): |
- """Deletes the given file or directory (recursively), which must exist.""" |
- if os.path.isdir(path): |
- _DeleteDir(path) |
- else: |
- os.remove(path) |
- |
- |
-def MaybeDelete(path): |
- """Deletes the given file or directory (recurisvely), if it exists.""" |
- if os.path.exists(path): |
- Delete(path) |
- |
- |
-def MakeTempDir(parent_dir=None): |
- """Creates a temporary directory and returns an absolute path to it. |
- |
- The temporary directory is automatically deleted when the python interpreter |
- exits normally. |
- |
- Args: |
- parent_dir: the directory to create the temp dir in. If None, the system |
- temp dir is used. |
- |
- Returns: |
- The absolute path to the temporary directory. |
- """ |
- path = tempfile.mkdtemp(dir=parent_dir) |
- atexit.register(MaybeDelete, path) |
- return path |
- |
- |
-def Unzip(zip_path, output_dir): |
- """Unzips the given zip file using a system installed unzip tool. |
- |
- Args: |
- zip_path: zip file to unzip. |
- output_dir: directory to unzip the contents of the zip file. The directory |
- must exist. |
- |
- Raises: |
- RuntimeError if the unzip operation fails. |
- """ |
- if IsWindows(): |
- unzip_cmd = ['C:\\Program Files\\7-Zip\\7z.exe', 'x', '-y'] |
- else: |
- unzip_cmd = ['unzip', '-o'] |
- unzip_cmd += [zip_path] |
- if RunCommand(unzip_cmd, output_dir) != 0: |
- raise RuntimeError('Unable to unzip %s to %s' % (zip_path, output_dir)) |
- |
- |
-def Kill(pid): |
- """Terminate the given pid.""" |
- if IsWindows(): |
- subprocess.call(['taskkill.exe', '/T', '/F', '/PID', str(pid)]) |
- else: |
- os.kill(pid, signal.SIGTERM) |
- |
- |
-def RunCommand(cmd, cwd=None): |
- """Runs the given command and returns the exit code. |
- |
- Args: |
- cmd: list of command arguments. |
- cwd: working directory to execute the command, or None if the current |
- working directory should be used. |
- |
- Returns: |
- The exit code of the command. |
- """ |
- process = subprocess.Popen(cmd, cwd=cwd) |
- process.wait() |
- return process.returncode |
- |
- |
-def DoesUrlExist(url): |
- """Determines whether a resource exists at the given URL. |
- |
- Args: |
- url: URL to be verified. |
- |
- Returns: |
- True if url exists, otherwise False. |
- """ |
- parsed = urlparse.urlparse(url) |
- try: |
- conn = httplib.HTTPConnection(parsed.netloc) |
- conn.request('HEAD', parsed.path) |
- response = conn.getresponse() |
- except (socket.gaierror, socket.error): |
- return False |
- finally: |
- conn.close() |
- # Follow both permanent (301) and temporary (302) redirects. |
- if response.status == 302 or response.status == 301: |
- return DoesUrlExist(response.getheader('location')) |
- return response.status == 200 |