@@ -75,7 +75,57 @@ class XcodeProjectModelSerializationTests: XCTestCase {
75
75
XCTAssertEqual ( projectClassName, " PBXProject " )
76
76
}
77
77
78
+ func testBuildSettingsSerialization( ) {
79
+
80
+ // Create build settings.
81
+ var buildSettings = Xcode . BuildSettingsTable. BuildSettings ( )
82
+
83
+ let productNameValue = " $(TARGET_NAME:c99extidentifier) "
84
+ buildSettings. PRODUCT_NAME = productNameValue
85
+
86
+ let otherSwiftFlagValues = [ " $(inherited) " , " -DXcode " ]
87
+ buildSettings. OTHER_SWIFT_FLAGS = otherSwiftFlagValues
88
+
89
+ // Serialize it to a property list.
90
+ let plist = buildSettings. asPropertyList ( )
91
+
92
+ // Assert things about plist
93
+ guard case let . dictionary( buildSettingsDict) = plist else {
94
+ XCTFail ( " build settings plist must be a dictionary " )
95
+ return
96
+ }
97
+
98
+ guard
99
+ let productNamePlist = buildSettingsDict [ " PRODUCT_NAME " ] ,
100
+ let otherSwiftFlagsPlist = buildSettingsDict [ " OTHER_SWIFT_FLAGS " ]
101
+ else {
102
+ XCTFail ( " build settings plist must contain PRODUCT_NAME and OTHER_SWIFT_FLAGS " )
103
+ return
104
+ }
105
+
106
+ guard case let . string( productName) = productNamePlist else {
107
+ XCTFail ( " productName plist must be a string " )
108
+ return
109
+ }
110
+ XCTAssertEqual ( productName, productNameValue)
111
+
112
+ guard case let . array( otherSwiftFlagsPlists) = otherSwiftFlagsPlist else {
113
+ XCTFail ( " otherSwiftFlags plist must be an array " )
114
+ return
115
+ }
116
+
117
+ let otherSwiftFlags = otherSwiftFlagsPlists. flatMap { flagPlist -> String ? in
118
+ guard case let . string( flag) = flagPlist else {
119
+ XCTFail ( " otherSwiftFlag plist must be string " )
120
+ return nil
121
+ }
122
+ return flag
123
+ }
124
+ XCTAssertEqual ( otherSwiftFlags, otherSwiftFlagValues)
125
+ }
126
+
78
127
static var allTests = [
79
- ( " testBasicProjectCreation " , testBasicProjectSerialization) ,
128
+ ( " testBasicProjectSerialization " , testBasicProjectSerialization) ,
129
+ ( " testBuildSettingsSerialization " , testBuildSettingsSerialization) ,
80
130
]
81
131
}
0 commit comments