1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162 |
- #!/usr/bin/env python
- # 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.
- """
- Verifies that a swift framework builds correctly.
- """
- import TestGyp
- import TestMac
- import collections
- import sys
- import subprocess
- if sys.platform == 'darwin':
- test = TestGyp.TestGyp(formats=['xcode'])
- # Ensures that the given symbol is present in the given file, by running nm.
- def CheckHasSymbolName(path, symbol):
- output = subprocess.check_output(['nm', '-j', path])
- idx = output.find(symbol)
- if idx == -1:
- print 'Swift: Could not find symobl: %s' % symbol
- test.fail_test()
- test_cases = []
- # Run this for iOS on XCode 6.0 or greater
- if TestMac.Xcode.Version() >= '0600':
- test_cases.append(('Default', 'iphoneos'))
- test_cases.append(('Default', 'iphonesimulator'))
- # Run it for Mac on XCode 6.1 or greater
- if TestMac.Xcode.Version() >= '0610':
- test_cases.append(('Default', None))
- # Generate the project.
- test.run_gyp('test.gyp', chdir='swift-library')
- # Build and verify for each configuration.
- for configuration, sdk in test_cases:
- kwds = collections.defaultdict(list)
- if test.format == 'xcode':
- if sdk is not None:
- kwds['arguments'].extend(['-sdk', sdk])
- test.set_configuration(configuration)
- test.build('test.gyp', 'SwiftFramework', chdir='swift-library', **kwds)
- filename = 'SwiftFramework.framework/SwiftFramework'
- result_file = test.built_file_path(filename, chdir='swift-library')
- test.must_exist(result_file)
- # Check to make sure that our swift class (GypSwiftTest) is present in the
- # built binary
- CheckHasSymbolName(result_file, "C14SwiftFramework12GypSwiftTest")
- test.pass_test()
|