1 #!/usr/bin/env python 2 3 # Copyright (c) 2014 Google Inc. All rights reserved. 4 # Use of this source code is governed by a BSD-style license that can be 5 # found in the LICENSE file. 6 7 """ 8 Verifies that a swift framework builds correctly. 9 """ 10 11 import TestGyp 12 import TestMac 13 14 import collections 15 import sys 16 import subprocess 17 18 if sys.platform == 'darwin': 19 print "This test is currently disabled: https://crbug.com/483696." 20 sys.exit(0) 21 22 test = TestGyp.TestGyp(formats=['xcode']) 23 24 # Ensures that the given symbol is present in the given file, by running nm. 25 def CheckHasSymbolName(path, symbol): 26 output = subprocess.check_output(['nm', '-j', path]) 27 idx = output.find(symbol) 28 if idx == -1: 29 print 'Swift: Could not find symobl: %s' % symbol 30 test.fail_test() 31 32 test_cases = [] 33 34 # Run this for iOS on XCode 6.0 or greater 35 if TestMac.Xcode.Version() >= '0600': 36 test_cases.append(('Default', 'iphoneos')) 37 test_cases.append(('Default', 'iphonesimulator')) 38 39 # Run it for Mac on XCode 6.1 or greater 40 if TestMac.Xcode.Version() >= '0610': 41 test_cases.append(('Default', None)) 42 43 # Generate the project. 44 test.run_gyp('test.gyp', chdir='swift-library') 45 46 # Build and verify for each configuration. 47 for configuration, sdk in test_cases: 48 kwds = collections.defaultdict(list) 49 if test.format == 'xcode': 50 if sdk is not None: 51 kwds['arguments'].extend(['-sdk', sdk]) 52 53 test.set_configuration(configuration) 54 test.build('test.gyp', 'SwiftFramework', chdir='swift-library', **kwds) 55 56 filename = 'SwiftFramework.framework/SwiftFramework' 57 result_file = test.built_file_path(filename, chdir='swift-library') 58 59 test.must_exist(result_file) 60 61 # Check to make sure that our swift class (GypSwiftTest) is present in the 62 # built binary 63 CheckHasSymbolName(result_file, "C14SwiftFramework12GypSwiftTest") 64 65 test.pass_test() 66