OLD | NEW |
1 # Copyright (c) 2011, the Dart project authors. Please see the AUTHORS file | 1 # Copyright (c) 2011, the Dart project authors. Please see the AUTHORS file |
2 # for details. All rights reserved. Use of this source code is governed by a | 2 # for details. All rights reserved. Use of this source code is governed by a |
3 # BSD-style license that can be found in the LICENSE file. | 3 # BSD-style license that can be found in the LICENSE file. |
4 | 4 |
5 # This file contains a set of utilities functions used by other Python-based | 5 # This file contains a set of utilities functions used by other Python-based |
6 # scripts. | 6 # scripts. |
7 | 7 |
8 import commands | 8 import commands |
9 import os | 9 import os |
10 import platform | 10 import platform |
(...skipping 126 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
137 | 137 |
138 def GetBuildRoot(target_os, mode=None, arch=None): | 138 def GetBuildRoot(target_os, mode=None, arch=None): |
139 if arch == 'dartc' and RUN_FROM_TOP_DIR: arch = ARCH_GUESS | 139 if arch == 'dartc' and RUN_FROM_TOP_DIR: arch = ARCH_GUESS |
140 global BUILD_ROOT | 140 global BUILD_ROOT |
141 if mode: | 141 if mode: |
142 return os.path.join(BUILD_ROOT[target_os], GetBuildConf(mode, arch)) | 142 return os.path.join(BUILD_ROOT[target_os], GetBuildConf(mode, arch)) |
143 else: | 143 else: |
144 return BUILD_ROOT[target_os] | 144 return BUILD_ROOT[target_os] |
145 | 145 |
146 | 146 |
| 147 def RewritePathSeparator(path, workspace): |
| 148 # Paths in test files are always specified using '/' |
| 149 # as the path separator. Replace with the actual |
| 150 # path separator before use. |
| 151 if ('/' in path): |
| 152 split_path = path.split('/') |
| 153 path = os.sep.join(split_path) |
| 154 path = os.path.join(workspace, path) |
| 155 if not os.path.exists(path): |
| 156 raise Exception(path) |
| 157 return path |
| 158 |
| 159 |
147 def ParseTestOptions(pattern, source, workspace): | 160 def ParseTestOptions(pattern, source, workspace): |
148 match = pattern.search(source) | 161 match = pattern.search(source) |
149 # Options should be a single line in the test case no splits. | |
150 if match: | 162 if match: |
151 def rewrite(path, workspace): | 163 return [RewritePathSeparator(o, workspace) for o in match.group(1).split(' '
)] |
152 # Paths in test files are always specified using '/' | |
153 # as the path separator. Replace with the actual | |
154 # path separator before use. | |
155 if ('/' in path): | |
156 split_path = path.split('/') | |
157 path = os.sep.join(split_path) | |
158 path = os.path.join(workspace, path) | |
159 if not os.path.exists(path): | |
160 raise Exception(path) | |
161 return path | |
162 return [rewrite(o, workspace) for o in match.group(1).split(' ')] | |
163 else: | 164 else: |
164 return None | 165 return None |
165 | 166 |
| 167 |
| 168 def ParseTestOptionsMultiple(pattern, source, workspace): |
| 169 matches = pattern.findall(source) |
| 170 if matches: |
| 171 result = [] |
| 172 for match in matches: |
| 173 result.append( |
| 174 [RewritePathSeparator(o, workspace) for o in match.split(' ')]); |
| 175 return result |
| 176 else: |
| 177 return None |
| 178 |
166 | 179 |
167 def ConfigureJava(): | 180 def ConfigureJava(): |
168 java_home = '/usr/libexec/java_home' | 181 java_home = '/usr/libexec/java_home' |
169 if os.path.exists(java_home): | 182 if os.path.exists(java_home): |
170 proc = subprocess.Popen([java_home, '-v', '1.6+'], | 183 proc = subprocess.Popen([java_home, '-v', '1.6+'], |
171 stdout=subprocess.PIPE, | 184 stdout=subprocess.PIPE, |
172 stderr=subprocess.PIPE) | 185 stderr=subprocess.PIPE) |
173 (stdout, stderr) = proc.communicate() | 186 (stdout, stderr) = proc.communicate() |
174 if proc.wait() != 0: | 187 if proc.wait() != 0: |
175 raise ToolError('non-zero exit code from ' + java_home) | 188 raise ToolError('non-zero exit code from ' + java_home) |
(...skipping 42 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
218 def __init__(self, value): | 231 def __init__(self, value): |
219 self.value = value | 232 self.value = value |
220 | 233 |
221 def __str__(self): | 234 def __str__(self): |
222 return repr(self.value) | 235 return repr(self.value) |
223 | 236 |
224 | 237 |
225 if __name__ == "__main__": | 238 if __name__ == "__main__": |
226 import sys | 239 import sys |
227 Main(sys.argv) | 240 Main(sys.argv) |
OLD | NEW |