zerg_xcode 0.1 → 0.2

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -16,7 +16,216 @@ class Plugins::ImportTest < Test::Unit::TestCase
16
16
  @plugin = ZergXcode.plugin 'import'
17
17
  end
18
18
 
19
- def test_plugin
20
- flunk
19
+ def test_import_identical_small
20
+ project = ZergXcode.load 'testdata/TestApp'
21
+ assert_import_identical project
22
+ end
23
+
24
+ def test_import_identical_large
25
+ project = ZergXcode.load 'testdata/ZergSupport'
26
+ assert_import_identical project
27
+ end
28
+
29
+ def test_import_differents
30
+ small = ZergXcode.load 'testdata/TestApp'
31
+ small_file_set = Set.new(small.all_files.map { |file| file[:path] })
32
+ small_target_set = Set.new(small['targets'].map { |t| t['name'] })
33
+ small_target_filesets = target_filesets small
34
+
35
+ large = ZergXcode.load 'testdata/ZergSupport'
36
+ large_file_set = Set.new(large.all_files.map { |file| file[:path] })
37
+ large_target_set = Set.new(large['targets'].map { |t| t['name'] })
38
+ large_target_filesets = target_filesets large
39
+
40
+ @plugin.import_project! large, small
41
+ merged_files_set = Set.new(small.all_files.map { |file| file[:path] })
42
+ merged_target_set = Set.new(small['targets'].map { |t| t['name'] })
43
+ merged_target_filesets = target_filesets small
44
+
45
+ assert_equal((small_file_set + large_file_set), merged_files_set,
46
+ "Files")
47
+ assert_equal((small_target_set + large_target_set), merged_target_set,
48
+ "Targets")
49
+ assert_equal small_target_filesets.merge(large_target_filesets),
50
+ merged_target_filesets, "Targets / files associations"
51
+ end
52
+
53
+ # Produces a map of target to file associations for a project.
54
+ #
55
+ # Looks like this:
56
+ # { 'target1' => Set(['filename1.m', 'filename2.h']) }
57
+ def target_filesets(project)
58
+ Hash[*(project['targets']).map { |target|
59
+ [target['name'], Set.new(target.all_files.map { |f| f[:object]['path'] })]
60
+ }.flatten]
61
+ end
62
+
63
+
64
+ # Clones a project, zaps its metadata, and then tries to merge the clone onto
65
+ # the original. The result should be the original.
66
+ def assert_import_identical(project)
67
+ real_files = project.all_files.select { |f| f[:path][0, 1] == '.' }
68
+ pre_archive = ZergXcode::Archiver.archive_to_hash project
69
+
70
+ cloned_project = ZergXcode::XcodeObject.from project
71
+ cloned_project.visit_once do |object, parent, key, value|
72
+ object.version = nil
73
+ object.archive_id = nil
74
+ next true
75
+ end
76
+
77
+ file_ops = @plugin.import_project! cloned_project, project
78
+ post_archive = ZergXcode::Archiver.archive_to_hash project
79
+ assert_equal pre_archive, post_archive
80
+
81
+ assert_equal real_files.length, file_ops.length, 'File operations length'
82
+ end
83
+
84
+ def test_bin_mappings
85
+ proj = ZergXcode.load 'testdata/TestApp'
86
+ mappings = @plugin.cross_reference proj, ZergXcode::XcodeObject.from(proj)
87
+
88
+ bins = @plugin.bin_mappings mappings, proj
89
+ merge, overwrite = bins[:merge], bins[:overwrite]
90
+
91
+ assert_equal Set.new, merge.intersection(overwrite),
92
+ "Merge and overwrite sets should be disjoint"
93
+
94
+ [proj['mainGroup'], proj['buildConfigurationList']].each do |object|
95
+ assert merge.include?(object), "#{object.xref_key.inspect} not in merge"
96
+ end
97
+
98
+ assert !merge.include?(proj), "Project should not be in any bin"
99
+ assert !overwrite.include?(proj), "Project should not be in any bin"
100
+ end
101
+
102
+ def test_cross_reference_identical_small
103
+ project = ZergXcode.load 'testdata/TestApp'
104
+ assert_cross_reference_covers_project project
105
+ end
106
+
107
+ def test_cross_reference_identical_large
108
+ project = ZergXcode.load 'testdata/ZergSupport'
109
+ assert_cross_reference_covers_project project
110
+ end
111
+
112
+ def assert_cross_reference_covers_project(project)
113
+ cloned_project = ZergXcode::XcodeObject.from project
114
+
115
+ map = @plugin.cross_reference project, cloned_project
116
+ objects = Set.new([cloned_project])
117
+ cloned_project.visit_once do |object, parent, key, value|
118
+ objects << value if value.kind_of? ZergXcode::XcodeObject
119
+ true
120
+ end
121
+
122
+ objects.each do |object|
123
+ assert map.include?(object), "Missed object #{object.xref_key.inspect}"
124
+
125
+ assert_equal object.xref_key, map[object].xref_key,
126
+ "Merge keys for cross-referenced objects do not match"
127
+ end
128
+ end
129
+
130
+ def test_execute_file_ops
131
+ ops = [{ :op => :delete, :path => 'testdata/junk.m' },
132
+ { :op => :copy, :from => 'test/awesome.m',
133
+ :to => 'testdata/NewDir/awesome.m' },
134
+ { :op => :copy, :from => 'test/ghost.m',
135
+ :to => 'testdata/Dir/ghost.m' },
136
+ ]
137
+ flexmock(File).should_receive(:exist?).with('testdata/junk.m').
138
+ and_return(true)
139
+ flexmock(FileUtils).should_receive(:rm_r).with('testdata/junk.m').
140
+ and_return(nil)
141
+ flexmock(File).should_receive(:exist?).with('testdata/NewDir').
142
+ and_return(false)
143
+ flexmock(FileUtils).should_receive(:mkdir_p).with('testdata/NewDir').
144
+ and_return(nil)
145
+ flexmock(File).should_receive(:exist?).with('test/awesome.m').
146
+ and_return(true)
147
+ flexmock(FileUtils).should_receive(:cp_r).
148
+ with('test/awesome.m', 'testdata/NewDir/awesome.m').
149
+ and_return(nil)
150
+ flexmock(File).should_receive(:exist?).with('testdata/Dir').
151
+ and_return(true)
152
+ flexmock(File).should_receive(:exist?).with('test/ghost.m').
153
+ and_return(false)
154
+
155
+ output = capture_output { @plugin.execute_file_ops! ops }
156
+ assert output.index('test/ghost.m'), "Output does not indicate copy failure"
157
+ end
158
+
159
+ def test_import_file_ops_flatten
160
+ small = ZergXcode.load 'testdata/TestApp'
161
+ flat = ZergXcode.load 'testdata/FlatTestApp'
162
+
163
+ golden_ops = [
164
+ ['delete', 'testdata/TestApp/Classes/TestAppAppDelegate.h', '*'],
165
+ ['delete', 'testdata/TestApp/Classes/TestAppAppDelegate.m', '*'],
166
+ ['delete', 'testdata/TestApp/Classes/TestAppViewController.h', '*'],
167
+ ['delete', 'testdata/TestApp/Classes/TestAppViewController.m', '*'],
168
+ ['copy', 'testdata/TestApp/TestAppAppDelegate.h',
169
+ 'testdata/FlatTestApp/TestAppAppDelegate.h'],
170
+ ['copy', 'testdata/TestApp/TestAppAppDelegate.m',
171
+ 'testdata/FlatTestApp/TestAppAppDelegate.m'],
172
+ ['copy', 'testdata/TestApp/TestAppViewController.h',
173
+ 'testdata/FlatTestApp/TestAppViewController.h'],
174
+ ['copy', 'testdata/TestApp/TestAppViewController.m',
175
+ 'testdata/FlatTestApp/TestAppViewController.m'],
176
+ ['copy', 'testdata/TestApp/TestApp_Prefix.pch',
177
+ 'testdata/FlatTestApp/TestApp_Prefix.pch'],
178
+ ['copy', 'testdata/TestApp/main.m',
179
+ 'testdata/FlatTestApp/main.m'],
180
+ ['copy', 'testdata/TestApp/TestAppViewController.xib',
181
+ 'testdata/FlatTestApp/TestAppViewController.xib'],
182
+ ['copy', 'testdata/TestApp/MainWindow.xib',
183
+ 'testdata/FlatTestApp/MainWindow.xib'],
184
+ ['copy', 'testdata/TestApp/Info.plist',
185
+ 'testdata/FlatTestApp/Info.plist'],
186
+ ]
187
+
188
+
189
+ file_ops = @plugin.import_project! flat, small
190
+ flat_ops = file_ops.map do |op|
191
+ [op[:op].to_s, op[:to] || op[:path], op[:from] || '*']
192
+ end
193
+ assert_equal golden_ops.sort, flat_ops.sort
194
+ end
195
+
196
+ def test_import_file_ops_branch
197
+ small = ZergXcode.load 'testdata/TestApp'
198
+ flat = ZergXcode.load 'testdata/FlatTestApp'
199
+
200
+ golden_ops = [
201
+ ['delete', 'testdata/FlatTestApp/TestAppAppDelegate.h', '*'],
202
+ ['delete', 'testdata/FlatTestApp/TestAppAppDelegate.m', '*'],
203
+ ['delete', 'testdata/FlatTestApp/TestAppViewController.h', '*'],
204
+ ['delete', 'testdata/FlatTestApp/TestAppViewController.m', '*'],
205
+ ['copy', 'testdata/FlatTestApp/Classes/TestAppAppDelegate.h',
206
+ 'testdata/TestApp/Classes/TestAppAppDelegate.h'],
207
+ ['copy', 'testdata/FlatTestApp/Classes/TestAppAppDelegate.m',
208
+ 'testdata/TestApp/Classes/TestAppAppDelegate.m'],
209
+ ['copy', 'testdata/FlatTestApp/Classes/TestAppViewController.h',
210
+ 'testdata/TestApp/Classes/TestAppViewController.h'],
211
+ ['copy', 'testdata/FlatTestApp/Classes/TestAppViewController.m',
212
+ 'testdata/TestApp/Classes/TestAppViewController.m'],
213
+ ['copy', 'testdata/FlatTestApp/TestApp_Prefix.pch',
214
+ 'testdata/TestApp/TestApp_Prefix.pch'],
215
+ ['copy', 'testdata/FlatTestApp/main.m',
216
+ 'testdata/TestApp/main.m'],
217
+ ['copy', 'testdata/FlatTestApp/TestAppViewController.xib',
218
+ 'testdata/TestApp/TestAppViewController.xib'],
219
+ ['copy', 'testdata/FlatTestApp/MainWindow.xib',
220
+ 'testdata/TestApp/MainWindow.xib'],
221
+ ['copy', 'testdata/FlatTestApp/Info.plist',
222
+ 'testdata/TestApp/Info.plist'],
223
+ ]
224
+
225
+ file_ops = @plugin.import_project! small, flat
226
+ branch_ops = file_ops.map do |op|
227
+ [op[:op].to_s, op[:to] || op[:path], op[:from] || '*']
228
+ end
229
+ assert_equal golden_ops.sort, branch_ops.sort
21
230
  end
22
231
  end
@@ -0,0 +1,332 @@
1
+ // !$*UTF8*$!
2
+ {
3
+ archiveVersion = 1;
4
+ classes = {
5
+ };
6
+ objectVersion = 45;
7
+ objects = {
8
+
9
+ /* Begin PBXBuildFile section */
10
+ 1D3623260D0F684500981E51 /* TestAppAppDelegate.m in Sources */ = {isa = PBXBuildFile; fileRef = 1D3623250D0F684500981E51 /* TestAppAppDelegate.m */; };
11
+ 1D60589B0D05DD56006BFB54 /* main.m in Sources */ = {isa = PBXBuildFile; fileRef = 29B97316FDCFA39411CA2CEA /* main.m */; };
12
+ 1D60589F0D05DD5A006BFB54 /* Foundation.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 1D30AB110D05D00D00671497 /* Foundation.framework */; };
13
+ 1DF5F4E00D08C38300B7A737 /* UIKit.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 1DF5F4DF0D08C38300B7A737 /* UIKit.framework */; };
14
+ 288765A50DF7441C002DB57D /* CoreGraphics.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 288765A40DF7441C002DB57D /* CoreGraphics.framework */; };
15
+ 2899E5220DE3E06400AC0155 /* TestAppViewController.xib in Resources */ = {isa = PBXBuildFile; fileRef = 2899E5210DE3E06400AC0155 /* TestAppViewController.xib */; };
16
+ 28AD733F0D9D9553002E5188 /* MainWindow.xib in Resources */ = {isa = PBXBuildFile; fileRef = 28AD733E0D9D9553002E5188 /* MainWindow.xib */; };
17
+ 28D7ACF80DDB3853001CB0EB /* TestAppViewController.m in Sources */ = {isa = PBXBuildFile; fileRef = 28D7ACF70DDB3853001CB0EB /* TestAppViewController.m */; };
18
+ 5795E2960F52771600AD2893 /* TestAppAppDelegate.h in Headers */ = {isa = PBXBuildFile; fileRef = 1D3623240D0F684500981E51 /* TestAppAppDelegate.h */; };
19
+ 5795E2970F52771600AD2893 /* TestAppViewController.h in Headers */ = {isa = PBXBuildFile; fileRef = 28D7ACF60DDB3853001CB0EB /* TestAppViewController.h */; };
20
+ /* End PBXBuildFile section */
21
+
22
+ /* Begin PBXFileReference section */
23
+ 1D30AB110D05D00D00671497 /* Foundation.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = Foundation.framework; path = System/Library/Frameworks/Foundation.framework; sourceTree = SDKROOT; };
24
+ 1D3623240D0F684500981E51 /* TestAppAppDelegate.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = TestAppAppDelegate.h; path = ../TestAppAppDelegate.h; sourceTree = "<group>"; };
25
+ 1D3623250D0F684500981E51 /* TestAppAppDelegate.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; name = TestAppAppDelegate.m; path = ../TestAppAppDelegate.m; sourceTree = "<group>"; };
26
+ 1D6058910D05DD3D006BFB54 /* TestApp.app */ = {isa = PBXFileReference; explicitFileType = wrapper.application; includeInIndex = 0; path = TestApp.app; sourceTree = BUILT_PRODUCTS_DIR; };
27
+ 1DF5F4DF0D08C38300B7A737 /* UIKit.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = UIKit.framework; path = System/Library/Frameworks/UIKit.framework; sourceTree = SDKROOT; };
28
+ 288765A40DF7441C002DB57D /* CoreGraphics.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = CoreGraphics.framework; path = System/Library/Frameworks/CoreGraphics.framework; sourceTree = SDKROOT; };
29
+ 2899E5210DE3E06400AC0155 /* TestAppViewController.xib */ = {isa = PBXFileReference; lastKnownFileType = file.xib; path = TestAppViewController.xib; sourceTree = "<group>"; };
30
+ 28AD733E0D9D9553002E5188 /* MainWindow.xib */ = {isa = PBXFileReference; lastKnownFileType = file.xib; path = MainWindow.xib; sourceTree = "<group>"; };
31
+ 28D7ACF60DDB3853001CB0EB /* TestAppViewController.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = TestAppViewController.h; path = ../TestAppViewController.h; sourceTree = "<group>"; };
32
+ 28D7ACF70DDB3853001CB0EB /* TestAppViewController.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; name = TestAppViewController.m; path = ../TestAppViewController.m; sourceTree = "<group>"; };
33
+ 29B97316FDCFA39411CA2CEA /* main.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = main.m; sourceTree = "<group>"; };
34
+ 32CA4F630368D1EE00C91783 /* TestApp_Prefix.pch */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = TestApp_Prefix.pch; sourceTree = "<group>"; };
35
+ 57A5555D0F50DE4B00642792 /* libTestLib.a */ = {isa = PBXFileReference; explicitFileType = archive.ar; includeInIndex = 0; path = libTestLib.a; sourceTree = BUILT_PRODUCTS_DIR; };
36
+ 8D1107310486CEB800E47090 /* Info.plist */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.plist.xml; path = Info.plist; sourceTree = "<group>"; };
37
+ /* End PBXFileReference section */
38
+
39
+ /* Begin PBXFrameworksBuildPhase section */
40
+ 1D60588F0D05DD3D006BFB54 /* Frameworks */ = {
41
+ isa = PBXFrameworksBuildPhase;
42
+ buildActionMask = 2147483647;
43
+ files = (
44
+ 1D60589F0D05DD5A006BFB54 /* Foundation.framework in Frameworks */,
45
+ 1DF5F4E00D08C38300B7A737 /* UIKit.framework in Frameworks */,
46
+ 288765A50DF7441C002DB57D /* CoreGraphics.framework in Frameworks */,
47
+ );
48
+ runOnlyForDeploymentPostprocessing = 0;
49
+ };
50
+ 57A5555B0F50DE4B00642792 /* Frameworks */ = {
51
+ isa = PBXFrameworksBuildPhase;
52
+ buildActionMask = 2147483647;
53
+ files = (
54
+ );
55
+ runOnlyForDeploymentPostprocessing = 0;
56
+ };
57
+ /* End PBXFrameworksBuildPhase section */
58
+
59
+ /* Begin PBXGroup section */
60
+ 080E96DDFE201D6D7F000001 /* Classes */ = {
61
+ isa = PBXGroup;
62
+ children = (
63
+ 1D3623240D0F684500981E51 /* TestAppAppDelegate.h */,
64
+ 1D3623250D0F684500981E51 /* TestAppAppDelegate.m */,
65
+ 28D7ACF60DDB3853001CB0EB /* TestAppViewController.h */,
66
+ 28D7ACF70DDB3853001CB0EB /* TestAppViewController.m */,
67
+ );
68
+ path = Classes;
69
+ sourceTree = "<group>";
70
+ };
71
+ 19C28FACFE9D520D11CA2CBB /* Products */ = {
72
+ isa = PBXGroup;
73
+ children = (
74
+ 1D6058910D05DD3D006BFB54 /* TestApp.app */,
75
+ 57A5555D0F50DE4B00642792 /* libTestLib.a */,
76
+ );
77
+ name = Products;
78
+ sourceTree = "<group>";
79
+ };
80
+ 29B97314FDCFA39411CA2CEA /* CustomTemplate */ = {
81
+ isa = PBXGroup;
82
+ children = (
83
+ 080E96DDFE201D6D7F000001 /* Classes */,
84
+ 29B97315FDCFA39411CA2CEA /* Other Sources */,
85
+ 29B97317FDCFA39411CA2CEA /* Resources */,
86
+ 29B97323FDCFA39411CA2CEA /* Frameworks */,
87
+ 19C28FACFE9D520D11CA2CBB /* Products */,
88
+ );
89
+ name = CustomTemplate;
90
+ sourceTree = "<group>";
91
+ };
92
+ 29B97315FDCFA39411CA2CEA /* Other Sources */ = {
93
+ isa = PBXGroup;
94
+ children = (
95
+ 32CA4F630368D1EE00C91783 /* TestApp_Prefix.pch */,
96
+ 29B97316FDCFA39411CA2CEA /* main.m */,
97
+ );
98
+ name = "Other Sources";
99
+ sourceTree = "<group>";
100
+ };
101
+ 29B97317FDCFA39411CA2CEA /* Resources */ = {
102
+ isa = PBXGroup;
103
+ children = (
104
+ 2899E5210DE3E06400AC0155 /* TestAppViewController.xib */,
105
+ 28AD733E0D9D9553002E5188 /* MainWindow.xib */,
106
+ 8D1107310486CEB800E47090 /* Info.plist */,
107
+ );
108
+ name = Resources;
109
+ sourceTree = "<group>";
110
+ };
111
+ 29B97323FDCFA39411CA2CEA /* Frameworks */ = {
112
+ isa = PBXGroup;
113
+ children = (
114
+ 1DF5F4DF0D08C38300B7A737 /* UIKit.framework */,
115
+ 1D30AB110D05D00D00671497 /* Foundation.framework */,
116
+ 288765A40DF7441C002DB57D /* CoreGraphics.framework */,
117
+ );
118
+ name = Frameworks;
119
+ sourceTree = "<group>";
120
+ };
121
+ /* End PBXGroup section */
122
+
123
+ /* Begin PBXHeadersBuildPhase section */
124
+ 57A555590F50DE4B00642792 /* Headers */ = {
125
+ isa = PBXHeadersBuildPhase;
126
+ buildActionMask = 2147483647;
127
+ files = (
128
+ 5795E2960F52771600AD2893 /* TestAppAppDelegate.h in Headers */,
129
+ 5795E2970F52771600AD2893 /* TestAppViewController.h in Headers */,
130
+ );
131
+ runOnlyForDeploymentPostprocessing = 0;
132
+ };
133
+ /* End PBXHeadersBuildPhase section */
134
+
135
+ /* Begin PBXNativeTarget section */
136
+ 1D6058900D05DD3D006BFB54 /* TestApp */ = {
137
+ isa = PBXNativeTarget;
138
+ buildConfigurationList = 1D6058960D05DD3E006BFB54 /* Build configuration list for PBXNativeTarget "TestApp" */;
139
+ buildPhases = (
140
+ 1D60588D0D05DD3D006BFB54 /* Resources */,
141
+ 1D60588E0D05DD3D006BFB54 /* Sources */,
142
+ 1D60588F0D05DD3D006BFB54 /* Frameworks */,
143
+ );
144
+ buildRules = (
145
+ );
146
+ dependencies = (
147
+ );
148
+ name = TestApp;
149
+ productName = TestApp;
150
+ productReference = 1D6058910D05DD3D006BFB54 /* TestApp.app */;
151
+ productType = "com.apple.product-type.application";
152
+ };
153
+ 57A5555C0F50DE4B00642792 /* TestLib */ = {
154
+ isa = PBXNativeTarget;
155
+ buildConfigurationList = 57A555600F50DE6B00642792 /* Build configuration list for PBXNativeTarget "TestLib" */;
156
+ buildPhases = (
157
+ 57A555590F50DE4B00642792 /* Headers */,
158
+ 57A5555A0F50DE4B00642792 /* Sources */,
159
+ 57A5555B0F50DE4B00642792 /* Frameworks */,
160
+ );
161
+ buildRules = (
162
+ );
163
+ dependencies = (
164
+ );
165
+ name = TestLib;
166
+ productName = TestLib;
167
+ productReference = 57A5555D0F50DE4B00642792 /* libTestLib.a */;
168
+ productType = "com.apple.product-type.library.static";
169
+ };
170
+ /* End PBXNativeTarget section */
171
+
172
+ /* Begin PBXProject section */
173
+ 29B97313FDCFA39411CA2CEA /* Project object */ = {
174
+ isa = PBXProject;
175
+ buildConfigurationList = C01FCF4E08A954540054247B /* Build configuration list for PBXProject "TestApp" */;
176
+ compatibilityVersion = "Xcode 3.1";
177
+ hasScannedForEncodings = 1;
178
+ mainGroup = 29B97314FDCFA39411CA2CEA /* CustomTemplate */;
179
+ projectDirPath = "";
180
+ projectRoot = "";
181
+ targets = (
182
+ 1D6058900D05DD3D006BFB54 /* TestApp */,
183
+ 57A5555C0F50DE4B00642792 /* TestLib */,
184
+ );
185
+ };
186
+ /* End PBXProject section */
187
+
188
+ /* Begin PBXResourcesBuildPhase section */
189
+ 1D60588D0D05DD3D006BFB54 /* Resources */ = {
190
+ isa = PBXResourcesBuildPhase;
191
+ buildActionMask = 2147483647;
192
+ files = (
193
+ 28AD733F0D9D9553002E5188 /* MainWindow.xib in Resources */,
194
+ 2899E5220DE3E06400AC0155 /* TestAppViewController.xib in Resources */,
195
+ );
196
+ runOnlyForDeploymentPostprocessing = 0;
197
+ };
198
+ /* End PBXResourcesBuildPhase section */
199
+
200
+ /* Begin PBXSourcesBuildPhase section */
201
+ 1D60588E0D05DD3D006BFB54 /* Sources */ = {
202
+ isa = PBXSourcesBuildPhase;
203
+ buildActionMask = 2147483647;
204
+ files = (
205
+ 1D60589B0D05DD56006BFB54 /* main.m in Sources */,
206
+ );
207
+ runOnlyForDeploymentPostprocessing = 0;
208
+ };
209
+ 57A5555A0F50DE4B00642792 /* Sources */ = {
210
+ isa = PBXSourcesBuildPhase;
211
+ buildActionMask = 2147483647;
212
+ files = (
213
+ 1D3623260D0F684500981E51 /* TestAppAppDelegate.m in Sources */,
214
+ 28D7ACF80DDB3853001CB0EB /* TestAppViewController.m in Sources */,
215
+ );
216
+ runOnlyForDeploymentPostprocessing = 0;
217
+ };
218
+ /* End PBXSourcesBuildPhase section */
219
+
220
+ /* Begin XCBuildConfiguration section */
221
+ 1D6058940D05DD3E006BFB54 /* Debug */ = {
222
+ isa = XCBuildConfiguration;
223
+ buildSettings = {
224
+ ALWAYS_SEARCH_USER_PATHS = NO;
225
+ COPY_PHASE_STRIP = NO;
226
+ GCC_DYNAMIC_NO_PIC = NO;
227
+ GCC_OPTIMIZATION_LEVEL = 0;
228
+ GCC_PRECOMPILE_PREFIX_HEADER = YES;
229
+ GCC_PREFIX_HEADER = TestApp_Prefix.pch;
230
+ INFOPLIST_FILE = Info.plist;
231
+ PRODUCT_NAME = TestApp;
232
+ };
233
+ name = Debug;
234
+ };
235
+ 1D6058950D05DD3E006BFB54 /* Release */ = {
236
+ isa = XCBuildConfiguration;
237
+ buildSettings = {
238
+ ALWAYS_SEARCH_USER_PATHS = NO;
239
+ COPY_PHASE_STRIP = YES;
240
+ GCC_PRECOMPILE_PREFIX_HEADER = YES;
241
+ GCC_PREFIX_HEADER = TestApp_Prefix.pch;
242
+ INFOPLIST_FILE = Info.plist;
243
+ PRODUCT_NAME = TestApp;
244
+ };
245
+ name = Release;
246
+ };
247
+ 57A5555E0F50DE4D00642792 /* Debug */ = {
248
+ isa = XCBuildConfiguration;
249
+ buildSettings = {
250
+ ALWAYS_SEARCH_USER_PATHS = NO;
251
+ COPY_PHASE_STRIP = NO;
252
+ GCC_DYNAMIC_NO_PIC = NO;
253
+ GCC_OPTIMIZATION_LEVEL = 0;
254
+ PREBINDING = NO;
255
+ PRODUCT_NAME = TestLib;
256
+ };
257
+ name = Debug;
258
+ };
259
+ 57A5555F0F50DE4D00642792 /* Release */ = {
260
+ isa = XCBuildConfiguration;
261
+ buildSettings = {
262
+ ALWAYS_SEARCH_USER_PATHS = NO;
263
+ COPY_PHASE_STRIP = YES;
264
+ DEBUG_INFORMATION_FORMAT = "dwarf-with-dsym";
265
+ GCC_ENABLE_FIX_AND_CONTINUE = NO;
266
+ PREBINDING = NO;
267
+ PRODUCT_NAME = TestLib;
268
+ ZERO_LINK = NO;
269
+ };
270
+ name = Release;
271
+ };
272
+ C01FCF4F08A954540054247B /* Debug */ = {
273
+ isa = XCBuildConfiguration;
274
+ buildSettings = {
275
+ ARCHS = "$(ARCHS_STANDARD_32_BIT)";
276
+ "CODE_SIGN_IDENTITY[sdk=iphoneos*]" = "iPhone Developer";
277
+ GCC_C_LANGUAGE_STANDARD = c99;
278
+ GCC_WARN_ABOUT_RETURN_TYPE = YES;
279
+ GCC_WARN_UNUSED_VARIABLE = YES;
280
+ ONLY_ACTIVE_ARCH = YES;
281
+ PREBINDING = NO;
282
+ SDKROOT = iphoneos2.2.1;
283
+ };
284
+ name = Debug;
285
+ };
286
+ C01FCF5008A954540054247B /* Release */ = {
287
+ isa = XCBuildConfiguration;
288
+ buildSettings = {
289
+ ARCHS = "$(ARCHS_STANDARD_32_BIT)";
290
+ "CODE_SIGN_IDENTITY[sdk=iphoneos*]" = "iPhone Developer";
291
+ GCC_C_LANGUAGE_STANDARD = c99;
292
+ GCC_WARN_ABOUT_RETURN_TYPE = YES;
293
+ GCC_WARN_UNUSED_VARIABLE = YES;
294
+ PREBINDING = NO;
295
+ SDKROOT = iphoneos2.2.1;
296
+ };
297
+ name = Release;
298
+ };
299
+ /* End XCBuildConfiguration section */
300
+
301
+ /* Begin XCConfigurationList section */
302
+ 1D6058960D05DD3E006BFB54 /* Build configuration list for PBXNativeTarget "TestApp" */ = {
303
+ isa = XCConfigurationList;
304
+ buildConfigurations = (
305
+ 1D6058940D05DD3E006BFB54 /* Debug */,
306
+ 1D6058950D05DD3E006BFB54 /* Release */,
307
+ );
308
+ defaultConfigurationIsVisible = 0;
309
+ defaultConfigurationName = Release;
310
+ };
311
+ 57A555600F50DE6B00642792 /* Build configuration list for PBXNativeTarget "TestLib" */ = {
312
+ isa = XCConfigurationList;
313
+ buildConfigurations = (
314
+ 57A5555E0F50DE4D00642792 /* Debug */,
315
+ 57A5555F0F50DE4D00642792 /* Release */,
316
+ );
317
+ defaultConfigurationIsVisible = 0;
318
+ defaultConfigurationName = Release;
319
+ };
320
+ C01FCF4E08A954540054247B /* Build configuration list for PBXProject "TestApp" */ = {
321
+ isa = XCConfigurationList;
322
+ buildConfigurations = (
323
+ C01FCF4F08A954540054247B /* Debug */,
324
+ C01FCF5008A954540054247B /* Release */,
325
+ );
326
+ defaultConfigurationIsVisible = 0;
327
+ defaultConfigurationName = Release;
328
+ };
329
+ /* End XCConfigurationList section */
330
+ };
331
+ rootObject = 29B97313FDCFA39411CA2CEA /* Project object */;
332
+ }