1#!/usr/bin/env python
2
3# Copyright (c) 2012 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 app bundles are built correctly.
9"""
10
11import TestGyp
12
13import os
14import sys
15
16if sys.platform == 'darwin':
17  print "This test is currently disabled: https://crbug.com/483696."
18  sys.exit(0)
19
20
21def ls(path):
22  '''Returns a list of all files in a directory, relative to the directory.'''
23  result = []
24  for dirpath, _, files in os.walk(path):
25    for f in files:
26      result.append(os.path.join(dirpath, f)[len(path) + 1:])
27  return result
28
29
30if sys.platform == 'darwin':
31  test = TestGyp.TestGyp(formats=['ninja', 'make', 'xcode'])
32
33  test.run_gyp('framework.gyp', chdir='framework')
34
35  test.build('framework.gyp', 'test_framework', chdir='framework')
36
37  # Binary
38  test.built_file_must_exist(
39      'Test Framework.framework/Versions/A/Test Framework',
40      chdir='framework')
41
42  # Info.plist
43  info_plist = test.built_file_path(
44      'Test Framework.framework/Versions/A/Resources/Info.plist',
45      chdir='framework')
46  test.must_exist(info_plist)
47  test.must_contain(info_plist, 'com.yourcompany.Test_Framework')
48
49  # Resources
50  test.built_file_must_exist(
51      'Test Framework.framework/Versions/A/Resources/English.lproj/'
52      'InfoPlist.strings',
53      chdir='framework')
54
55  # Symlinks created by packaging process
56  test.built_file_must_exist('Test Framework.framework/Versions/Current',
57                             chdir='framework')
58  test.built_file_must_exist('Test Framework.framework/Resources',
59                             chdir='framework')
60  test.built_file_must_exist('Test Framework.framework/Test Framework',
61                             chdir='framework')
62  # PkgInfo.
63  test.built_file_must_not_exist(
64      'Test Framework.framework/Versions/A/Resources/PkgInfo',
65      chdir='framework')
66
67  # Check that no other files get added to the bundle.
68  if set(ls(test.built_file_path('Test Framework.framework',
69                                 chdir='framework'))) != \
70     set(['Versions/A/Test Framework',
71          'Versions/A/Resources/Info.plist',
72          'Versions/A/Resources/English.lproj/InfoPlist.strings',
73          'Test Framework',
74          'Versions/A/Libraries/empty.c',  # Written by a gyp action.
75          ]):
76    test.fail_test()
77
78  test.pass_test()
79