diff options
Diffstat (limited to 'media/webrtc/trunk/tools/gyp/test/lib/TestMac.py')
-rw-r--r-- | media/webrtc/trunk/tools/gyp/test/lib/TestMac.py | 73 |
1 files changed, 73 insertions, 0 deletions
diff --git a/media/webrtc/trunk/tools/gyp/test/lib/TestMac.py b/media/webrtc/trunk/tools/gyp/test/lib/TestMac.py new file mode 100644 index 000000000..68605d77b --- /dev/null +++ b/media/webrtc/trunk/tools/gyp/test/lib/TestMac.py @@ -0,0 +1,73 @@ +# Copyright (c) 2014 Google Inc. All rights reserved. +# Use of this source code is governed by a BSD-style license that can be +# found in the LICENSE file. + +""" +TestMac.py: a collection of helper function shared between test on Mac OS X. +""" + +import re +import subprocess + +__all__ = ['Xcode', 'CheckFileType'] + + +def CheckFileType(test, file, archs): + """Check that |file| contains exactly |archs| or fails |test|.""" + proc = subprocess.Popen(['lipo', '-info', file], stdout=subprocess.PIPE) + o = proc.communicate()[0].strip() + assert not proc.returncode + if len(archs) == 1: + pattern = re.compile('^Non-fat file: (.*) is architecture: (.*)$') + else: + pattern = re.compile('^Architectures in the fat file: (.*) are: (.*)$') + match = pattern.match(o) + if match is None: + print 'Ouput does not match expected pattern: %s' % (pattern.pattern) + test.fail_test() + else: + found_file, found_archs = match.groups() + if found_file != file or set(found_archs.split()) != set(archs): + print 'Expected file %s with arch %s, got %s with arch %s' % ( + file, ' '.join(archs), found_file, found_archs) + test.fail_test() + + +class XcodeInfo(object): + """Simplify access to Xcode informations.""" + + def __init__(self): + self._cache = {} + + def _XcodeVersion(self): + lines = subprocess.check_output(['xcodebuild', '-version']).splitlines() + version = ''.join(lines[0].split()[-1].split('.')) + version = (version + '0' * (3 - len(version))).zfill(4) + return version, lines[-1].split()[-1] + + def Version(self): + if 'Version' not in self._cache: + self._cache['Version'], self._cache['Build'] = self._XcodeVersion() + return self._cache['Version'] + + def Build(self): + if 'Build' not in self._cache: + self._cache['Version'], self._cache['Build'] = self._XcodeVersion() + return self._cache['Build'] + + def SDKBuild(self): + if 'SDKBuild' not in self._cache: + self._cache['SDKBuild'] = subprocess.check_output( + ['xcodebuild', '-version', '-sdk', '', 'ProductBuildVersion']) + self._cache['SDKBuild'] = self._cache['SDKBuild'].rstrip('\n') + return self._cache['SDKBuild'] + + def SDKVersion(self): + if 'SDKVersion' not in self._cache: + self._cache['SDKVersion'] = subprocess.check_output( + ['xcodebuild', '-version', '-sdk', '', 'SDKVersion']) + self._cache['SDKVersion'] = self._cache['SDKVersion'].rstrip('\n') + return self._cache['SDKVersion'] + + +Xcode = XcodeInfo() |