| OLD | NEW |
| 1 # Copyright 2014 Dirk Pranke. All rights reserved. | 1 # Copyright 2014 Dirk Pranke. All rights reserved. |
| 2 # | 2 # |
| 3 # Licensed under the Apache License, Version 2.0 (the "License"); | 3 # Licensed under the Apache License, Version 2.0 (the "License"); |
| 4 # you may not use this file except in compliance with the License. | 4 # you may not use this file except in compliance with the License. |
| 5 # You may obtain a copy of the License at | 5 # You may obtain a copy of the License at |
| 6 # | 6 # |
| 7 # http://www.apache.org/licenses/LICENSE-2.0 | 7 # http://www.apache.org/licenses/LICENSE-2.0 |
| 8 # | 8 # |
| 9 # Unless required by applicable law or agreed to in writing, software | 9 # Unless required by applicable law or agreed to in writing, software |
| 10 # distributed under the License is distributed on an "AS IS" BASIS, | 10 # distributed under the License is distributed on an "AS IS" BASIS, |
| (...skipping 17 matching lines...) Expand all Loading... |
| 28 else: # pragma: python3 | 28 else: # pragma: python3 |
| 29 # pylint: disable=E0611 | 29 # pylint: disable=E0611 |
| 30 assert sys.version_info.major == 3 | 30 assert sys.version_info.major == 3 |
| 31 from urllib.request import urlopen, Request # pylint: disable=F0401,E0611 | 31 from urllib.request import urlopen, Request # pylint: disable=F0401,E0611 |
| 32 | 32 |
| 33 | 33 |
| 34 class Host(object): | 34 class Host(object): |
| 35 python_interpreter = sys.executable | 35 python_interpreter = sys.executable |
| 36 is_python3 = bool(sys.version_info.major == 3) | 36 is_python3 = bool(sys.version_info.major == 3) |
| 37 | 37 |
| 38 pathsep = os.pathsep |
| 38 sep = os.sep | 39 sep = os.sep |
| 39 env = os.environ | 40 env = os.environ |
| 40 | 41 |
| 41 _orig_stdout = sys.stdout | 42 _orig_stdout = sys.stdout |
| 42 _orig_stderr = sys.stderr | 43 _orig_stderr = sys.stderr |
| 43 | 44 |
| 44 def __init__(self): | 45 def __init__(self): |
| 45 self.logger = logging.getLogger() | 46 self.logger = logging.getLogger() |
| 46 self._orig_logging_handlers = None | 47 self._orig_logging_handlers = None |
| 47 self.stdout = sys.stdout | 48 self.stdout = sys.stdout |
| (...skipping 22 matching lines...) Expand all Loading... |
| 70 stderr=subprocess.PIPE, stdin=stdin_pipe, | 71 stderr=subprocess.PIPE, stdin=stdin_pipe, |
| 71 env=env) | 72 env=env) |
| 72 if stdin_pipe: | 73 if stdin_pipe: |
| 73 proc.stdin.write(stdin.encode('utf-8')) | 74 proc.stdin.write(stdin.encode('utf-8')) |
| 74 stdout, stderr = proc.communicate() | 75 stdout, stderr = proc.communicate() |
| 75 | 76 |
| 76 # pylint type checking bug - pylint: disable=E1103 | 77 # pylint type checking bug - pylint: disable=E1103 |
| 77 return proc.returncode, stdout.decode('utf-8'), stderr.decode('utf-8') | 78 return proc.returncode, stdout.decode('utf-8'), stderr.decode('utf-8') |
| 78 | 79 |
| 79 def call_inline(self, argv, env=None): | 80 def call_inline(self, argv, env=None): |
| 81 if isinstance(self.stdout, _TeedStream): # pragma: no cover |
| 82 ret, out, err = self.call(argv, env) |
| 83 self.print_(out, end='') |
| 84 self.print_(err, end='', stream=self.stderr) |
| 85 return ret |
| 80 return subprocess.call(argv, stdin=self.stdin, stdout=self.stdout, | 86 return subprocess.call(argv, stdin=self.stdin, stdout=self.stdout, |
| 81 stderr=self.stderr, env=env) | 87 stderr=self.stderr, env=env) |
| 82 | 88 |
| 83 def chdir(self, *comps): | 89 def chdir(self, *comps): |
| 84 return os.chdir(self.join(*comps)) | 90 return os.chdir(self.join(*comps)) |
| 85 | 91 |
| 86 def cpu_count(self): | 92 def cpu_count(self): |
| 87 return multiprocessing.cpu_count() | 93 return multiprocessing.cpu_count() |
| 88 | 94 |
| 89 def dirname(self, *comps): | 95 def dirname(self, *comps): |
| (...skipping 29 matching lines...) Expand all Loading... |
| 119 return os.path.isfile(os.path.join(*comps)) | 125 return os.path.isfile(os.path.join(*comps)) |
| 120 | 126 |
| 121 def join(self, *comps): | 127 def join(self, *comps): |
| 122 return os.path.join(*comps) | 128 return os.path.join(*comps) |
| 123 | 129 |
| 124 def maybe_mkdir(self, *comps): | 130 def maybe_mkdir(self, *comps): |
| 125 path = self.abspath(self.join(*comps)) | 131 path = self.abspath(self.join(*comps)) |
| 126 if not self.exists(path): | 132 if not self.exists(path): |
| 127 os.makedirs(path) | 133 os.makedirs(path) |
| 128 | 134 |
| 135 def mktempfile(self, delete=True): |
| 136 return tempfile.NamedTemporaryFile(delete=delete) |
| 137 |
| 129 def mkdtemp(self, **kwargs): | 138 def mkdtemp(self, **kwargs): |
| 130 return tempfile.mkdtemp(**kwargs) | 139 return tempfile.mkdtemp(**kwargs) |
| 131 | 140 |
| 132 def mtime(self, *comps): | 141 def mtime(self, *comps): |
| 133 return os.stat(self.join(*comps)).st_mtime | 142 return os.stat(self.join(*comps)).st_mtime |
| 134 | 143 |
| 135 def print_(self, msg='', end='\n', stream=None): | 144 def print_(self, msg='', end='\n', stream=None): |
| 136 stream = stream or self.stdout | 145 stream = stream or self.stdout |
| 137 stream.write(str(msg) + end) | 146 stream.write(str(msg) + end) |
| 138 stream.flush() | 147 stream.flush() |
| (...skipping 129 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 268 self.truncate(0) | 277 self.truncate(0) |
| 269 self.capturing = True | 278 self.capturing = True |
| 270 self.diverting = divert | 279 self.diverting = divert |
| 271 | 280 |
| 272 def restore(self): | 281 def restore(self): |
| 273 msg = self.getvalue() | 282 msg = self.getvalue() |
| 274 self.truncate(0) | 283 self.truncate(0) |
| 275 self.capturing = False | 284 self.capturing = False |
| 276 self.diverting = False | 285 self.diverting = False |
| 277 return msg | 286 return msg |
| OLD | NEW |