From 4a35a9004beac5ae194a8794cbce161bcadf981d Mon Sep 17 00:00:00 2001 From: Simon Evans Date: Sat, 18 Nov 2017 08:15:35 +0000 Subject: [PATCH 1/3] Dont import CoreFoundation into unit tests if not needed. --- TestFoundation/TestNSLock.swift | 4 +--- TestFoundation/TestThread.swift | 5 ++++- 2 files changed, 5 insertions(+), 4 deletions(-) diff --git a/TestFoundation/TestNSLock.swift b/TestFoundation/TestNSLock.swift index 06562b3770..5334ff0cd8 100644 --- a/TestFoundation/TestNSLock.swift +++ b/TestFoundation/TestNSLock.swift @@ -15,8 +15,6 @@ import SwiftFoundation import SwiftXCTest #endif -import CoreFoundation - class TestNSLock: XCTestCase { static var allTests: [(String, (TestNSLock) -> () throws -> Void)] { return [ @@ -32,7 +30,7 @@ class TestNSLock: XCTestCase { let condition = NSCondition() let lock = NSLock() - func test(waitTime: CFTimeInterval, shouldLock: Bool) -> Bool { + func test(waitTime: TimeInterval, shouldLock: Bool) -> Bool { let locked = lock.lock(before: Date.init(timeIntervalSinceNow: waitTime)) if locked { lock.unlock() diff --git a/TestFoundation/TestThread.swift b/TestFoundation/TestThread.swift index 6f09c8d6ee..ec6b3fc2a8 100644 --- a/TestFoundation/TestThread.swift +++ b/TestFoundation/TestThread.swift @@ -16,7 +16,10 @@ import SwiftXCTest #endif -import CoreFoundation +#if !(os(OSX) || os(iOS)) + import CoreFoundation +#endif + class TestThread : XCTestCase { static var allTests: [(String, (TestThread) -> () throws -> Void)] { From c4aad6ee7b221fb93287d41f3939fde30e439931 Mon Sep 17 00:00:00 2001 From: Simon Evans Date: Mon, 20 Nov 2017 13:17:55 +0000 Subject: [PATCH 2/3] DarwinComptibilityTests: Add Xcode Project - Add shims and minor test fixes. - Disable XDG tests as the xdgTestHelper does not currently work. - Add handling for some tests requiring macOS 10.13 that run on 10.12 when run against the sclf version of Foundation. This requires some of the tests to be duplicated and wrapped inside of a DARWIN_COMPATIBILITY_TEST conditional compile. --- .../project.pbxproj | 796 ++++++++++++++++++ DarwinCompatibilityTests/Info.plist | 22 + DarwinShims.swift | 87 ++ TestFoundation/TestBundle.swift | 27 +- TestFoundation/TestHTTPCookieStorage.swift | 2 +- TestFoundation/TestJSONEncoder.swift | 41 +- TestFoundation/TestJSONSerialization.swift | 29 +- TestFoundation/TestNSArray.swift | 15 +- TestFoundation/TestNSKeyedArchiver.swift | 7 +- TestFoundation/TestNSProgressFraction.swift | 2 + TestFoundation/TestUserDefaults.swift | 4 + TestFoundation/TestXMLParser.swift | 4 +- 12 files changed, 996 insertions(+), 40 deletions(-) create mode 100644 DarwinCompatibilityTests.xcodeproj/project.pbxproj create mode 100644 DarwinCompatibilityTests/Info.plist create mode 100644 DarwinShims.swift diff --git a/DarwinCompatibilityTests.xcodeproj/project.pbxproj b/DarwinCompatibilityTests.xcodeproj/project.pbxproj new file mode 100644 index 0000000000..268428ae64 --- /dev/null +++ b/DarwinCompatibilityTests.xcodeproj/project.pbxproj @@ -0,0 +1,796 @@ +// !$*UTF8*$! +{ + archiveVersion = 1; + classes = { + }; + objectVersion = 48; + objects = { + +/* Begin PBXBuildFile section */ + B95788861F6FB9470003EB01 /* TestNSNumberBridging.swift in Sources */ = {isa = PBXBuildFile; fileRef = B95788851F6FB9470003EB01 /* TestNSNumberBridging.swift */; }; + B9C0F82B1F8EADAF0047CC52 /* DarwinShims.swift in Sources */ = {isa = PBXBuildFile; fileRef = B9C0F8291F8EADAF0047CC52 /* DarwinShims.swift */; }; + B9C89ED21F6BF67C00087AF4 /* XCTest.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = B9C89ED11F6BF67C00087AF4 /* XCTest.framework */; }; + B9C89F361F6BF89C00087AF4 /* TestScanner.swift in Sources */ = {isa = PBXBuildFile; fileRef = B9C89EE61F6BF88F00087AF4 /* TestScanner.swift */; }; + B9C89F371F6BF89C00087AF4 /* TestNSValue.swift in Sources */ = {isa = PBXBuildFile; fileRef = B9C89EE71F6BF88F00087AF4 /* TestNSValue.swift */; }; + B9C89F381F6BF89C00087AF4 /* TestUtils.swift in Sources */ = {isa = PBXBuildFile; fileRef = B9C89EE81F6BF88F00087AF4 /* TestUtils.swift */; }; + B9C89F391F6BF89C00087AF4 /* TestProcessInfo.swift in Sources */ = {isa = PBXBuildFile; fileRef = B9C89EE91F6BF88F00087AF4 /* TestProcessInfo.swift */; }; + B9C89F3B1F6BF89C00087AF4 /* TestURLProtocol.swift in Sources */ = {isa = PBXBuildFile; fileRef = B9C89EEB1F6BF89000087AF4 /* TestURLProtocol.swift */; }; + B9C89F3C1F6BF89C00087AF4 /* TestURLSession.swift in Sources */ = {isa = PBXBuildFile; fileRef = B9C89EEC1F6BF89000087AF4 /* TestURLSession.swift */; }; + B9C89F3D1F6BF89C00087AF4 /* TestXMLParser.swift in Sources */ = {isa = PBXBuildFile; fileRef = B9C89EED1F6BF89000087AF4 /* TestXMLParser.swift */; }; + B9C89F3E1F6BF89C00087AF4 /* TestISO8601DateFormatter.swift in Sources */ = {isa = PBXBuildFile; fileRef = B9C89EEE1F6BF89000087AF4 /* TestISO8601DateFormatter.swift */; }; + B9C89F3F1F6BF89C00087AF4 /* TestNSTextCheckingResult.swift in Sources */ = {isa = PBXBuildFile; fileRef = B9C89EEF1F6BF89000087AF4 /* TestNSTextCheckingResult.swift */; }; + B9C89F401F6BF89C00087AF4 /* TestCharacterSet.swift in Sources */ = {isa = PBXBuildFile; fileRef = B9C89EF01F6BF89000087AF4 /* TestCharacterSet.swift */; }; + B9C89F411F6BF89C00087AF4 /* TestCodable.swift in Sources */ = {isa = PBXBuildFile; fileRef = B9C89EF11F6BF89100087AF4 /* TestCodable.swift */; }; + B9C89F421F6BF89C00087AF4 /* TestIndexPath.swift in Sources */ = {isa = PBXBuildFile; fileRef = B9C89EF21F6BF89100087AF4 /* TestIndexPath.swift */; }; + B9C89F431F6BF89C00087AF4 /* TestMassFormatter.swift in Sources */ = {isa = PBXBuildFile; fileRef = B9C89EF31F6BF89100087AF4 /* TestMassFormatter.swift */; }; + B9C89F441F6BF89C00087AF4 /* TestNSSet.swift in Sources */ = {isa = PBXBuildFile; fileRef = B9C89EF41F6BF89100087AF4 /* TestNSSet.swift */; }; + B9C89F451F6BF89C00087AF4 /* TestURLResponse.swift in Sources */ = {isa = PBXBuildFile; fileRef = B9C89EF51F6BF89100087AF4 /* TestURLResponse.swift */; }; + B9C89F461F6BF89C00087AF4 /* TestDate.swift in Sources */ = {isa = PBXBuildFile; fileRef = B9C89EF61F6BF89100087AF4 /* TestDate.swift */; }; + B9C89F471F6BF89C00087AF4 /* TestObjCRuntime.swift in Sources */ = {isa = PBXBuildFile; fileRef = B9C89EF71F6BF89200087AF4 /* TestObjCRuntime.swift */; }; + B9C89F481F6BF89C00087AF4 /* TestStream.swift in Sources */ = {isa = PBXBuildFile; fileRef = B9C89EF81F6BF89200087AF4 /* TestStream.swift */; }; + B9C89F491F6BF89C00087AF4 /* TestProgress.swift in Sources */ = {isa = PBXBuildFile; fileRef = B9C89EF91F6BF89200087AF4 /* TestProgress.swift */; }; + B9C89F4A1F6BF89C00087AF4 /* TestCalendar.swift in Sources */ = {isa = PBXBuildFile; fileRef = B9C89EFA1F6BF89200087AF4 /* TestCalendar.swift */; }; + B9C89F4B1F6BF89C00087AF4 /* TestBundle.swift in Sources */ = {isa = PBXBuildFile; fileRef = B9C89EFB1F6BF89200087AF4 /* TestBundle.swift */; }; + B9C89F4C1F6BF89C00087AF4 /* TestDateFormatter.swift in Sources */ = {isa = PBXBuildFile; fileRef = B9C89EFC1F6BF89200087AF4 /* TestDateFormatter.swift */; }; + B9C89F4D1F6BF89C00087AF4 /* TestHTTPCookie.swift in Sources */ = {isa = PBXBuildFile; fileRef = B9C89EFD1F6BF89200087AF4 /* TestHTTPCookie.swift */; }; + B9C89F4E1F6BF89C00087AF4 /* TestNSError.swift in Sources */ = {isa = PBXBuildFile; fileRef = B9C89EFE1F6BF89300087AF4 /* TestNSError.swift */; }; + B9C89F4F1F6BF89C00087AF4 /* TestNSString.swift in Sources */ = {isa = PBXBuildFile; fileRef = B9C89EFF1F6BF89300087AF4 /* TestNSString.swift */; }; + B9C89F501F6BF89C00087AF4 /* TestNSUUID.swift in Sources */ = {isa = PBXBuildFile; fileRef = B9C89F001F6BF89300087AF4 /* TestNSUUID.swift */; }; + B9C89F511F6BF89C00087AF4 /* TestPropertyListSerialization.swift in Sources */ = {isa = PBXBuildFile; fileRef = B9C89F011F6BF89300087AF4 /* TestPropertyListSerialization.swift */; }; + B9C89F531F6BF89C00087AF4 /* TestNSArray.swift in Sources */ = {isa = PBXBuildFile; fileRef = B9C89F031F6BF89300087AF4 /* TestNSArray.swift */; }; + B9C89F541F6BF89C00087AF4 /* TestFileHandle.swift in Sources */ = {isa = PBXBuildFile; fileRef = B9C89F051F6BF89400087AF4 /* TestFileHandle.swift */; }; + B9C89F551F6BF89C00087AF4 /* TestTimer.swift in Sources */ = {isa = PBXBuildFile; fileRef = B9C89F061F6BF89400087AF4 /* TestTimer.swift */; }; + B9C89F561F6BF89C00087AF4 /* TestTimeZone.swift in Sources */ = {isa = PBXBuildFile; fileRef = B9C89F071F6BF89400087AF4 /* TestTimeZone.swift */; }; + B9C89F571F6BF89C00087AF4 /* TestNSNumber.swift in Sources */ = {isa = PBXBuildFile; fileRef = B9C89F081F6BF89400087AF4 /* TestNSNumber.swift */; }; + B9C89F581F6BF89C00087AF4 /* TestNSAttributedString.swift in Sources */ = {isa = PBXBuildFile; fileRef = B9C89F091F6BF89400087AF4 /* TestNSAttributedString.swift */; }; + B9C89F591F6BF89C00087AF4 /* TestByteCountFormatter.swift in Sources */ = {isa = PBXBuildFile; fileRef = B9C89F0A1F6BF89400087AF4 /* TestByteCountFormatter.swift */; }; + B9C89F5A1F6BF89C00087AF4 /* TestUnit.swift in Sources */ = {isa = PBXBuildFile; fileRef = B9C89F0B1F6BF89400087AF4 /* TestUnit.swift */; }; + B9C89F5B1F6BF89C00087AF4 /* TestJSONEncoder.swift in Sources */ = {isa = PBXBuildFile; fileRef = B9C89F0C1F6BF89500087AF4 /* TestJSONEncoder.swift */; }; + B9C89F5C1F6BF89C00087AF4 /* TestOperationQueue.swift in Sources */ = {isa = PBXBuildFile; fileRef = B9C89F0D1F6BF89500087AF4 /* TestOperationQueue.swift */; }; + B9C89F5D1F6BF89C00087AF4 /* TestUserDefaults.swift in Sources */ = {isa = PBXBuildFile; fileRef = B9C89F0E1F6BF89500087AF4 /* TestUserDefaults.swift */; }; + B9C89F5E1F6BF89C00087AF4 /* TestXMLDocument.swift in Sources */ = {isa = PBXBuildFile; fileRef = B9C89F0F1F6BF89500087AF4 /* TestXMLDocument.swift */; }; + B9C89F5F1F6BF89C00087AF4 /* TestNSOrderedSet.swift in Sources */ = {isa = PBXBuildFile; fileRef = B9C89F101F6BF89500087AF4 /* TestNSOrderedSet.swift */; }; + B9C89F601F6BF89C00087AF4 /* TestIndexSet.swift in Sources */ = {isa = PBXBuildFile; fileRef = B9C89F111F6BF89500087AF4 /* TestIndexSet.swift */; }; + B9C89F611F6BF89C00087AF4 /* TestPipe.swift in Sources */ = {isa = PBXBuildFile; fileRef = B9C89F121F6BF89500087AF4 /* TestPipe.swift */; }; + B9C89F631F6BF89C00087AF4 /* TestURLRequest.swift in Sources */ = {isa = PBXBuildFile; fileRef = B9C89F141F6BF89600087AF4 /* TestURLRequest.swift */; }; + B9C89F641F6BF89C00087AF4 /* TestNSNull.swift in Sources */ = {isa = PBXBuildFile; fileRef = B9C89F151F6BF89600087AF4 /* TestNSNull.swift */; }; + B9C89F651F6BF89C00087AF4 /* TestNSKeyedArchiver.swift in Sources */ = {isa = PBXBuildFile; fileRef = B9C89F161F6BF89600087AF4 /* TestNSKeyedArchiver.swift */; }; + B9C89F661F6BF89C00087AF4 /* TestUnitConverter.swift in Sources */ = {isa = PBXBuildFile; fileRef = B9C89F171F6BF89600087AF4 /* TestUnitConverter.swift */; }; + B9C89F671F6BF89C00087AF4 /* TestNumberFormatter.swift in Sources */ = {isa = PBXBuildFile; fileRef = B9C89F181F6BF89600087AF4 /* TestNumberFormatter.swift */; }; + B9C89F681F6BF89C00087AF4 /* TestURL.swift in Sources */ = {isa = PBXBuildFile; fileRef = B9C89F191F6BF89700087AF4 /* TestURL.swift */; }; + B9C89F6A1F6BF89C00087AF4 /* TestNSRegularExpression.swift in Sources */ = {isa = PBXBuildFile; fileRef = B9C89F1B1F6BF89700087AF4 /* TestNSRegularExpression.swift */; }; + B9C89F6B1F6BF89C00087AF4 /* TestNSPredicate.swift in Sources */ = {isa = PBXBuildFile; fileRef = B9C89F1C1F6BF89700087AF4 /* TestNSPredicate.swift */; }; + B9C89F6C1F6BF89C00087AF4 /* TestNSLocale.swift in Sources */ = {isa = PBXBuildFile; fileRef = B9C89F1D1F6BF89700087AF4 /* TestNSLocale.swift */; }; + B9C89F6D1F6BF89C00087AF4 /* TestNSKeyedUnarchiver.swift in Sources */ = {isa = PBXBuildFile; fileRef = B9C89F1E1F6BF89700087AF4 /* TestNSKeyedUnarchiver.swift */; }; + B9C89F6E1F6BF89C00087AF4 /* TestPersonNameComponents.swift in Sources */ = {isa = PBXBuildFile; fileRef = B9C89F1F1F6BF89700087AF4 /* TestPersonNameComponents.swift */; }; + B9C89F6F1F6BF89C00087AF4 /* TestFileManager.swift in Sources */ = {isa = PBXBuildFile; fileRef = B9C89F201F6BF89800087AF4 /* TestFileManager.swift */; }; + B9C89F701F6BF89C00087AF4 /* TestDecimal.swift in Sources */ = {isa = PBXBuildFile; fileRef = B9C89F211F6BF89800087AF4 /* TestDecimal.swift */; }; + B9C89F711F6BF89C00087AF4 /* TestNSCache.swift in Sources */ = {isa = PBXBuildFile; fileRef = B9C89F221F6BF89800087AF4 /* TestNSCache.swift */; }; + B9C89F721F6BF89C00087AF4 /* TestNSDictionary.swift in Sources */ = {isa = PBXBuildFile; fileRef = B9C89F231F6BF89800087AF4 /* TestNSDictionary.swift */; }; + B9C89F731F6BF89C00087AF4 /* TestNotificationCenter.swift in Sources */ = {isa = PBXBuildFile; fileRef = B9C89F241F6BF89800087AF4 /* TestNotificationCenter.swift */; }; + B9C89F741F6BF89C00087AF4 /* TestProcess.swift in Sources */ = {isa = PBXBuildFile; fileRef = B9C89F251F6BF89800087AF4 /* TestProcess.swift */; }; + B9C89F751F6BF89C00087AF4 /* TestEnergyFormatter.swift in Sources */ = {isa = PBXBuildFile; fileRef = B9C89F261F6BF89900087AF4 /* TestEnergyFormatter.swift */; }; + B9C89F761F6BF89C00087AF4 /* TestNSCompoundPredicate.swift in Sources */ = {isa = PBXBuildFile; fileRef = B9C89F271F6BF89900087AF4 /* TestNSCompoundPredicate.swift */; }; + B9C89F771F6BF89C00087AF4 /* TestNotification.swift in Sources */ = {isa = PBXBuildFile; fileRef = B9C89F281F6BF89900087AF4 /* TestNotification.swift */; }; + B9C89F781F6BF89C00087AF4 /* TestNSData.swift in Sources */ = {isa = PBXBuildFile; fileRef = B9C89F291F6BF89900087AF4 /* TestNSData.swift */; }; + B9C89F791F6BF89C00087AF4 /* TestNSRange.swift in Sources */ = {isa = PBXBuildFile; fileRef = B9C89F2A1F6BF89900087AF4 /* TestNSRange.swift */; }; + B9C89F7A1F6BF89C00087AF4 /* TestNSGeometry.swift in Sources */ = {isa = PBXBuildFile; fileRef = B9C89F2B1F6BF89900087AF4 /* TestNSGeometry.swift */; }; + B9C89F7B1F6BF89C00087AF4 /* TestNSProgressFraction.swift in Sources */ = {isa = PBXBuildFile; fileRef = B9C89F2C1F6BF89900087AF4 /* TestNSProgressFraction.swift */; }; + B9C89F7C1F6BF89C00087AF4 /* TestURLCredential.swift in Sources */ = {isa = PBXBuildFile; fileRef = B9C89F2D1F6BF89A00087AF4 /* TestURLCredential.swift */; }; + B9C89F7D1F6BF89C00087AF4 /* TestRunLoop.swift in Sources */ = {isa = PBXBuildFile; fileRef = B9C89F2E1F6BF89A00087AF4 /* TestRunLoop.swift */; }; + B9C89F7E1F6BF89C00087AF4 /* TestThread.swift in Sources */ = {isa = PBXBuildFile; fileRef = B9C89F2F1F6BF89B00087AF4 /* TestThread.swift */; }; + B9C89F7F1F6BF89C00087AF4 /* TestNotificationQueue.swift in Sources */ = {isa = PBXBuildFile; fileRef = B9C89F301F6BF89B00087AF4 /* TestNotificationQueue.swift */; }; + B9C89F801F6BF89C00087AF4 /* TestJSONSerialization.swift in Sources */ = {isa = PBXBuildFile; fileRef = B9C89F311F6BF89B00087AF4 /* TestJSONSerialization.swift */; }; + B9C89F811F6BF89C00087AF4 /* TestAffineTransform.swift in Sources */ = {isa = PBXBuildFile; fileRef = B9C89F321F6BF89B00087AF4 /* TestAffineTransform.swift */; }; + B9C89F821F6BF89C00087AF4 /* TestNSURLRequest.swift in Sources */ = {isa = PBXBuildFile; fileRef = B9C89F331F6BF89C00087AF4 /* TestNSURLRequest.swift */; }; + B9C89F8B1F6D4DA900087AF4 /* HTTPServer.swift in Sources */ = {isa = PBXBuildFile; fileRef = B9C89F891F6D4D9D00087AF4 /* HTTPServer.swift */; }; + B9C89F8C1F6D4DA900087AF4 /* TestHTTPCookieStorage.swift in Sources */ = {isa = PBXBuildFile; fileRef = B9C89EE41F6BF88F00087AF4 /* TestHTTPCookieStorage.swift */; }; + B9C89F8D1F6D4DA900087AF4 /* TestLengthFormatter.swift in Sources */ = {isa = PBXBuildFile; fileRef = B9C89EE51F6BF88F00087AF4 /* TestLengthFormatter.swift */; }; + B9C89FBA1F6DCAEB00087AF4 /* NSString-UTF32-LE-data.txt in Resources */ = {isa = PBXBuildFile; fileRef = B9C89FA51F6DCAE500087AF4 /* NSString-UTF32-LE-data.txt */; }; + B9C89FBB1F6DCAEB00087AF4 /* NSKeyedUnarchiver-EdgeInsetsTest.plist in Resources */ = {isa = PBXBuildFile; fileRef = B9C89FA61F6DCAE600087AF4 /* NSKeyedUnarchiver-EdgeInsetsTest.plist */; }; + B9C89FBC1F6DCAEB00087AF4 /* NSKeyedUnarchiver-ConcreteValueTest.plist in Resources */ = {isa = PBXBuildFile; fileRef = B9C89FA71F6DCAE600087AF4 /* NSKeyedUnarchiver-ConcreteValueTest.plist */; }; + B9C89FBD1F6DCAEB00087AF4 /* NSKeyedUnarchiver-RectTest.plist in Resources */ = {isa = PBXBuildFile; fileRef = B9C89FA81F6DCAE600087AF4 /* NSKeyedUnarchiver-RectTest.plist */; }; + B9C89FBE1F6DCAEB00087AF4 /* NSXMLDTDTestData.xml in Resources */ = {isa = PBXBuildFile; fileRef = B9C89FA91F6DCAE700087AF4 /* NSXMLDTDTestData.xml */; }; + B9C89FBF1F6DCAEB00087AF4 /* NSString-UTF16-LE-data.txt in Resources */ = {isa = PBXBuildFile; fileRef = B9C89FAA1F6DCAE700087AF4 /* NSString-UTF16-LE-data.txt */; }; + B9C89FC01F6DCAEB00087AF4 /* NSKeyedUnarchiver-UUIDTest.plist in Resources */ = {isa = PBXBuildFile; fileRef = B9C89FAB1F6DCAE700087AF4 /* NSKeyedUnarchiver-UUIDTest.plist */; }; + B9C89FC11F6DCAEB00087AF4 /* Info.plist in Resources */ = {isa = PBXBuildFile; fileRef = B9C89FAC1F6DCAE700087AF4 /* Info.plist */; }; + B9C89FC21F6DCAEB00087AF4 /* NSKeyedUnarchiver-ArrayTest.plist in Resources */ = {isa = PBXBuildFile; fileRef = B9C89FAD1F6DCAE800087AF4 /* NSKeyedUnarchiver-ArrayTest.plist */; }; + B9C89FC31F6DCAEB00087AF4 /* NSStringTestData.txt in Resources */ = {isa = PBXBuildFile; fileRef = B9C89FAE1F6DCAE800087AF4 /* NSStringTestData.txt */; }; + B9C89FC41F6DCAEB00087AF4 /* NSKeyedUnarchiver-OrderedSetTest.plist in Resources */ = {isa = PBXBuildFile; fileRef = B9C89FAF1F6DCAE800087AF4 /* NSKeyedUnarchiver-OrderedSetTest.plist */; }; + B9C89FC51F6DCAEB00087AF4 /* NSString-UTF32-BE-data.txt in Resources */ = {isa = PBXBuildFile; fileRef = B9C89FB01F6DCAE900087AF4 /* NSString-UTF32-BE-data.txt */; }; + B9C89FC61F6DCAEB00087AF4 /* NSKeyedUnarchiver-URLTest.plist in Resources */ = {isa = PBXBuildFile; fileRef = B9C89FB11F6DCAE900087AF4 /* NSKeyedUnarchiver-URLTest.plist */; }; + B9C89FC71F6DCAEB00087AF4 /* NSURLTestData.plist in Resources */ = {isa = PBXBuildFile; fileRef = B9C89FB21F6DCAE900087AF4 /* NSURLTestData.plist */; }; + B9C89FC81F6DCAEB00087AF4 /* NSKeyedUnarchiver-ComplexTest.plist in Resources */ = {isa = PBXBuildFile; fileRef = B9C89FB31F6DCAE900087AF4 /* NSKeyedUnarchiver-ComplexTest.plist */; }; + B9C89FC91F6DCAEB00087AF4 /* NSString-UTF16-BE-data.txt in Resources */ = {isa = PBXBuildFile; fileRef = B9C89FB41F6DCAEA00087AF4 /* NSString-UTF16-BE-data.txt */; }; + B9C89FCA1F6DCAEB00087AF4 /* NSKeyedUnarchiver-RangeTest.plist in Resources */ = {isa = PBXBuildFile; fileRef = B9C89FB51F6DCAEA00087AF4 /* NSKeyedUnarchiver-RangeTest.plist */; }; + B9C89FCB1F6DCAEB00087AF4 /* NSXMLDocumentTestData.xml in Resources */ = {isa = PBXBuildFile; fileRef = B9C89FB61F6DCAEA00087AF4 /* NSXMLDocumentTestData.xml */; }; + B9C89FCC1F6DCAEB00087AF4 /* NSKeyedUnarchiver-NotificationTest.plist in Resources */ = {isa = PBXBuildFile; fileRef = B9C89FB71F6DCAEB00087AF4 /* NSKeyedUnarchiver-NotificationTest.plist */; }; + B9C89FCD1F6DCAEB00087AF4 /* PropertyList-1.0.dtd in Resources */ = {isa = PBXBuildFile; fileRef = B9C89FB81F6DCAEB00087AF4 /* PropertyList-1.0.dtd */; }; + B9C89FCE1F6DCAEB00087AF4 /* Test.plist in Resources */ = {isa = PBXBuildFile; fileRef = B9C89FB91F6DCAEB00087AF4 /* Test.plist */; }; +/* End PBXBuildFile section */ + +/* Begin PBXCopyFilesBuildPhase section */ + B9C89EBF1F6BF47D00087AF4 /* CopyFiles */ = { + isa = PBXCopyFilesBuildPhase; + buildActionMask = 12; + dstPath = usr/share/man/man1; + dstSubfolderSpec = 7; + files = ( + ); + runOnlyForDeploymentPostprocessing = 0; + }; +/* End PBXCopyFilesBuildPhase section */ + +/* Begin PBXFileReference section */ + B95788851F6FB9470003EB01 /* TestNSNumberBridging.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; name = TestNSNumberBridging.swift; path = TestFoundation/TestNSNumberBridging.swift; sourceTree = ""; }; + B9C0F8291F8EADAF0047CC52 /* DarwinShims.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = DarwinShims.swift; sourceTree = ""; }; + B9C89EC11F6BF47D00087AF4 /* DarwinCompatibilityTests */ = {isa = PBXFileReference; explicitFileType = "compiled.mach-o.executable"; includeInIndex = 0; path = DarwinCompatibilityTests; sourceTree = BUILT_PRODUCTS_DIR; }; + B9C89ECB1F6BF49800087AF4 /* TestFoundation */ = {isa = PBXFileReference; lastKnownFileType = folder; name = TestFoundation; path = ../TestFoundation; sourceTree = ""; }; + B9C89ED11F6BF67C00087AF4 /* XCTest.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = XCTest.framework; path = Platforms/MacOSX.platform/Developer/Library/Frameworks/XCTest.framework; sourceTree = DEVELOPER_DIR; }; + B9C89ED71F6BF77E00087AF4 /* DarwinCompatibilityTests.xctest */ = {isa = PBXFileReference; explicitFileType = wrapper.cfbundle; includeInIndex = 0; path = DarwinCompatibilityTests.xctest; sourceTree = BUILT_PRODUCTS_DIR; }; + B9C89EDB1F6BF77E00087AF4 /* Info.plist */ = {isa = PBXFileReference; lastKnownFileType = text.plist.xml; path = Info.plist; sourceTree = ""; }; + B9C89EDF1F6BF79000087AF4 /* TestFoundation */ = {isa = PBXFileReference; lastKnownFileType = folder; name = TestFoundation; path = ../TestFoundation; sourceTree = ""; }; + B9C89EE41F6BF88F00087AF4 /* TestHTTPCookieStorage.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; name = TestHTTPCookieStorage.swift; path = TestFoundation/TestHTTPCookieStorage.swift; sourceTree = ""; }; + B9C89EE51F6BF88F00087AF4 /* TestLengthFormatter.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; name = TestLengthFormatter.swift; path = TestFoundation/TestLengthFormatter.swift; sourceTree = ""; }; + B9C89EE61F6BF88F00087AF4 /* TestScanner.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; name = TestScanner.swift; path = TestFoundation/TestScanner.swift; sourceTree = ""; }; + B9C89EE71F6BF88F00087AF4 /* TestNSValue.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; name = TestNSValue.swift; path = TestFoundation/TestNSValue.swift; sourceTree = ""; }; + B9C89EE81F6BF88F00087AF4 /* TestUtils.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; name = TestUtils.swift; path = TestFoundation/TestUtils.swift; sourceTree = ""; }; + B9C89EE91F6BF88F00087AF4 /* TestProcessInfo.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; name = TestProcessInfo.swift; path = TestFoundation/TestProcessInfo.swift; sourceTree = ""; }; + B9C89EEB1F6BF89000087AF4 /* TestURLProtocol.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; name = TestURLProtocol.swift; path = TestFoundation/TestURLProtocol.swift; sourceTree = ""; }; + B9C89EEC1F6BF89000087AF4 /* TestURLSession.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; name = TestURLSession.swift; path = TestFoundation/TestURLSession.swift; sourceTree = ""; }; + B9C89EED1F6BF89000087AF4 /* TestXMLParser.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; name = TestXMLParser.swift; path = TestFoundation/TestXMLParser.swift; sourceTree = ""; }; + B9C89EEE1F6BF89000087AF4 /* TestISO8601DateFormatter.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; name = TestISO8601DateFormatter.swift; path = TestFoundation/TestISO8601DateFormatter.swift; sourceTree = ""; }; + B9C89EEF1F6BF89000087AF4 /* TestNSTextCheckingResult.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; name = TestNSTextCheckingResult.swift; path = TestFoundation/TestNSTextCheckingResult.swift; sourceTree = ""; }; + B9C89EF01F6BF89000087AF4 /* TestCharacterSet.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; name = TestCharacterSet.swift; path = TestFoundation/TestCharacterSet.swift; sourceTree = ""; }; + B9C89EF11F6BF89100087AF4 /* TestCodable.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; name = TestCodable.swift; path = TestFoundation/TestCodable.swift; sourceTree = ""; }; + B9C89EF21F6BF89100087AF4 /* TestIndexPath.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; name = TestIndexPath.swift; path = TestFoundation/TestIndexPath.swift; sourceTree = ""; }; + B9C89EF31F6BF89100087AF4 /* TestMassFormatter.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; name = TestMassFormatter.swift; path = TestFoundation/TestMassFormatter.swift; sourceTree = ""; }; + B9C89EF41F6BF89100087AF4 /* TestNSSet.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; name = TestNSSet.swift; path = TestFoundation/TestNSSet.swift; sourceTree = ""; }; + B9C89EF51F6BF89100087AF4 /* TestURLResponse.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; name = TestURLResponse.swift; path = TestFoundation/TestURLResponse.swift; sourceTree = ""; }; + B9C89EF61F6BF89100087AF4 /* TestDate.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; name = TestDate.swift; path = TestFoundation/TestDate.swift; sourceTree = ""; }; + B9C89EF71F6BF89200087AF4 /* TestObjCRuntime.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; name = TestObjCRuntime.swift; path = TestFoundation/TestObjCRuntime.swift; sourceTree = ""; }; + B9C89EF81F6BF89200087AF4 /* TestStream.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; name = TestStream.swift; path = TestFoundation/TestStream.swift; sourceTree = ""; }; + B9C89EF91F6BF89200087AF4 /* TestProgress.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; name = TestProgress.swift; path = TestFoundation/TestProgress.swift; sourceTree = ""; }; + B9C89EFA1F6BF89200087AF4 /* TestCalendar.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; name = TestCalendar.swift; path = TestFoundation/TestCalendar.swift; sourceTree = ""; }; + B9C89EFB1F6BF89200087AF4 /* TestBundle.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; name = TestBundle.swift; path = TestFoundation/TestBundle.swift; sourceTree = ""; }; + B9C89EFC1F6BF89200087AF4 /* TestDateFormatter.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; name = TestDateFormatter.swift; path = TestFoundation/TestDateFormatter.swift; sourceTree = ""; }; + B9C89EFD1F6BF89200087AF4 /* TestHTTPCookie.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; name = TestHTTPCookie.swift; path = TestFoundation/TestHTTPCookie.swift; sourceTree = ""; }; + B9C89EFE1F6BF89300087AF4 /* TestNSError.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; name = TestNSError.swift; path = TestFoundation/TestNSError.swift; sourceTree = ""; }; + B9C89EFF1F6BF89300087AF4 /* TestNSString.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; name = TestNSString.swift; path = TestFoundation/TestNSString.swift; sourceTree = ""; }; + B9C89F001F6BF89300087AF4 /* TestNSUUID.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; name = TestNSUUID.swift; path = TestFoundation/TestNSUUID.swift; sourceTree = ""; }; + B9C89F011F6BF89300087AF4 /* TestPropertyListSerialization.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; name = TestPropertyListSerialization.swift; path = TestFoundation/TestPropertyListSerialization.swift; sourceTree = ""; }; + B9C89F021F6BF89300087AF4 /* XDGTestHelper.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; name = XDGTestHelper.swift; path = TestFoundation/XDGTestHelper.swift; sourceTree = ""; }; + B9C89F031F6BF89300087AF4 /* TestNSArray.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; name = TestNSArray.swift; path = TestFoundation/TestNSArray.swift; sourceTree = ""; }; + B9C89F051F6BF89400087AF4 /* TestFileHandle.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; name = TestFileHandle.swift; path = TestFoundation/TestFileHandle.swift; sourceTree = ""; }; + B9C89F061F6BF89400087AF4 /* TestTimer.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; name = TestTimer.swift; path = TestFoundation/TestTimer.swift; sourceTree = ""; }; + B9C89F071F6BF89400087AF4 /* TestTimeZone.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; name = TestTimeZone.swift; path = TestFoundation/TestTimeZone.swift; sourceTree = ""; }; + B9C89F081F6BF89400087AF4 /* TestNSNumber.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; name = TestNSNumber.swift; path = TestFoundation/TestNSNumber.swift; sourceTree = ""; }; + B9C89F091F6BF89400087AF4 /* TestNSAttributedString.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; name = TestNSAttributedString.swift; path = TestFoundation/TestNSAttributedString.swift; sourceTree = ""; }; + B9C89F0A1F6BF89400087AF4 /* TestByteCountFormatter.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; name = TestByteCountFormatter.swift; path = TestFoundation/TestByteCountFormatter.swift; sourceTree = ""; }; + B9C89F0B1F6BF89400087AF4 /* TestUnit.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; name = TestUnit.swift; path = TestFoundation/TestUnit.swift; sourceTree = ""; }; + B9C89F0C1F6BF89500087AF4 /* TestJSONEncoder.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; name = TestJSONEncoder.swift; path = TestFoundation/TestJSONEncoder.swift; sourceTree = ""; }; + B9C89F0D1F6BF89500087AF4 /* TestOperationQueue.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; name = TestOperationQueue.swift; path = TestFoundation/TestOperationQueue.swift; sourceTree = ""; }; + B9C89F0E1F6BF89500087AF4 /* TestUserDefaults.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; name = TestUserDefaults.swift; path = TestFoundation/TestUserDefaults.swift; sourceTree = ""; }; + B9C89F0F1F6BF89500087AF4 /* TestXMLDocument.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; name = TestXMLDocument.swift; path = TestFoundation/TestXMLDocument.swift; sourceTree = ""; }; + B9C89F101F6BF89500087AF4 /* TestNSOrderedSet.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; name = TestNSOrderedSet.swift; path = TestFoundation/TestNSOrderedSet.swift; sourceTree = ""; }; + B9C89F111F6BF89500087AF4 /* TestIndexSet.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; name = TestIndexSet.swift; path = TestFoundation/TestIndexSet.swift; sourceTree = ""; }; + B9C89F121F6BF89500087AF4 /* TestPipe.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; name = TestPipe.swift; path = TestFoundation/TestPipe.swift; sourceTree = ""; }; + B9C89F131F6BF89600087AF4 /* xdgTestHelper */ = {isa = PBXFileReference; lastKnownFileType = folder; name = xdgTestHelper; path = TestFoundation/xdgTestHelper; sourceTree = ""; }; + B9C89F141F6BF89600087AF4 /* TestURLRequest.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; name = TestURLRequest.swift; path = TestFoundation/TestURLRequest.swift; sourceTree = ""; }; + B9C89F151F6BF89600087AF4 /* TestNSNull.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; name = TestNSNull.swift; path = TestFoundation/TestNSNull.swift; sourceTree = ""; }; + B9C89F161F6BF89600087AF4 /* TestNSKeyedArchiver.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; name = TestNSKeyedArchiver.swift; path = TestFoundation/TestNSKeyedArchiver.swift; sourceTree = ""; }; + B9C89F171F6BF89600087AF4 /* TestUnitConverter.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; name = TestUnitConverter.swift; path = TestFoundation/TestUnitConverter.swift; sourceTree = ""; }; + B9C89F181F6BF89600087AF4 /* TestNumberFormatter.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; name = TestNumberFormatter.swift; path = TestFoundation/TestNumberFormatter.swift; sourceTree = ""; }; + B9C89F191F6BF89700087AF4 /* TestURL.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; name = TestURL.swift; path = TestFoundation/TestURL.swift; sourceTree = ""; }; + B9C89F1B1F6BF89700087AF4 /* TestNSRegularExpression.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; name = TestNSRegularExpression.swift; path = TestFoundation/TestNSRegularExpression.swift; sourceTree = ""; }; + B9C89F1C1F6BF89700087AF4 /* TestNSPredicate.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; name = TestNSPredicate.swift; path = TestFoundation/TestNSPredicate.swift; sourceTree = ""; }; + B9C89F1D1F6BF89700087AF4 /* TestNSLocale.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; name = TestNSLocale.swift; path = TestFoundation/TestNSLocale.swift; sourceTree = ""; }; + B9C89F1E1F6BF89700087AF4 /* TestNSKeyedUnarchiver.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; name = TestNSKeyedUnarchiver.swift; path = TestFoundation/TestNSKeyedUnarchiver.swift; sourceTree = ""; }; + B9C89F1F1F6BF89700087AF4 /* TestPersonNameComponents.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; name = TestPersonNameComponents.swift; path = TestFoundation/TestPersonNameComponents.swift; sourceTree = ""; }; + B9C89F201F6BF89800087AF4 /* TestFileManager.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; name = TestFileManager.swift; path = TestFoundation/TestFileManager.swift; sourceTree = ""; }; + B9C89F211F6BF89800087AF4 /* TestDecimal.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; name = TestDecimal.swift; path = TestFoundation/TestDecimal.swift; sourceTree = ""; }; + B9C89F221F6BF89800087AF4 /* TestNSCache.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; name = TestNSCache.swift; path = TestFoundation/TestNSCache.swift; sourceTree = ""; }; + B9C89F231F6BF89800087AF4 /* TestNSDictionary.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; name = TestNSDictionary.swift; path = TestFoundation/TestNSDictionary.swift; sourceTree = ""; }; + B9C89F241F6BF89800087AF4 /* TestNotificationCenter.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; name = TestNotificationCenter.swift; path = TestFoundation/TestNotificationCenter.swift; sourceTree = ""; }; + B9C89F251F6BF89800087AF4 /* TestProcess.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; name = TestProcess.swift; path = TestFoundation/TestProcess.swift; sourceTree = ""; }; + B9C89F261F6BF89900087AF4 /* TestEnergyFormatter.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; name = TestEnergyFormatter.swift; path = TestFoundation/TestEnergyFormatter.swift; sourceTree = ""; }; + B9C89F271F6BF89900087AF4 /* TestNSCompoundPredicate.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; name = TestNSCompoundPredicate.swift; path = TestFoundation/TestNSCompoundPredicate.swift; sourceTree = ""; }; + B9C89F281F6BF89900087AF4 /* TestNotification.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; name = TestNotification.swift; path = TestFoundation/TestNotification.swift; sourceTree = ""; }; + B9C89F291F6BF89900087AF4 /* TestNSData.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; name = TestNSData.swift; path = TestFoundation/TestNSData.swift; sourceTree = ""; }; + B9C89F2A1F6BF89900087AF4 /* TestNSRange.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; name = TestNSRange.swift; path = TestFoundation/TestNSRange.swift; sourceTree = ""; }; + B9C89F2B1F6BF89900087AF4 /* TestNSGeometry.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; name = TestNSGeometry.swift; path = TestFoundation/TestNSGeometry.swift; sourceTree = ""; }; + B9C89F2C1F6BF89900087AF4 /* TestNSProgressFraction.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; name = TestNSProgressFraction.swift; path = TestFoundation/TestNSProgressFraction.swift; sourceTree = ""; }; + B9C89F2D1F6BF89A00087AF4 /* TestURLCredential.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; name = TestURLCredential.swift; path = TestFoundation/TestURLCredential.swift; sourceTree = ""; }; + B9C89F2E1F6BF89A00087AF4 /* TestRunLoop.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; name = TestRunLoop.swift; path = TestFoundation/TestRunLoop.swift; sourceTree = ""; }; + B9C89F2F1F6BF89B00087AF4 /* TestThread.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; name = TestThread.swift; path = TestFoundation/TestThread.swift; sourceTree = ""; }; + B9C89F301F6BF89B00087AF4 /* TestNotificationQueue.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; name = TestNotificationQueue.swift; path = TestFoundation/TestNotificationQueue.swift; sourceTree = ""; }; + B9C89F311F6BF89B00087AF4 /* TestJSONSerialization.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; name = TestJSONSerialization.swift; path = TestFoundation/TestJSONSerialization.swift; sourceTree = ""; }; + B9C89F321F6BF89B00087AF4 /* TestAffineTransform.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; name = TestAffineTransform.swift; path = TestFoundation/TestAffineTransform.swift; sourceTree = ""; }; + B9C89F331F6BF89C00087AF4 /* TestNSURLRequest.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; name = TestNSURLRequest.swift; path = TestFoundation/TestNSURLRequest.swift; sourceTree = ""; }; + B9C89F891F6D4D9D00087AF4 /* HTTPServer.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; name = HTTPServer.swift; path = TestFoundation/HTTPServer.swift; sourceTree = ""; }; + B9C89FA51F6DCAE500087AF4 /* NSString-UTF32-LE-data.txt */ = {isa = PBXFileReference; lastKnownFileType = text; name = "NSString-UTF32-LE-data.txt"; path = "TestFoundation/Resources/NSString-UTF32-LE-data.txt"; sourceTree = ""; }; + B9C89FA61F6DCAE600087AF4 /* NSKeyedUnarchiver-EdgeInsetsTest.plist */ = {isa = PBXFileReference; lastKnownFileType = text.plist.xml; name = "NSKeyedUnarchiver-EdgeInsetsTest.plist"; path = "TestFoundation/Resources/NSKeyedUnarchiver-EdgeInsetsTest.plist"; sourceTree = ""; }; + B9C89FA71F6DCAE600087AF4 /* NSKeyedUnarchiver-ConcreteValueTest.plist */ = {isa = PBXFileReference; lastKnownFileType = text.plist.xml; name = "NSKeyedUnarchiver-ConcreteValueTest.plist"; path = "TestFoundation/Resources/NSKeyedUnarchiver-ConcreteValueTest.plist"; sourceTree = ""; }; + B9C89FA81F6DCAE600087AF4 /* NSKeyedUnarchiver-RectTest.plist */ = {isa = PBXFileReference; lastKnownFileType = text.plist.xml; name = "NSKeyedUnarchiver-RectTest.plist"; path = "TestFoundation/Resources/NSKeyedUnarchiver-RectTest.plist"; sourceTree = ""; }; + B9C89FA91F6DCAE700087AF4 /* NSXMLDTDTestData.xml */ = {isa = PBXFileReference; lastKnownFileType = text.xml; name = NSXMLDTDTestData.xml; path = TestFoundation/Resources/NSXMLDTDTestData.xml; sourceTree = ""; }; + B9C89FAA1F6DCAE700087AF4 /* NSString-UTF16-LE-data.txt */ = {isa = PBXFileReference; lastKnownFileType = text; name = "NSString-UTF16-LE-data.txt"; path = "TestFoundation/Resources/NSString-UTF16-LE-data.txt"; sourceTree = ""; }; + B9C89FAB1F6DCAE700087AF4 /* NSKeyedUnarchiver-UUIDTest.plist */ = {isa = PBXFileReference; lastKnownFileType = text.plist.xml; name = "NSKeyedUnarchiver-UUIDTest.plist"; path = "TestFoundation/Resources/NSKeyedUnarchiver-UUIDTest.plist"; sourceTree = ""; }; + B9C89FAC1F6DCAE700087AF4 /* Info.plist */ = {isa = PBXFileReference; lastKnownFileType = text.plist.xml; name = Info.plist; path = TestFoundation/Resources/Info.plist; sourceTree = ""; }; + B9C89FAD1F6DCAE800087AF4 /* NSKeyedUnarchiver-ArrayTest.plist */ = {isa = PBXFileReference; lastKnownFileType = text.plist.xml; name = "NSKeyedUnarchiver-ArrayTest.plist"; path = "TestFoundation/Resources/NSKeyedUnarchiver-ArrayTest.plist"; sourceTree = ""; }; + B9C89FAE1F6DCAE800087AF4 /* NSStringTestData.txt */ = {isa = PBXFileReference; lastKnownFileType = text; name = NSStringTestData.txt; path = TestFoundation/Resources/NSStringTestData.txt; sourceTree = ""; }; + B9C89FAF1F6DCAE800087AF4 /* NSKeyedUnarchiver-OrderedSetTest.plist */ = {isa = PBXFileReference; lastKnownFileType = text.plist.xml; name = "NSKeyedUnarchiver-OrderedSetTest.plist"; path = "TestFoundation/Resources/NSKeyedUnarchiver-OrderedSetTest.plist"; sourceTree = ""; }; + B9C89FB01F6DCAE900087AF4 /* NSString-UTF32-BE-data.txt */ = {isa = PBXFileReference; lastKnownFileType = text; name = "NSString-UTF32-BE-data.txt"; path = "TestFoundation/Resources/NSString-UTF32-BE-data.txt"; sourceTree = ""; }; + B9C89FB11F6DCAE900087AF4 /* NSKeyedUnarchiver-URLTest.plist */ = {isa = PBXFileReference; lastKnownFileType = text.plist.xml; name = "NSKeyedUnarchiver-URLTest.plist"; path = "TestFoundation/Resources/NSKeyedUnarchiver-URLTest.plist"; sourceTree = ""; }; + B9C89FB21F6DCAE900087AF4 /* NSURLTestData.plist */ = {isa = PBXFileReference; lastKnownFileType = text.plist.xml; name = NSURLTestData.plist; path = TestFoundation/Resources/NSURLTestData.plist; sourceTree = ""; }; + B9C89FB31F6DCAE900087AF4 /* NSKeyedUnarchiver-ComplexTest.plist */ = {isa = PBXFileReference; lastKnownFileType = file.bplist; name = "NSKeyedUnarchiver-ComplexTest.plist"; path = "TestFoundation/Resources/NSKeyedUnarchiver-ComplexTest.plist"; sourceTree = ""; }; + B9C89FB41F6DCAEA00087AF4 /* NSString-UTF16-BE-data.txt */ = {isa = PBXFileReference; lastKnownFileType = text; name = "NSString-UTF16-BE-data.txt"; path = "TestFoundation/Resources/NSString-UTF16-BE-data.txt"; sourceTree = ""; }; + B9C89FB51F6DCAEA00087AF4 /* NSKeyedUnarchiver-RangeTest.plist */ = {isa = PBXFileReference; lastKnownFileType = text.plist.xml; name = "NSKeyedUnarchiver-RangeTest.plist"; path = "TestFoundation/Resources/NSKeyedUnarchiver-RangeTest.plist"; sourceTree = ""; }; + B9C89FB61F6DCAEA00087AF4 /* NSXMLDocumentTestData.xml */ = {isa = PBXFileReference; lastKnownFileType = text.xml; name = NSXMLDocumentTestData.xml; path = TestFoundation/Resources/NSXMLDocumentTestData.xml; sourceTree = ""; }; + B9C89FB71F6DCAEB00087AF4 /* NSKeyedUnarchiver-NotificationTest.plist */ = {isa = PBXFileReference; lastKnownFileType = text.plist.xml; name = "NSKeyedUnarchiver-NotificationTest.plist"; path = "TestFoundation/Resources/NSKeyedUnarchiver-NotificationTest.plist"; sourceTree = ""; }; + B9C89FB81F6DCAEB00087AF4 /* PropertyList-1.0.dtd */ = {isa = PBXFileReference; lastKnownFileType = text.xml; name = "PropertyList-1.0.dtd"; path = "TestFoundation/Resources/PropertyList-1.0.dtd"; sourceTree = ""; }; + B9C89FB91F6DCAEB00087AF4 /* Test.plist */ = {isa = PBXFileReference; lastKnownFileType = text.plist.xml; name = Test.plist; path = TestFoundation/Resources/Test.plist; sourceTree = ""; }; +/* End PBXFileReference section */ + +/* Begin PBXFrameworksBuildPhase section */ + B9C89EBE1F6BF47D00087AF4 /* Frameworks */ = { + isa = PBXFrameworksBuildPhase; + buildActionMask = 2147483647; + files = ( + B9C89ED21F6BF67C00087AF4 /* XCTest.framework in Frameworks */, + ); + runOnlyForDeploymentPostprocessing = 0; + }; + B9C89ED41F6BF77E00087AF4 /* Frameworks */ = { + isa = PBXFrameworksBuildPhase; + buildActionMask = 2147483647; + files = ( + ); + runOnlyForDeploymentPostprocessing = 0; + }; +/* End PBXFrameworksBuildPhase section */ + +/* Begin PBXGroup section */ + B9C89EB81F6BF47D00087AF4 = { + isa = PBXGroup; + children = ( + B9C0F8291F8EADAF0047CC52 /* DarwinShims.swift */, + B95788851F6FB9470003EB01 /* TestNSNumberBridging.swift */, + B9C89FAC1F6DCAE700087AF4 /* Info.plist */, + B9C89FAD1F6DCAE800087AF4 /* NSKeyedUnarchiver-ArrayTest.plist */, + B9C89FB31F6DCAE900087AF4 /* NSKeyedUnarchiver-ComplexTest.plist */, + B9C89FA71F6DCAE600087AF4 /* NSKeyedUnarchiver-ConcreteValueTest.plist */, + B9C89FA61F6DCAE600087AF4 /* NSKeyedUnarchiver-EdgeInsetsTest.plist */, + B9C89FB71F6DCAEB00087AF4 /* NSKeyedUnarchiver-NotificationTest.plist */, + B9C89FAF1F6DCAE800087AF4 /* NSKeyedUnarchiver-OrderedSetTest.plist */, + B9C89FB51F6DCAEA00087AF4 /* NSKeyedUnarchiver-RangeTest.plist */, + B9C89FA81F6DCAE600087AF4 /* NSKeyedUnarchiver-RectTest.plist */, + B9C89FB11F6DCAE900087AF4 /* NSKeyedUnarchiver-URLTest.plist */, + B9C89FAB1F6DCAE700087AF4 /* NSKeyedUnarchiver-UUIDTest.plist */, + B9C89FB41F6DCAEA00087AF4 /* NSString-UTF16-BE-data.txt */, + B9C89FAA1F6DCAE700087AF4 /* NSString-UTF16-LE-data.txt */, + B9C89FB01F6DCAE900087AF4 /* NSString-UTF32-BE-data.txt */, + B9C89FA51F6DCAE500087AF4 /* NSString-UTF32-LE-data.txt */, + B9C89FAE1F6DCAE800087AF4 /* NSStringTestData.txt */, + B9C89FB21F6DCAE900087AF4 /* NSURLTestData.plist */, + B9C89FB61F6DCAEA00087AF4 /* NSXMLDocumentTestData.xml */, + B9C89FA91F6DCAE700087AF4 /* NSXMLDTDTestData.xml */, + B9C89FB81F6DCAEB00087AF4 /* PropertyList-1.0.dtd */, + B9C89FB91F6DCAEB00087AF4 /* Test.plist */, + B9C89F891F6D4D9D00087AF4 /* HTTPServer.swift */, + B9C89F321F6BF89B00087AF4 /* TestAffineTransform.swift */, + B9C89EFB1F6BF89200087AF4 /* TestBundle.swift */, + B9C89F0A1F6BF89400087AF4 /* TestByteCountFormatter.swift */, + B9C89EFA1F6BF89200087AF4 /* TestCalendar.swift */, + B9C89EF01F6BF89000087AF4 /* TestCharacterSet.swift */, + B9C89EF11F6BF89100087AF4 /* TestCodable.swift */, + B9C89EF61F6BF89100087AF4 /* TestDate.swift */, + B9C89EFC1F6BF89200087AF4 /* TestDateFormatter.swift */, + B9C89F211F6BF89800087AF4 /* TestDecimal.swift */, + B9C89F261F6BF89900087AF4 /* TestEnergyFormatter.swift */, + B9C89F051F6BF89400087AF4 /* TestFileHandle.swift */, + B9C89F201F6BF89800087AF4 /* TestFileManager.swift */, + B9C89EFD1F6BF89200087AF4 /* TestHTTPCookie.swift */, + B9C89EE41F6BF88F00087AF4 /* TestHTTPCookieStorage.swift */, + B9C89EF21F6BF89100087AF4 /* TestIndexPath.swift */, + B9C89F111F6BF89500087AF4 /* TestIndexSet.swift */, + B9C89EEE1F6BF89000087AF4 /* TestISO8601DateFormatter.swift */, + B9C89F0C1F6BF89500087AF4 /* TestJSONEncoder.swift */, + B9C89F311F6BF89B00087AF4 /* TestJSONSerialization.swift */, + B9C89EE51F6BF88F00087AF4 /* TestLengthFormatter.swift */, + B9C89EF31F6BF89100087AF4 /* TestMassFormatter.swift */, + B9C89F281F6BF89900087AF4 /* TestNotification.swift */, + B9C89F241F6BF89800087AF4 /* TestNotificationCenter.swift */, + B9C89F301F6BF89B00087AF4 /* TestNotificationQueue.swift */, + B9C89F031F6BF89300087AF4 /* TestNSArray.swift */, + B9C89F091F6BF89400087AF4 /* TestNSAttributedString.swift */, + B9C89F221F6BF89800087AF4 /* TestNSCache.swift */, + B9C89F271F6BF89900087AF4 /* TestNSCompoundPredicate.swift */, + B9C89F291F6BF89900087AF4 /* TestNSData.swift */, + B9C89F231F6BF89800087AF4 /* TestNSDictionary.swift */, + B9C89EFE1F6BF89300087AF4 /* TestNSError.swift */, + B9C89F2B1F6BF89900087AF4 /* TestNSGeometry.swift */, + B9C89F161F6BF89600087AF4 /* TestNSKeyedArchiver.swift */, + B9C89F1E1F6BF89700087AF4 /* TestNSKeyedUnarchiver.swift */, + B9C89F1D1F6BF89700087AF4 /* TestNSLocale.swift */, + B9C89F151F6BF89600087AF4 /* TestNSNull.swift */, + B9C89F081F6BF89400087AF4 /* TestNSNumber.swift */, + B9C89F101F6BF89500087AF4 /* TestNSOrderedSet.swift */, + B9C89F1C1F6BF89700087AF4 /* TestNSPredicate.swift */, + B9C89F2C1F6BF89900087AF4 /* TestNSProgressFraction.swift */, + B9C89F2A1F6BF89900087AF4 /* TestNSRange.swift */, + B9C89F1B1F6BF89700087AF4 /* TestNSRegularExpression.swift */, + B9C89EF41F6BF89100087AF4 /* TestNSSet.swift */, + B9C89EFF1F6BF89300087AF4 /* TestNSString.swift */, + B9C89EEF1F6BF89000087AF4 /* TestNSTextCheckingResult.swift */, + B9C89F331F6BF89C00087AF4 /* TestNSURLRequest.swift */, + B9C89F001F6BF89300087AF4 /* TestNSUUID.swift */, + B9C89EE71F6BF88F00087AF4 /* TestNSValue.swift */, + B9C89F181F6BF89600087AF4 /* TestNumberFormatter.swift */, + B9C89EF71F6BF89200087AF4 /* TestObjCRuntime.swift */, + B9C89F0D1F6BF89500087AF4 /* TestOperationQueue.swift */, + B9C89F1F1F6BF89700087AF4 /* TestPersonNameComponents.swift */, + B9C89F121F6BF89500087AF4 /* TestPipe.swift */, + B9C89F251F6BF89800087AF4 /* TestProcess.swift */, + B9C89EE91F6BF88F00087AF4 /* TestProcessInfo.swift */, + B9C89EF91F6BF89200087AF4 /* TestProgress.swift */, + B9C89F011F6BF89300087AF4 /* TestPropertyListSerialization.swift */, + B9C89F2E1F6BF89A00087AF4 /* TestRunLoop.swift */, + B9C89EE61F6BF88F00087AF4 /* TestScanner.swift */, + B9C89EF81F6BF89200087AF4 /* TestStream.swift */, + B9C89F2F1F6BF89B00087AF4 /* TestThread.swift */, + B9C89F061F6BF89400087AF4 /* TestTimer.swift */, + B9C89F071F6BF89400087AF4 /* TestTimeZone.swift */, + B9C89F0B1F6BF89400087AF4 /* TestUnit.swift */, + B9C89F171F6BF89600087AF4 /* TestUnitConverter.swift */, + B9C89F191F6BF89700087AF4 /* TestURL.swift */, + B9C89F2D1F6BF89A00087AF4 /* TestURLCredential.swift */, + B9C89EEB1F6BF89000087AF4 /* TestURLProtocol.swift */, + B9C89F141F6BF89600087AF4 /* TestURLRequest.swift */, + B9C89EF51F6BF89100087AF4 /* TestURLResponse.swift */, + B9C89EEC1F6BF89000087AF4 /* TestURLSession.swift */, + B9C89F0E1F6BF89500087AF4 /* TestUserDefaults.swift */, + B9C89EE81F6BF88F00087AF4 /* TestUtils.swift */, + B9C89F0F1F6BF89500087AF4 /* TestXMLDocument.swift */, + B9C89EED1F6BF89000087AF4 /* TestXMLParser.swift */, + B9C89F131F6BF89600087AF4 /* xdgTestHelper */, + B9C89F021F6BF89300087AF4 /* XDGTestHelper.swift */, + B9C89EC31F6BF47D00087AF4 /* DarwinCompatibilityTests */, + B9C89ED81F6BF77E00087AF4 /* DarwinCompatibilityTests */, + B9C89EC21F6BF47D00087AF4 /* Products */, + B9C89ED01F6BF67C00087AF4 /* Frameworks */, + ); + sourceTree = ""; + }; + B9C89EC21F6BF47D00087AF4 /* Products */ = { + isa = PBXGroup; + children = ( + B9C89EC11F6BF47D00087AF4 /* DarwinCompatibilityTests */, + B9C89ED71F6BF77E00087AF4 /* DarwinCompatibilityTests.xctest */, + ); + name = Products; + sourceTree = ""; + }; + B9C89EC31F6BF47D00087AF4 /* DarwinCompatibilityTests */ = { + isa = PBXGroup; + children = ( + B9C89ECB1F6BF49800087AF4 /* TestFoundation */, + ); + path = DarwinCompatibilityTests; + sourceTree = ""; + }; + B9C89ED01F6BF67C00087AF4 /* Frameworks */ = { + isa = PBXGroup; + children = ( + B9C89ED11F6BF67C00087AF4 /* XCTest.framework */, + ); + name = Frameworks; + sourceTree = ""; + }; + B9C89ED81F6BF77E00087AF4 /* DarwinCompatibilityTests */ = { + isa = PBXGroup; + children = ( + B9C89EDF1F6BF79000087AF4 /* TestFoundation */, + B9C89EDB1F6BF77E00087AF4 /* Info.plist */, + ); + path = DarwinCompatibilityTests; + sourceTree = ""; + }; +/* End PBXGroup section */ + +/* Begin PBXNativeTarget section */ + B9C89EC01F6BF47D00087AF4 /* DarwinCompatibilityTests */ = { + isa = PBXNativeTarget; + buildConfigurationList = B9C89EC81F6BF47D00087AF4 /* Build configuration list for PBXNativeTarget "DarwinCompatibilityTests" */; + buildPhases = ( + B9C89EBD1F6BF47D00087AF4 /* Sources */, + B9C89EBE1F6BF47D00087AF4 /* Frameworks */, + B9C89EBF1F6BF47D00087AF4 /* CopyFiles */, + ); + buildRules = ( + ); + dependencies = ( + ); + name = DarwinCompatibilityTests; + productName = DarwinCompatibilityTests; + productReference = B9C89EC11F6BF47D00087AF4 /* DarwinCompatibilityTests */; + productType = "com.apple.product-type.tool"; + }; + B9C89ED61F6BF77E00087AF4 /* DarwinCompatibilityTests */ = { + isa = PBXNativeTarget; + buildConfigurationList = B9C89EDC1F6BF77E00087AF4 /* Build configuration list for PBXNativeTarget "DarwinCompatibilityTests" */; + buildPhases = ( + B9C89ED31F6BF77E00087AF4 /* Sources */, + B9C89ED41F6BF77E00087AF4 /* Frameworks */, + B9C89ED51F6BF77E00087AF4 /* Resources */, + ); + buildRules = ( + ); + dependencies = ( + ); + name = DarwinCompatibilityTests; + productName = DarwinCompatibilityTests; + productReference = B9C89ED71F6BF77E00087AF4 /* DarwinCompatibilityTests.xctest */; + productType = "com.apple.product-type.bundle.unit-test"; + }; +/* End PBXNativeTarget section */ + +/* Begin PBXProject section */ + B9C89EB91F6BF47D00087AF4 /* Project object */ = { + isa = PBXProject; + attributes = { + LastSwiftUpdateCheck = 0900; + LastUpgradeCheck = 0900; + ORGANIZATIONNAME = Apple; + TargetAttributes = { + B9C89EC01F6BF47D00087AF4 = { + CreatedOnToolsVersion = 9.0; + LastSwiftMigration = 0900; + ProvisioningStyle = Automatic; + }; + B9C89ED61F6BF77E00087AF4 = { + CreatedOnToolsVersion = 9.0; + ProvisioningStyle = Automatic; + }; + }; + }; + buildConfigurationList = B9C89EBC1F6BF47D00087AF4 /* Build configuration list for PBXProject "DarwinCompatibilityTests" */; + compatibilityVersion = "Xcode 8.0"; + developmentRegion = en; + hasScannedForEncodings = 0; + knownRegions = ( + en, + ); + mainGroup = B9C89EB81F6BF47D00087AF4; + productRefGroup = B9C89EC21F6BF47D00087AF4 /* Products */; + projectDirPath = ""; + projectRoot = ""; + targets = ( + B9C89EC01F6BF47D00087AF4 /* DarwinCompatibilityTests */, + B9C89ED61F6BF77E00087AF4 /* DarwinCompatibilityTests */, + ); + }; +/* End PBXProject section */ + +/* Begin PBXResourcesBuildPhase section */ + B9C89ED51F6BF77E00087AF4 /* Resources */ = { + isa = PBXResourcesBuildPhase; + buildActionMask = 2147483647; + files = ( + B9C89FBA1F6DCAEB00087AF4 /* NSString-UTF32-LE-data.txt in Resources */, + B9C89FBB1F6DCAEB00087AF4 /* NSKeyedUnarchiver-EdgeInsetsTest.plist in Resources */, + B9C89FBC1F6DCAEB00087AF4 /* NSKeyedUnarchiver-ConcreteValueTest.plist in Resources */, + B9C89FBD1F6DCAEB00087AF4 /* NSKeyedUnarchiver-RectTest.plist in Resources */, + B9C89FBE1F6DCAEB00087AF4 /* NSXMLDTDTestData.xml in Resources */, + B9C89FBF1F6DCAEB00087AF4 /* NSString-UTF16-LE-data.txt in Resources */, + B9C89FC01F6DCAEB00087AF4 /* NSKeyedUnarchiver-UUIDTest.plist in Resources */, + B9C89FC11F6DCAEB00087AF4 /* Info.plist in Resources */, + B9C89FC21F6DCAEB00087AF4 /* NSKeyedUnarchiver-ArrayTest.plist in Resources */, + B9C89FC31F6DCAEB00087AF4 /* NSStringTestData.txt in Resources */, + B9C89FC41F6DCAEB00087AF4 /* NSKeyedUnarchiver-OrderedSetTest.plist in Resources */, + B9C89FC51F6DCAEB00087AF4 /* NSString-UTF32-BE-data.txt in Resources */, + B9C89FC61F6DCAEB00087AF4 /* NSKeyedUnarchiver-URLTest.plist in Resources */, + B9C89FC71F6DCAEB00087AF4 /* NSURLTestData.plist in Resources */, + B9C89FC81F6DCAEB00087AF4 /* NSKeyedUnarchiver-ComplexTest.plist in Resources */, + B9C89FC91F6DCAEB00087AF4 /* NSString-UTF16-BE-data.txt in Resources */, + B9C89FCA1F6DCAEB00087AF4 /* NSKeyedUnarchiver-RangeTest.plist in Resources */, + B9C89FCB1F6DCAEB00087AF4 /* NSXMLDocumentTestData.xml in Resources */, + B9C89FCC1F6DCAEB00087AF4 /* NSKeyedUnarchiver-NotificationTest.plist in Resources */, + B9C89FCD1F6DCAEB00087AF4 /* PropertyList-1.0.dtd in Resources */, + B9C89FCE1F6DCAEB00087AF4 /* Test.plist in Resources */, + ); + runOnlyForDeploymentPostprocessing = 0; + }; +/* End PBXResourcesBuildPhase section */ + +/* Begin PBXSourcesBuildPhase section */ + B9C89EBD1F6BF47D00087AF4 /* Sources */ = { + isa = PBXSourcesBuildPhase; + buildActionMask = 2147483647; + files = ( + ); + runOnlyForDeploymentPostprocessing = 0; + }; + B9C89ED31F6BF77E00087AF4 /* Sources */ = { + isa = PBXSourcesBuildPhase; + buildActionMask = 2147483647; + files = ( + B95788861F6FB9470003EB01 /* TestNSNumberBridging.swift in Sources */, + B9C89F8B1F6D4DA900087AF4 /* HTTPServer.swift in Sources */, + B9C89F8C1F6D4DA900087AF4 /* TestHTTPCookieStorage.swift in Sources */, + B9C89F8D1F6D4DA900087AF4 /* TestLengthFormatter.swift in Sources */, + B9C89F361F6BF89C00087AF4 /* TestScanner.swift in Sources */, + B9C89F371F6BF89C00087AF4 /* TestNSValue.swift in Sources */, + B9C89F381F6BF89C00087AF4 /* TestUtils.swift in Sources */, + B9C89F391F6BF89C00087AF4 /* TestProcessInfo.swift in Sources */, + B9C89F3B1F6BF89C00087AF4 /* TestURLProtocol.swift in Sources */, + B9C89F3C1F6BF89C00087AF4 /* TestURLSession.swift in Sources */, + B9C89F3D1F6BF89C00087AF4 /* TestXMLParser.swift in Sources */, + B9C89F3E1F6BF89C00087AF4 /* TestISO8601DateFormatter.swift in Sources */, + B9C89F3F1F6BF89C00087AF4 /* TestNSTextCheckingResult.swift in Sources */, + B9C89F401F6BF89C00087AF4 /* TestCharacterSet.swift in Sources */, + B9C89F411F6BF89C00087AF4 /* TestCodable.swift in Sources */, + B9C89F421F6BF89C00087AF4 /* TestIndexPath.swift in Sources */, + B9C89F431F6BF89C00087AF4 /* TestMassFormatter.swift in Sources */, + B9C89F441F6BF89C00087AF4 /* TestNSSet.swift in Sources */, + B9C89F451F6BF89C00087AF4 /* TestURLResponse.swift in Sources */, + B9C89F461F6BF89C00087AF4 /* TestDate.swift in Sources */, + B9C89F471F6BF89C00087AF4 /* TestObjCRuntime.swift in Sources */, + B9C89F481F6BF89C00087AF4 /* TestStream.swift in Sources */, + B9C89F491F6BF89C00087AF4 /* TestProgress.swift in Sources */, + B9C89F4A1F6BF89C00087AF4 /* TestCalendar.swift in Sources */, + B9C89F4B1F6BF89C00087AF4 /* TestBundle.swift in Sources */, + B9C89F4C1F6BF89C00087AF4 /* TestDateFormatter.swift in Sources */, + B9C89F4D1F6BF89C00087AF4 /* TestHTTPCookie.swift in Sources */, + B9C89F4E1F6BF89C00087AF4 /* TestNSError.swift in Sources */, + B9C89F4F1F6BF89C00087AF4 /* TestNSString.swift in Sources */, + B9C89F501F6BF89C00087AF4 /* TestNSUUID.swift in Sources */, + B9C89F511F6BF89C00087AF4 /* TestPropertyListSerialization.swift in Sources */, + B9C89F531F6BF89C00087AF4 /* TestNSArray.swift in Sources */, + B9C89F541F6BF89C00087AF4 /* TestFileHandle.swift in Sources */, + B9C0F82B1F8EADAF0047CC52 /* DarwinShims.swift in Sources */, + B9C89F551F6BF89C00087AF4 /* TestTimer.swift in Sources */, + B9C89F561F6BF89C00087AF4 /* TestTimeZone.swift in Sources */, + B9C89F571F6BF89C00087AF4 /* TestNSNumber.swift in Sources */, + B9C89F581F6BF89C00087AF4 /* TestNSAttributedString.swift in Sources */, + B9C89F591F6BF89C00087AF4 /* TestByteCountFormatter.swift in Sources */, + B9C89F5A1F6BF89C00087AF4 /* TestUnit.swift in Sources */, + B9C89F5B1F6BF89C00087AF4 /* TestJSONEncoder.swift in Sources */, + B9C89F5C1F6BF89C00087AF4 /* TestOperationQueue.swift in Sources */, + B9C89F5D1F6BF89C00087AF4 /* TestUserDefaults.swift in Sources */, + B9C89F5E1F6BF89C00087AF4 /* TestXMLDocument.swift in Sources */, + B9C89F5F1F6BF89C00087AF4 /* TestNSOrderedSet.swift in Sources */, + B9C89F601F6BF89C00087AF4 /* TestIndexSet.swift in Sources */, + B9C89F611F6BF89C00087AF4 /* TestPipe.swift in Sources */, + B9C89F631F6BF89C00087AF4 /* TestURLRequest.swift in Sources */, + B9C89F641F6BF89C00087AF4 /* TestNSNull.swift in Sources */, + B9C89F651F6BF89C00087AF4 /* TestNSKeyedArchiver.swift in Sources */, + B9C89F661F6BF89C00087AF4 /* TestUnitConverter.swift in Sources */, + B9C89F671F6BF89C00087AF4 /* TestNumberFormatter.swift in Sources */, + B9C89F681F6BF89C00087AF4 /* TestURL.swift in Sources */, + B9C89F6A1F6BF89C00087AF4 /* TestNSRegularExpression.swift in Sources */, + B9C89F6B1F6BF89C00087AF4 /* TestNSPredicate.swift in Sources */, + B9C89F6C1F6BF89C00087AF4 /* TestNSLocale.swift in Sources */, + B9C89F6D1F6BF89C00087AF4 /* TestNSKeyedUnarchiver.swift in Sources */, + B9C89F6E1F6BF89C00087AF4 /* TestPersonNameComponents.swift in Sources */, + B9C89F6F1F6BF89C00087AF4 /* TestFileManager.swift in Sources */, + B9C89F701F6BF89C00087AF4 /* TestDecimal.swift in Sources */, + B9C89F711F6BF89C00087AF4 /* TestNSCache.swift in Sources */, + B9C89F721F6BF89C00087AF4 /* TestNSDictionary.swift in Sources */, + B9C89F731F6BF89C00087AF4 /* TestNotificationCenter.swift in Sources */, + B9C89F741F6BF89C00087AF4 /* TestProcess.swift in Sources */, + B9C89F751F6BF89C00087AF4 /* TestEnergyFormatter.swift in Sources */, + B9C89F761F6BF89C00087AF4 /* TestNSCompoundPredicate.swift in Sources */, + B9C89F771F6BF89C00087AF4 /* TestNotification.swift in Sources */, + B9C89F781F6BF89C00087AF4 /* TestNSData.swift in Sources */, + B9C89F791F6BF89C00087AF4 /* TestNSRange.swift in Sources */, + B9C89F7A1F6BF89C00087AF4 /* TestNSGeometry.swift in Sources */, + B9C89F7B1F6BF89C00087AF4 /* TestNSProgressFraction.swift in Sources */, + B9C89F7C1F6BF89C00087AF4 /* TestURLCredential.swift in Sources */, + B9C89F7D1F6BF89C00087AF4 /* TestRunLoop.swift in Sources */, + B9C89F7E1F6BF89C00087AF4 /* TestThread.swift in Sources */, + B9C89F7F1F6BF89C00087AF4 /* TestNotificationQueue.swift in Sources */, + B9C89F801F6BF89C00087AF4 /* TestJSONSerialization.swift in Sources */, + B9C89F811F6BF89C00087AF4 /* TestAffineTransform.swift in Sources */, + B9C89F821F6BF89C00087AF4 /* TestNSURLRequest.swift in Sources */, + ); + runOnlyForDeploymentPostprocessing = 0; + }; +/* End PBXSourcesBuildPhase section */ + +/* Begin XCBuildConfiguration section */ + B9C89EC61F6BF47D00087AF4 /* Debug */ = { + isa = XCBuildConfiguration; + buildSettings = { + ALWAYS_SEARCH_USER_PATHS = NO; + CLANG_ANALYZER_NONNULL = YES; + CLANG_ANALYZER_NUMBER_OBJECT_CONVERSION = YES_AGGRESSIVE; + CLANG_CXX_LANGUAGE_STANDARD = "gnu++14"; + CLANG_CXX_LIBRARY = "libc++"; + CLANG_ENABLE_MODULES = YES; + CLANG_ENABLE_OBJC_ARC = YES; + CLANG_WARN_BLOCK_CAPTURE_AUTORELEASING = YES; + CLANG_WARN_BOOL_CONVERSION = YES; + CLANG_WARN_COMMA = YES; + CLANG_WARN_CONSTANT_CONVERSION = YES; + CLANG_WARN_DIRECT_OBJC_ISA_USAGE = YES_ERROR; + CLANG_WARN_DOCUMENTATION_COMMENTS = YES; + CLANG_WARN_EMPTY_BODY = YES; + CLANG_WARN_ENUM_CONVERSION = YES; + CLANG_WARN_INFINITE_RECURSION = YES; + CLANG_WARN_INT_CONVERSION = YES; + CLANG_WARN_NON_LITERAL_NULL_CONVERSION = YES; + CLANG_WARN_OBJC_LITERAL_CONVERSION = YES; + CLANG_WARN_OBJC_ROOT_CLASS = YES_ERROR; + CLANG_WARN_RANGE_LOOP_ANALYSIS = YES; + CLANG_WARN_STRICT_PROTOTYPES = YES; + CLANG_WARN_SUSPICIOUS_MOVE = YES; + CLANG_WARN_UNGUARDED_AVAILABILITY = YES_AGGRESSIVE; + CLANG_WARN_UNREACHABLE_CODE = YES; + CLANG_WARN__DUPLICATE_METHOD_MATCH = YES; + CODE_SIGN_IDENTITY = "-"; + COPY_PHASE_STRIP = NO; + DEBUG_INFORMATION_FORMAT = dwarf; + ENABLE_STRICT_OBJC_MSGSEND = YES; + ENABLE_TESTABILITY = YES; + GCC_C_LANGUAGE_STANDARD = gnu11; + GCC_DYNAMIC_NO_PIC = NO; + GCC_NO_COMMON_BLOCKS = YES; + GCC_OPTIMIZATION_LEVEL = 0; + GCC_PREPROCESSOR_DEFINITIONS = ( + "DEBUG=1", + "$(inherited)", + ); + GCC_WARN_64_TO_32_BIT_CONVERSION = YES; + GCC_WARN_ABOUT_RETURN_TYPE = YES_ERROR; + GCC_WARN_UNDECLARED_SELECTOR = YES; + GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE; + GCC_WARN_UNUSED_FUNCTION = YES; + GCC_WARN_UNUSED_VARIABLE = YES; + MACOSX_DEPLOYMENT_TARGET = 10.12; + MTL_ENABLE_DEBUG_INFO = YES; + ONLY_ACTIVE_ARCH = YES; + SDKROOT = macosx; + SWIFT_ACTIVE_COMPILATION_CONDITIONS = DEBUG; + SWIFT_OPTIMIZATION_LEVEL = "-Onone"; + }; + name = Debug; + }; + B9C89EC71F6BF47D00087AF4 /* Release */ = { + isa = XCBuildConfiguration; + buildSettings = { + ALWAYS_SEARCH_USER_PATHS = NO; + CLANG_ANALYZER_NONNULL = YES; + CLANG_ANALYZER_NUMBER_OBJECT_CONVERSION = YES_AGGRESSIVE; + CLANG_CXX_LANGUAGE_STANDARD = "gnu++14"; + CLANG_CXX_LIBRARY = "libc++"; + CLANG_ENABLE_MODULES = YES; + CLANG_ENABLE_OBJC_ARC = YES; + CLANG_WARN_BLOCK_CAPTURE_AUTORELEASING = YES; + CLANG_WARN_BOOL_CONVERSION = YES; + CLANG_WARN_COMMA = YES; + CLANG_WARN_CONSTANT_CONVERSION = YES; + CLANG_WARN_DIRECT_OBJC_ISA_USAGE = YES_ERROR; + CLANG_WARN_DOCUMENTATION_COMMENTS = YES; + CLANG_WARN_EMPTY_BODY = YES; + CLANG_WARN_ENUM_CONVERSION = YES; + CLANG_WARN_INFINITE_RECURSION = YES; + CLANG_WARN_INT_CONVERSION = YES; + CLANG_WARN_NON_LITERAL_NULL_CONVERSION = YES; + CLANG_WARN_OBJC_LITERAL_CONVERSION = YES; + CLANG_WARN_OBJC_ROOT_CLASS = YES_ERROR; + CLANG_WARN_RANGE_LOOP_ANALYSIS = YES; + CLANG_WARN_STRICT_PROTOTYPES = YES; + CLANG_WARN_SUSPICIOUS_MOVE = YES; + CLANG_WARN_UNGUARDED_AVAILABILITY = YES_AGGRESSIVE; + CLANG_WARN_UNREACHABLE_CODE = YES; + CLANG_WARN__DUPLICATE_METHOD_MATCH = YES; + CODE_SIGN_IDENTITY = "-"; + COPY_PHASE_STRIP = NO; + DEBUG_INFORMATION_FORMAT = "dwarf-with-dsym"; + ENABLE_NS_ASSERTIONS = NO; + ENABLE_STRICT_OBJC_MSGSEND = YES; + GCC_C_LANGUAGE_STANDARD = gnu11; + GCC_NO_COMMON_BLOCKS = YES; + GCC_WARN_64_TO_32_BIT_CONVERSION = YES; + GCC_WARN_ABOUT_RETURN_TYPE = YES_ERROR; + GCC_WARN_UNDECLARED_SELECTOR = YES; + GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE; + GCC_WARN_UNUSED_FUNCTION = YES; + GCC_WARN_UNUSED_VARIABLE = YES; + MACOSX_DEPLOYMENT_TARGET = 10.12; + MTL_ENABLE_DEBUG_INFO = NO; + SDKROOT = macosx; + SWIFT_OPTIMIZATION_LEVEL = "-Owholemodule"; + }; + name = Release; + }; + B9C89EC91F6BF47D00087AF4 /* Debug */ = { + isa = XCBuildConfiguration; + buildSettings = { + CLANG_ENABLE_MODULES = YES; + CODE_SIGN_STYLE = Automatic; + LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/../Frameworks @loader_path/../Frameworks"; + MACOSX_DEPLOYMENT_TARGET = 10.12; + OTHER_SWIFT_FLAGS = ""; + "OTHER_SWIFT_FLAGS[arch=*]" = ""; + PRODUCT_NAME = "$(TARGET_NAME)"; + SWIFT_OPTIMIZATION_LEVEL = "-Onone"; + SWIFT_VERSION = 4.0; + }; + name = Debug; + }; + B9C89ECA1F6BF47D00087AF4 /* Release */ = { + isa = XCBuildConfiguration; + buildSettings = { + CLANG_ENABLE_MODULES = YES; + CODE_SIGN_STYLE = Automatic; + LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/../Frameworks @loader_path/../Frameworks"; + MACOSX_DEPLOYMENT_TARGET = 10.12; + OTHER_SWIFT_FLAGS = ""; + PRODUCT_NAME = "$(TARGET_NAME)"; + SWIFT_VERSION = 4.0; + }; + name = Release; + }; + B9C89EDD1F6BF77E00087AF4 /* Debug */ = { + isa = XCBuildConfiguration; + buildSettings = { + CODE_SIGN_STYLE = Automatic; + COMBINE_HIDPI_IMAGES = YES; + INFOPLIST_FILE = DarwinCompatibilityTests/Info.plist; + LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/../Frameworks @loader_path/../Frameworks"; + "OTHER_SWIFT_FLAGS[arch=*]" = "-DDEPLOYMENT_RUNTIME_OBJC -DDARWIN_COMPATIBILITY_TESTS"; + PRODUCT_BUNDLE_IDENTIFIER = org.swift.DarwinCompatibilityTests; + PRODUCT_NAME = "$(TARGET_NAME)"; + SWIFT_VERSION = 4.0; + }; + name = Debug; + }; + B9C89EDE1F6BF77E00087AF4 /* Release */ = { + isa = XCBuildConfiguration; + buildSettings = { + CODE_SIGN_STYLE = Automatic; + COMBINE_HIDPI_IMAGES = YES; + INFOPLIST_FILE = DarwinCompatibilityTests/Info.plist; + LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/../Frameworks @loader_path/../Frameworks"; + "OTHER_SWIFT_FLAGS[arch=*]" = "-DDEPLOYMENT_RUNTIME_OBJC -DDARWIN_COMPATIBILITY_TESTS"; + PRODUCT_BUNDLE_IDENTIFIER = org.swift.DarwinCompatibilityTests; + PRODUCT_NAME = "$(TARGET_NAME)"; + SWIFT_VERSION = 4.0; + }; + name = Release; + }; +/* End XCBuildConfiguration section */ + +/* Begin XCConfigurationList section */ + B9C89EBC1F6BF47D00087AF4 /* Build configuration list for PBXProject "DarwinCompatibilityTests" */ = { + isa = XCConfigurationList; + buildConfigurations = ( + B9C89EC61F6BF47D00087AF4 /* Debug */, + B9C89EC71F6BF47D00087AF4 /* Release */, + ); + defaultConfigurationIsVisible = 0; + defaultConfigurationName = Release; + }; + B9C89EC81F6BF47D00087AF4 /* Build configuration list for PBXNativeTarget "DarwinCompatibilityTests" */ = { + isa = XCConfigurationList; + buildConfigurations = ( + B9C89EC91F6BF47D00087AF4 /* Debug */, + B9C89ECA1F6BF47D00087AF4 /* Release */, + ); + defaultConfigurationIsVisible = 0; + defaultConfigurationName = Release; + }; + B9C89EDC1F6BF77E00087AF4 /* Build configuration list for PBXNativeTarget "DarwinCompatibilityTests" */ = { + isa = XCConfigurationList; + buildConfigurations = ( + B9C89EDD1F6BF77E00087AF4 /* Debug */, + B9C89EDE1F6BF77E00087AF4 /* Release */, + ); + defaultConfigurationIsVisible = 0; + defaultConfigurationName = Release; + }; +/* End XCConfigurationList section */ + }; + rootObject = B9C89EB91F6BF47D00087AF4 /* Project object */; +} diff --git a/DarwinCompatibilityTests/Info.plist b/DarwinCompatibilityTests/Info.plist new file mode 100644 index 0000000000..6c40a6cd0c --- /dev/null +++ b/DarwinCompatibilityTests/Info.plist @@ -0,0 +1,22 @@ + + + + + CFBundleDevelopmentRegion + $(DEVELOPMENT_LANGUAGE) + CFBundleExecutable + $(EXECUTABLE_NAME) + CFBundleIdentifier + $(PRODUCT_BUNDLE_IDENTIFIER) + CFBundleInfoDictionaryVersion + 6.0 + CFBundleName + $(PRODUCT_NAME) + CFBundlePackageType + BNDL + CFBundleShortVersionString + 1.0 + CFBundleVersion + 1 + + diff --git a/DarwinShims.swift b/DarwinShims.swift new file mode 100644 index 0000000000..171f5d3415 --- /dev/null +++ b/DarwinShims.swift @@ -0,0 +1,87 @@ +// This source file is part of the Swift.org open source project +// +// Copyright (c) 2014 - 2017 Apple Inc. and the Swift project authors +// Licensed under Apache License v2.0 with Runtime Library Exception +// +// See http://swift.org/LICENSE.txt for license information +// See http://swift.org/CONTRIBUTORS.txt for the list of Swift project authors +// + +// These shims are used solely by the DarwinCompatibilityTests Xcode project to +// allow the TestFoundation tests to compile and run against Darwin's native +// Foundation. +// It contains wrappers for methods (some experimental) added in +// swift-corelibs-foundation which do not exist in Foundation, and other small +// differences. + +import Foundation + + +public typealias unichar = UInt16 + +extension unichar : ExpressibleByUnicodeScalarLiteral { + public typealias UnicodeScalarLiteralType = UnicodeScalar + + public init(unicodeScalarLiteral scalar: UnicodeScalar) { + self.init(scalar.value) + } +} + +extension NSURL { + func checkResourceIsReachable() throws -> Bool { + var error: NSError? + if checkResourceIsReachableAndReturnError(&error) { + return true + } else { + if let e = error { + throw e + } + } + return false + } +} + +extension Thread { + class var mainThread: Thread { + return Thread.main + } +} + +extension Scanner { + public func scanString(_ searchString: String) -> String? { + var result: NSString? = nil + if scanString(string, into: &result), let str = result { + return str as String + } + return nil + } +} + +extension JSONSerialization { + class func writeJSONObject(_ obj: Any, toStream stream: OutputStream, options opt: WritingOptions) throws -> Int { + var error: NSError? + let ret = writeJSONObject(obj, to: stream, options: opt, error: &error) + guard ret != 0 else { + throw error! + } + return ret + } +} + +extension NSIndexSet { + func _bridgeToSwift() -> NSIndexSet { + return self + } +} + +extension CharacterSet { + func _bridgeToSwift() -> CharacterSet { + return self + } +} + +extension NSCharacterSet { + func _bridgeToSwift() -> CharacterSet { + return self as CharacterSet + } +} diff --git a/TestFoundation/TestBundle.swift b/TestFoundation/TestBundle.swift index c4f08aba86..53ef7a2195 100644 --- a/TestFoundation/TestBundle.swift +++ b/TestFoundation/TestBundle.swift @@ -18,7 +18,16 @@ internal func testBundle() -> Bundle { +#if DARWIN_COMPATIBILITY_TESTS + for bundle in Bundle.allBundles { + if let bundleId = bundle.bundleIdentifier, bundleId == "org.swift.DarwinCompatibilityTests", bundle.resourcePath != nil { + return bundle + } + } + fatalError("Cant find test bundle") +#else return Bundle.main +#endif } class TestBundle : XCTestCase { @@ -88,14 +97,24 @@ class TestBundle : XCTestCase { let bundle = testBundle() // bundleIdentifier +#if DARWIN_COMPATIBILITY_TESTS + XCTAssertEqual("org.swift.DarwinCompatibilityTests", bundle.bundleIdentifier) +#else XCTAssertEqual("org.swift.TestFoundation", bundle.bundleIdentifier) - +#endif + // infoDictionary let info = bundle.infoDictionary XCTAssertNotNil(info) - XCTAssert("org.swift.TestFoundation" == info!["CFBundleIdentifier"] as! String) + +#if DARWIN_COMPATIBILITY_TESTS + XCTAssert("DarwinCompatibilityTests" == info!["CFBundleName"] as! String) + XCTAssert("org.swift.DarwinCompatibilityTests" == info!["CFBundleIdentifier"] as! String) +#else XCTAssert("TestFoundation" == info!["CFBundleName"] as! String) - + XCTAssert("org.swift.TestFoundation" == info!["CFBundleIdentifier"] as! String) +#endif + // localizedInfoDictionary XCTAssertNil(bundle.localizedInfoDictionary) // FIXME: Add a localized Info.plist for testing } @@ -204,6 +223,4 @@ class TestBundle : XCTestCase { XCTAssertThrowsError(try bundle!.preflight()) _cleanupPlayground(playground) } - - } diff --git a/TestFoundation/TestHTTPCookieStorage.swift b/TestFoundation/TestHTTPCookieStorage.swift index 493098a092..1c607d0196 100644 --- a/TestFoundation/TestHTTPCookieStorage.swift +++ b/TestFoundation/TestHTTPCookieStorage.swift @@ -244,7 +244,7 @@ class TestHTTPCookieStorage: XCTestCase { } func test_cookieInXDGSpecPath() { -#if !os(Android) +#if !os(Android) && !DARWIN_COMPATIBILITY_TESTS //Test without setting the environment variable let testCookie = HTTPCookie(properties: [ .name: "TestCookie0", diff --git a/TestFoundation/TestJSONEncoder.swift b/TestFoundation/TestJSONEncoder.swift index cfb2011045..1af4fbaf1c 100644 --- a/TestFoundation/TestJSONEncoder.swift +++ b/TestFoundation/TestJSONEncoder.swift @@ -105,19 +105,27 @@ class TestJSONEncoder : XCTestCase { } func test_encodingOutputFormattingSortedKeys() { + let expectedJSON = "{\"email\":\"appleseed@apple.com\",\"name\":\"Johnny Appleseed\"}".data(using: .utf8)! + let person = Person.testValue +#if os(OSX) || DARWIN_COMPATIBILITY_TESTS if #available(OSX 10.13, iOS 11.0, watchOS 4.0, tvOS 11.0, *) { - let expectedJSON = "{\"email\":\"appleseed@apple.com\",\"name\":\"Johnny Appleseed\"}".data(using: .utf8)! - let person = Person.testValue _testRoundTrip(of: person, expectedJSON: expectedJSON, outputFormatting: [.sortedKeys]) } +#else + _testRoundTrip(of: person, expectedJSON: expectedJSON, outputFormatting: [.sortedKeys]) +#endif } func test_encodingOutputFormattingPrettyPrintedSortedKeys() { + let expectedJSON = "{\n \"email\" : \"appleseed@apple.com\",\n \"name\" : \"Johnny Appleseed\"\n}".data(using: .utf8)! + let person = Person.testValue +#if os(OSX) || DARWIN_COMPATIBILITY_TESTS if #available(OSX 10.13, iOS 11.0, watchOS 4.0, tvOS 11.0, *) { - let expectedJSON = "{\n \"email\" : \"appleseed@apple.com\",\n \"name\" : \"Johnny Appleseed\"\n}".data(using: .utf8)! - let person = Person.testValue _testRoundTrip(of: person, expectedJSON: expectedJSON, outputFormatting: [.prettyPrinted, .sortedKeys]) } +#else + _testRoundTrip(of: person, expectedJSON: expectedJSON, outputFormatting: [.prettyPrinted, .sortedKeys]) +#endif } // MARK: - Date Strategy Tests @@ -151,19 +159,18 @@ class TestJSONEncoder : XCTestCase { } func test_encodingDateISO8601() { - if #available(OSX 10.12, iOS 10.0, watchOS 3.0, tvOS 10.0, *) { - let formatter = ISO8601DateFormatter() - formatter.formatOptions = .withInternetDateTime - - let timestamp = Date(timeIntervalSince1970: 1000) - let expectedJSON = "[\"\(formatter.string(from: timestamp))\"]".data(using: .utf8)! - - // We can't encode a top-level Date, so it'll be wrapped in an array. - _testRoundTrip(of: TopLevelArrayWrapper(timestamp), - expectedJSON: expectedJSON, - dateEncodingStrategy: .iso8601, - dateDecodingStrategy: .iso8601) - } + let formatter = ISO8601DateFormatter() + formatter.formatOptions = .withInternetDateTime + + let timestamp = Date(timeIntervalSince1970: 1000) + let expectedJSON = "[\"\(formatter.string(from: timestamp))\"]".data(using: .utf8)! + + // We can't encode a top-level Date, so it'll be wrapped in an array. + _testRoundTrip(of: TopLevelArrayWrapper(timestamp), + expectedJSON: expectedJSON, + dateEncodingStrategy: .iso8601, + dateDecodingStrategy: .iso8601) + } func test_encodingDateFormatted() { diff --git a/TestFoundation/TestJSONSerialization.swift b/TestFoundation/TestJSONSerialization.swift index bb96e5db69..2fdceba30e 100644 --- a/TestFoundation/TestJSONSerialization.swift +++ b/TestFoundation/TestJSONSerialization.swift @@ -1415,6 +1415,7 @@ extension TestJSONSerialization { } func test_jsonObjectToOutputStreamInsufficientBuffer() { +#if !DARWIN_COMPATIBILITY_TESTS // Hangs let dict = ["a":["b":1]] let buffer = Array(repeating: 0, count: 10) let outputStream = OutputStream(toBuffer: UnsafeMutablePointer(mutating: buffer), capacity: buffer.count) @@ -1428,6 +1429,7 @@ extension TestJSONSerialization { } catch { XCTFail("Error occurred while writing to stream") } +#endif } func test_booleanJSONObject() { @@ -1469,18 +1471,23 @@ extension TestJSONSerialization { XCTFail("Failed during serialization") } } - - func test_serializeSortedKeys() { - var dict: [String: Any] - - dict = ["z": 1, "y": 1, "x": 1, "w": 1, "v": 1, "u": 1, "t": 1, "s": 1, "r": 1, "q": 1, ] - XCTAssertEqual(try trySerialize(dict, options: .sortedKeys), "{\"q\":1,\"r\":1,\"s\":1,\"t\":1,\"u\":1,\"v\":1,\"w\":1,\"x\":1,\"y\":1,\"z\":1}") - - dict = ["aaaa": 1, "aaa": 1, "aa": 1, "a": 1] - XCTAssertEqual(try trySerialize(dict, options: .sortedKeys), "{\"a\":1,\"aa\":1,\"aaa\":1,\"aaaa\":1}") - dict = ["c": ["c":1,"b":1,"a":1],"b":["c":1,"b":1,"a":1],"a":["c":1,"b":1,"a":1]] - XCTAssertEqual(try trySerialize(dict, options: .sortedKeys), "{\"a\":{\"a\":1,\"b\":1,\"c\":1},\"b\":{\"a\":1,\"b\":1,\"c\":1},\"c\":{\"a\":1,\"b\":1,\"c\":1}}") + func test_serializeSortedKeys() { + let dict1 = ["z": 1, "y": 1, "x": 1, "w": 1, "v": 1, "u": 1, "t": 1, "s": 1, "r": 1, "q": 1, ] + let dict2 = ["aaaa": 1, "aaa": 1, "aa": 1, "a": 1] + let dict3 = ["c": ["c":1,"b":1,"a":1],"b":["c":1,"b":1,"a":1],"a":["c":1,"b":1,"a":1]] + +#if DARWIN_COMPATIBILITY_TESTS + if #available(OSX 10.13, *) { + XCTAssertEqual(try trySerialize(dict1, options: .sortedKeys), "{\"q\":1,\"r\":1,\"s\":1,\"t\":1,\"u\":1,\"v\":1,\"w\":1,\"x\":1,\"y\":1,\"z\":1}") + XCTAssertEqual(try trySerialize(dict2, options: .sortedKeys), "{\"a\":1,\"aa\":1,\"aaa\":1,\"aaaa\":1}") + XCTAssertEqual(try trySerialize(dict3, options: .sortedKeys), "{\"a\":{\"a\":1,\"b\":1,\"c\":1},\"b\":{\"a\":1,\"b\":1,\"c\":1},\"c\":{\"a\":1,\"b\":1,\"c\":1}}") + } +#else + XCTAssertEqual(try trySerialize(dict1, options: .sortedKeys), "{\"q\":1,\"r\":1,\"s\":1,\"t\":1,\"u\":1,\"v\":1,\"w\":1,\"x\":1,\"y\":1,\"z\":1}") + XCTAssertEqual(try trySerialize(dict2, options: .sortedKeys), "{\"a\":1,\"aa\":1,\"aaa\":1,\"aaaa\":1}") + XCTAssertEqual(try trySerialize(dict3, options: .sortedKeys), "{\"a\":{\"a\":1,\"b\":1,\"c\":1},\"b\":{\"a\":1,\"b\":1,\"c\":1},\"c\":{\"a\":1,\"b\":1,\"c\":1}}") +#endif } func test_serializePrettyPrinted() { diff --git a/TestFoundation/TestNSArray.swift b/TestFoundation/TestNSArray.swift index e1dcf01b0d..3a4a416293 100644 --- a/TestFoundation/TestNSArray.swift +++ b/TestFoundation/TestNSArray.swift @@ -559,8 +559,21 @@ class TestNSArray : XCTestCase { try FileManager.default.createDirectory(atPath: tempDir, withIntermediateDirectories: false, attributes: nil) let testFile = tempDir + "/readWriteURL.txt" let url = URL(fileURLWithPath: testFile) + let data2: NSArray +#if DARWIN_COMPATIBILITY_TESTS + if #available(OSX 10.13, *) { + try data.write(to: url) + data2 = try NSArray(contentsOf: url, error: ()) + } else { + guard data.write(toFile: testFile, atomically: true) else { + throw NSError(domain: NSCocoaErrorDomain, code: CocoaError.fileWriteUnknown.rawValue) + } + data2 = NSArray(contentsOfFile: testFile)! + } +#else try data.write(to: url) - let data2 = try NSArray(contentsOf: url, error: ()) + data2 = try NSArray(contentsOf: url, error: ()) +#endif XCTAssertEqual(data, data2) removeTestFile(testFile) } catch let e { diff --git a/TestFoundation/TestNSKeyedArchiver.swift b/TestFoundation/TestNSKeyedArchiver.swift index 92de26099f..f05e0b93da 100644 --- a/TestFoundation/TestNSKeyedArchiver.swift +++ b/TestFoundation/TestNSKeyedArchiver.swift @@ -285,18 +285,21 @@ class TestNSKeyedArchiver : XCTestCase { let s1 = String(cString: charPtr) let s2 = String(cString: expectedCharPtr!) - + +#if !DARWIN_COMPATIBILITY_TESTS // On Darwin decoded strings would belong to the autorelease pool, but as we don't have // one in SwiftFoundation let's explicitly deallocate it here. expectedCharPtr!.deallocate() - +#endif return s1 == s2 }) } func test_archive_user_class() { +#if !DARWIN_COMPATIBILITY_TESTS // Causes SIGABRT let userClass = UserClass(1234) test_archive(userClass) +#endif } func test_archive_ns_user_class() { diff --git a/TestFoundation/TestNSProgressFraction.swift b/TestFoundation/TestNSProgressFraction.swift index a1e8435ac5..7dcdd65990 100644 --- a/TestFoundation/TestNSProgressFraction.swift +++ b/TestFoundation/TestNSProgressFraction.swift @@ -15,6 +15,7 @@ import SwiftFoundation import SwiftXCTest #endif +#if !DARWIN_COMPATIBILITY_TESTS class TestProgressFraction : XCTestCase { static var allTests: [(String, (TestProgressFraction) -> () throws -> Void)] { return [ @@ -159,4 +160,5 @@ class TestProgressFraction : XCTestCase { XCTAssertFalse(r.overflowed) } } +#endif diff --git a/TestFoundation/TestUserDefaults.swift b/TestFoundation/TestUserDefaults.swift index 86a2e978bc..d05e68b087 100644 --- a/TestFoundation/TestUserDefaults.swift +++ b/TestFoundation/TestUserDefaults.swift @@ -178,12 +178,14 @@ class TestUserDefaults : XCTestCase { } func test_setValue_String() { +#if !DARWIN_COMPATIBILITY_TESTS // Works if run on its own, hangs if all tests in class are run let defaults = UserDefaults.standard // Register a String value. UserDefaults.string(forKey:) is supposed to return the String defaults.set("hello", forKey: "key1") XCTAssertEqual(defaults.string(forKey: "key1"), "hello") +#endif } func test_setValue_NSURL() { @@ -196,12 +198,14 @@ class TestUserDefaults : XCTestCase { } func test_setValue_URL() { +#if !DARWIN_COMPATIBILITY_TESTS // Works if run on its own, hangs if all tests in class are run let defaults = UserDefaults.standard // Set a URL value. UserDefaults.url(forKey:) is supposed to return the URL defaults.set(URL(fileURLWithPath: "/hello/world"), forKey: "key1") XCTAssertEqual(defaults.url(forKey: "key1"), URL(fileURLWithPath: "/hello/world")) +#endif } func test_setValue_NSData() { diff --git a/TestFoundation/TestXMLParser.swift b/TestFoundation/TestXMLParser.swift index b08f0b3682..07b5d1e21d 100644 --- a/TestFoundation/TestXMLParser.swift +++ b/TestFoundation/TestXMLParser.swift @@ -16,8 +16,6 @@ import SwiftXCTest #endif -class OptionalParserConformance: XMLParserDelegate {} - enum XMLParserDelegateEvent { case startDocument case endDocument @@ -49,7 +47,7 @@ extension XMLParserDelegateEvent: Equatable { } -class XMLParserDelegateEventStream: XMLParserDelegate { +class XMLParserDelegateEventStream: NSObject, XMLParserDelegate { var events: [XMLParserDelegateEvent] = [] func parserDidStartDocument(_ parser: XMLParser) { From 7d963e179d1d7898bdff7414dff1912c71a9d032 Mon Sep 17 00:00:00 2001 From: Simon Evans Date: Thu, 23 Nov 2017 15:06:21 +0000 Subject: [PATCH 3/3] DarwinCompatibilityTest fixes - Move DarwinShims.swift into DarwinCompatibilityTests subdir. - Disable more tests that crash on Darwin native. - Use DEPLOYMENT_RUNTIME_OBJC instead of DARWIN_COMPATIBILITY_TESTS to disable a deallocate() that isnt needed for AutoReleasing objects. --- .../project.pbxproj | 22 ++++++------------- .../DarwinShims.swift | 0 TestFoundation/TestCodable.swift | 2 ++ TestFoundation/TestNSData.swift | 10 ++++++--- TestFoundation/TestNSKeyedArchiver.swift | 2 +- 5 files changed, 17 insertions(+), 19 deletions(-) rename DarwinShims.swift => DarwinCompatibilityTests/DarwinShims.swift (100%) diff --git a/DarwinCompatibilityTests.xcodeproj/project.pbxproj b/DarwinCompatibilityTests.xcodeproj/project.pbxproj index 268428ae64..772e4a4ce9 100644 --- a/DarwinCompatibilityTests.xcodeproj/project.pbxproj +++ b/DarwinCompatibilityTests.xcodeproj/project.pbxproj @@ -8,7 +8,6 @@ /* Begin PBXBuildFile section */ B95788861F6FB9470003EB01 /* TestNSNumberBridging.swift in Sources */ = {isa = PBXBuildFile; fileRef = B95788851F6FB9470003EB01 /* TestNSNumberBridging.swift */; }; - B9C0F82B1F8EADAF0047CC52 /* DarwinShims.swift in Sources */ = {isa = PBXBuildFile; fileRef = B9C0F8291F8EADAF0047CC52 /* DarwinShims.swift */; }; B9C89ED21F6BF67C00087AF4 /* XCTest.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = B9C89ED11F6BF67C00087AF4 /* XCTest.framework */; }; B9C89F361F6BF89C00087AF4 /* TestScanner.swift in Sources */ = {isa = PBXBuildFile; fileRef = B9C89EE61F6BF88F00087AF4 /* TestScanner.swift */; }; B9C89F371F6BF89C00087AF4 /* TestNSValue.swift in Sources */ = {isa = PBXBuildFile; fileRef = B9C89EE71F6BF88F00087AF4 /* TestNSValue.swift */; }; @@ -107,6 +106,8 @@ B9C89FCC1F6DCAEB00087AF4 /* NSKeyedUnarchiver-NotificationTest.plist in Resources */ = {isa = PBXBuildFile; fileRef = B9C89FB71F6DCAEB00087AF4 /* NSKeyedUnarchiver-NotificationTest.plist */; }; B9C89FCD1F6DCAEB00087AF4 /* PropertyList-1.0.dtd in Resources */ = {isa = PBXBuildFile; fileRef = B9C89FB81F6DCAEB00087AF4 /* PropertyList-1.0.dtd */; }; B9C89FCE1F6DCAEB00087AF4 /* Test.plist in Resources */ = {isa = PBXBuildFile; fileRef = B9C89FB91F6DCAEB00087AF4 /* Test.plist */; }; + B9F3269F1FC714DD003C3599 /* DarwinShims.swift in Sources */ = {isa = PBXBuildFile; fileRef = B9F3269E1FC714DD003C3599 /* DarwinShims.swift */; }; + B9F326A01FC714DD003C3599 /* DarwinShims.swift in Sources */ = {isa = PBXBuildFile; fileRef = B9F3269E1FC714DD003C3599 /* DarwinShims.swift */; }; /* End PBXBuildFile section */ /* Begin PBXCopyFilesBuildPhase section */ @@ -123,9 +124,7 @@ /* Begin PBXFileReference section */ B95788851F6FB9470003EB01 /* TestNSNumberBridging.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; name = TestNSNumberBridging.swift; path = TestFoundation/TestNSNumberBridging.swift; sourceTree = ""; }; - B9C0F8291F8EADAF0047CC52 /* DarwinShims.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = DarwinShims.swift; sourceTree = ""; }; B9C89EC11F6BF47D00087AF4 /* DarwinCompatibilityTests */ = {isa = PBXFileReference; explicitFileType = "compiled.mach-o.executable"; includeInIndex = 0; path = DarwinCompatibilityTests; sourceTree = BUILT_PRODUCTS_DIR; }; - B9C89ECB1F6BF49800087AF4 /* TestFoundation */ = {isa = PBXFileReference; lastKnownFileType = folder; name = TestFoundation; path = ../TestFoundation; sourceTree = ""; }; B9C89ED11F6BF67C00087AF4 /* XCTest.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = XCTest.framework; path = Platforms/MacOSX.platform/Developer/Library/Frameworks/XCTest.framework; sourceTree = DEVELOPER_DIR; }; B9C89ED71F6BF77E00087AF4 /* DarwinCompatibilityTests.xctest */ = {isa = PBXFileReference; explicitFileType = wrapper.cfbundle; includeInIndex = 0; path = DarwinCompatibilityTests.xctest; sourceTree = BUILT_PRODUCTS_DIR; }; B9C89EDB1F6BF77E00087AF4 /* Info.plist */ = {isa = PBXFileReference; lastKnownFileType = text.plist.xml; path = Info.plist; sourceTree = ""; }; @@ -229,6 +228,7 @@ B9C89FB71F6DCAEB00087AF4 /* NSKeyedUnarchiver-NotificationTest.plist */ = {isa = PBXFileReference; lastKnownFileType = text.plist.xml; name = "NSKeyedUnarchiver-NotificationTest.plist"; path = "TestFoundation/Resources/NSKeyedUnarchiver-NotificationTest.plist"; sourceTree = ""; }; B9C89FB81F6DCAEB00087AF4 /* PropertyList-1.0.dtd */ = {isa = PBXFileReference; lastKnownFileType = text.xml; name = "PropertyList-1.0.dtd"; path = "TestFoundation/Resources/PropertyList-1.0.dtd"; sourceTree = ""; }; B9C89FB91F6DCAEB00087AF4 /* Test.plist */ = {isa = PBXFileReference; lastKnownFileType = text.plist.xml; name = Test.plist; path = TestFoundation/Resources/Test.plist; sourceTree = ""; }; + B9F3269E1FC714DD003C3599 /* DarwinShims.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = DarwinShims.swift; sourceTree = ""; }; /* End PBXFileReference section */ /* Begin PBXFrameworksBuildPhase section */ @@ -253,7 +253,6 @@ B9C89EB81F6BF47D00087AF4 = { isa = PBXGroup; children = ( - B9C0F8291F8EADAF0047CC52 /* DarwinShims.swift */, B95788851F6FB9470003EB01 /* TestNSNumberBridging.swift */, B9C89FAC1F6DCAE700087AF4 /* Info.plist */, B9C89FAD1F6DCAE800087AF4 /* NSKeyedUnarchiver-ArrayTest.plist */, @@ -354,7 +353,6 @@ B9C89EED1F6BF89000087AF4 /* TestXMLParser.swift */, B9C89F131F6BF89600087AF4 /* xdgTestHelper */, B9C89F021F6BF89300087AF4 /* XDGTestHelper.swift */, - B9C89EC31F6BF47D00087AF4 /* DarwinCompatibilityTests */, B9C89ED81F6BF77E00087AF4 /* DarwinCompatibilityTests */, B9C89EC21F6BF47D00087AF4 /* Products */, B9C89ED01F6BF67C00087AF4 /* Frameworks */, @@ -370,14 +368,6 @@ name = Products; sourceTree = ""; }; - B9C89EC31F6BF47D00087AF4 /* DarwinCompatibilityTests */ = { - isa = PBXGroup; - children = ( - B9C89ECB1F6BF49800087AF4 /* TestFoundation */, - ); - path = DarwinCompatibilityTests; - sourceTree = ""; - }; B9C89ED01F6BF67C00087AF4 /* Frameworks */ = { isa = PBXGroup; children = ( @@ -389,6 +379,7 @@ B9C89ED81F6BF77E00087AF4 /* DarwinCompatibilityTests */ = { isa = PBXGroup; children = ( + B9F3269E1FC714DD003C3599 /* DarwinShims.swift */, B9C89EDF1F6BF79000087AF4 /* TestFoundation */, B9C89EDB1F6BF77E00087AF4 /* Info.plist */, ); @@ -444,7 +435,7 @@ TargetAttributes = { B9C89EC01F6BF47D00087AF4 = { CreatedOnToolsVersion = 9.0; - LastSwiftMigration = 0900; + LastSwiftMigration = 0910; ProvisioningStyle = Automatic; }; B9C89ED61F6BF77E00087AF4 = { @@ -507,6 +498,7 @@ isa = PBXSourcesBuildPhase; buildActionMask = 2147483647; files = ( + B9F3269F1FC714DD003C3599 /* DarwinShims.swift in Sources */, ); runOnlyForDeploymentPostprocessing = 0; }; @@ -547,7 +539,7 @@ B9C89F511F6BF89C00087AF4 /* TestPropertyListSerialization.swift in Sources */, B9C89F531F6BF89C00087AF4 /* TestNSArray.swift in Sources */, B9C89F541F6BF89C00087AF4 /* TestFileHandle.swift in Sources */, - B9C0F82B1F8EADAF0047CC52 /* DarwinShims.swift in Sources */, + B9F326A01FC714DD003C3599 /* DarwinShims.swift in Sources */, B9C89F551F6BF89C00087AF4 /* TestTimer.swift in Sources */, B9C89F561F6BF89C00087AF4 /* TestTimeZone.swift in Sources */, B9C89F571F6BF89C00087AF4 /* TestNSNumber.swift in Sources */, diff --git a/DarwinShims.swift b/DarwinCompatibilityTests/DarwinShims.swift similarity index 100% rename from DarwinShims.swift rename to DarwinCompatibilityTests/DarwinShims.swift diff --git a/TestFoundation/TestCodable.swift b/TestFoundation/TestCodable.swift index 63d827183d..ce2480c5c3 100644 --- a/TestFoundation/TestCodable.swift +++ b/TestFoundation/TestCodable.swift @@ -561,6 +561,7 @@ class TestCodable : XCTestCase { ] func test_URLComponents_JSON() { +#if !DARWIN_COMPATIBILITY_TESTS // crashes on native Darwin for (components) in urlComponentsValues { do { try expectRoundTripEqualityThroughJSON(for: components) @@ -568,6 +569,7 @@ class TestCodable : XCTestCase { XCTFail("\(error)") } } +#endif } } diff --git a/TestFoundation/TestNSData.swift b/TestFoundation/TestNSData.swift index 221daa35e8..be708b881c 100644 --- a/TestFoundation/TestNSData.swift +++ b/TestFoundation/TestNSData.swift @@ -3999,8 +3999,9 @@ extension TestNSData { } XCTAssertEqual(data[data.startIndex.advanced(by: 1)], 0xFF) } - + func test_validateMutation_slice_mutableBacking_withUnsafeMutableBytes_lengthLessThanLowerBound() { +#if !DARWIN_COMPATIBILITY_TESTS // Crashes on native Darwin var base = Data(referencing: NSData(bytes: "hello world", length: 11)) base.append(contentsOf: [1, 2, 3, 4, 5, 6]) var data = base[4..<6] @@ -4008,8 +4009,9 @@ extension TestNSData { ptr.advanced(by: 1).pointee = 0xFF } XCTAssertEqual(data[data.startIndex.advanced(by: 1)], 0xFF) +#endif } - + func test_validateMutation_slice_customBacking_withUnsafeMutableBytes_lengthLessThanLowerBound() { var data = Data(referencing: AllOnesImmutableData(length: 10))[4..<6] data.withUnsafeMutableBytes { (ptr: UnsafeMutablePointer) in @@ -4017,8 +4019,9 @@ extension TestNSData { } XCTAssertEqual(data[data.startIndex.advanced(by: 1)], 0xFF) } - + func test_validateMutation_slice_customMutableBacking_withUnsafeMutableBytes_lengthLessThanLowerBound() { +#if !DARWIN_COMPATIBILITY_TESTS // Crashes on native Darwin var base = Data(referencing: AllOnesData(length: 1)) base.count = 10 var data = base[4..<6] @@ -4026,6 +4029,7 @@ extension TestNSData { ptr.advanced(by: 1).pointee = 0xFF } XCTAssertEqual(data[data.startIndex.advanced(by: 1)], 0xFF) +#endif } } diff --git a/TestFoundation/TestNSKeyedArchiver.swift b/TestFoundation/TestNSKeyedArchiver.swift index f05e0b93da..8020dffc4c 100644 --- a/TestFoundation/TestNSKeyedArchiver.swift +++ b/TestFoundation/TestNSKeyedArchiver.swift @@ -286,7 +286,7 @@ class TestNSKeyedArchiver : XCTestCase { let s1 = String(cString: charPtr) let s2 = String(cString: expectedCharPtr!) -#if !DARWIN_COMPATIBILITY_TESTS +#if !DEPLOYMENT_RUNTIME_OBJC // On Darwin decoded strings would belong to the autorelease pool, but as we don't have // one in SwiftFoundation let's explicitly deallocate it here. expectedCharPtr!.deallocate()