• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
1#!/usr/bin/env python
2
3# Copyright (c) 2013 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"""
8Verifies that device and simulator bundles are built correctly.
9"""
10
11import plistlib
12import TestGyp
13import os
14import struct
15import subprocess
16import sys
17import tempfile
18
19
20def CheckFileType(file, expected):
21  proc = subprocess.Popen(['lipo', '-info', file], stdout=subprocess.PIPE)
22  o = proc.communicate()[0].strip()
23  assert not proc.returncode
24  if not expected in o:
25    print 'File: Expected %s, got %s' % (expected, o)
26    test.fail_test()
27
28
29def XcodeVersion():
30  xcode, build = GetStdout(['xcodebuild', '-version']).splitlines()
31  xcode = xcode.split()[-1].replace('.', '')
32  xcode = (xcode + '0' * (3 - len(xcode))).zfill(4)
33  return xcode
34
35
36def GetStdout(cmdlist):
37  proc = subprocess.Popen(cmdlist, stdout=subprocess.PIPE)
38  o = proc.communicate()[0].strip()
39  assert not proc.returncode
40  return o
41
42
43if sys.platform == 'darwin':
44  test = TestGyp.TestGyp()
45
46  test.run_gyp('test-archs.gyp', chdir='app-bundle')
47  test.set_configuration('Default')
48
49  # TODO(sdefresne): add 'Test Archs x86_64' once bots have been updated to
50  # a SDK version that supports "x86_64" architecture.
51  filenames = ['Test No Archs', 'Test Archs i386']
52  if XcodeVersion() >= '0500':
53    filenames.append('Test Archs x86_64')
54
55  for filename in filenames:
56    target = filename.replace(' ', '_').lower()
57    test.build('test-archs.gyp', target, chdir='app-bundle')
58    result_file = test.built_file_path(
59        '%s.bundle/%s' % (filename, filename), chdir='app-bundle')
60    test.must_exist(result_file)
61
62    expected = 'i386'
63    if 'x86_64' in filename:
64      expected = 'x86_64'
65      CheckFileType(result_file, expected)
66
67  test.pass_test()
68