From e31a39a241ffca3a85a78e847c684864024ea6db Mon Sep 17 00:00:00 2001 From: Lionel Alves Date: Wed, 6 Jul 2016 16:30:12 -0400 Subject: [PATCH 1/4] Migrate to Swift 2.3 --- .travis.yml | 5 ++++- DVR.xcodeproj/project.pbxproj | 10 ++++++++++ DVR/Tests/SessionUploadTests.swift | 5 ++++- 3 files changed, 18 insertions(+), 2 deletions(-) diff --git a/.travis.yml b/.travis.yml index 3ff8969..ac4765b 100644 --- a/.travis.yml +++ b/.travis.yml @@ -1,5 +1,5 @@ language: objective-c # lol -osx_image: xcode7.3 +osx_image: xcode8 xcode_project: DVR.xcodeproj matrix: @@ -8,3 +8,6 @@ matrix: xcode_sdk: iphonesimulator - xcode_scheme: DVR-OSX xcode_sdk: macosx + +env: + TOOLCHAINS=com.apple.dt.toolchain.Swift_2_3 diff --git a/DVR.xcodeproj/project.pbxproj b/DVR.xcodeproj/project.pbxproj index e0fddb8..c6865bd 100644 --- a/DVR.xcodeproj/project.pbxproj +++ b/DVR.xcodeproj/project.pbxproj @@ -306,9 +306,11 @@ TargetAttributes = { 3647AF9A1B335D5500EF10D4 = { CreatedOnToolsVersion = 7.0; + LastSwiftMigration = 0800; }; 3647AFA41B335D5500EF10D4 = { CreatedOnToolsVersion = 7.0; + LastSwiftMigration = 0800; }; 3690A07A1B33AA3B00731222 = { CreatedOnToolsVersion = 7.0; @@ -558,6 +560,7 @@ PRODUCT_BUNDLE_IDENTIFIER = com.venmo.DVR; PRODUCT_NAME = DVR; SKIP_INSTALL = YES; + SWIFT_VERSION = 2.3; }; name = Debug; }; @@ -575,6 +578,7 @@ PRODUCT_BUNDLE_IDENTIFIER = com.venmo.DVR; PRODUCT_NAME = DVR; SKIP_INSTALL = YES; + SWIFT_VERSION = 2.3; }; name = Release; }; @@ -586,6 +590,7 @@ LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/Frameworks @loader_path/Frameworks"; PRODUCT_BUNDLE_IDENTIFIER = com.venmo.DVR.iostests; PRODUCT_NAME = "$(TARGET_NAME)"; + SWIFT_VERSION = 2.3; }; name = Debug; }; @@ -597,6 +602,7 @@ LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/Frameworks @loader_path/Frameworks"; PRODUCT_BUNDLE_IDENTIFIER = com.venmo.DVR.iostests; PRODUCT_NAME = "$(TARGET_NAME)"; + SWIFT_VERSION = 2.3; }; name = Release; }; @@ -616,6 +622,7 @@ PRODUCT_NAME = DVR; SDKROOT = macosx; SKIP_INSTALL = YES; + SWIFT_VERSION = 2.3; }; name = Debug; }; @@ -635,6 +642,7 @@ PRODUCT_NAME = DVR; SDKROOT = macosx; SKIP_INSTALL = YES; + SWIFT_VERSION = 2.3; }; name = Release; }; @@ -648,6 +656,7 @@ PRODUCT_BUNDLE_IDENTIFIER = com.venmo.DVR.osxtests; PRODUCT_NAME = "$(TARGET_NAME)"; SDKROOT = macosx; + SWIFT_VERSION = 2.3; }; name = Debug; }; @@ -661,6 +670,7 @@ PRODUCT_BUNDLE_IDENTIFIER = com.venmo.DVR.osxtests; PRODUCT_NAME = "$(TARGET_NAME)"; SDKROOT = macosx; + SWIFT_VERSION = 2.3; }; name = Release; }; diff --git a/DVR/Tests/SessionUploadTests.swift b/DVR/Tests/SessionUploadTests.swift index f3009e8..99b841c 100644 --- a/DVR/Tests/SessionUploadTests.swift +++ b/DVR/Tests/SessionUploadTests.swift @@ -88,7 +88,10 @@ class SessionUploadTests: XCTestCase { let documentsPath = NSSearchPathForDirectoriesInDomains(.DocumentDirectory, .UserDomainMask, true)[0] let documentsURL = NSURL(fileURLWithPath: documentsPath, isDirectory: true) - let url = documentsURL.URLByAppendingPathComponent(fileName + ".tmp") + guard let url = documentsURL.URLByAppendingPathComponent(fileName + ".tmp") else { + XCTFail("Failed to write to file") + fatalError() + } data.writeToURL(url, atomically: true) return url From 2c2f86f55c09cbe2c36d50fc7d6d92f65bbb9ddf Mon Sep 17 00:00:00 2001 From: Mark Adams Date: Mon, 12 Sep 2016 11:38:53 -0700 Subject: [PATCH 2/4] Use xcodebuild instead of xctool --- .travis.yml | 2 ++ 1 file changed, 2 insertions(+) diff --git a/.travis.yml b/.travis.yml index ac4765b..2284728 100644 --- a/.travis.yml +++ b/.travis.yml @@ -2,6 +2,8 @@ language: objective-c # lol osx_image: xcode8 xcode_project: DVR.xcodeproj +script: xcodebuild -scheme "$TRAVIS_XCODE_SCHEME" test + matrix: include: - xcode_scheme: DVR-iOS From df70125e0a1495b4b0c2665789a3ba7728aa4bd2 Mon Sep 17 00:00:00 2001 From: Mark Adams Date: Mon, 12 Sep 2016 11:44:19 -0700 Subject: [PATCH 3/4] Update to recommended build settings --- DVR.xcodeproj/project.pbxproj | 10 ++++++++-- DVR.xcodeproj/xcshareddata/xcschemes/DVR-OSX.xcscheme | 10 +++++----- DVR.xcodeproj/xcshareddata/xcschemes/DVR-iOS.xcscheme | 10 +++++----- 3 files changed, 18 insertions(+), 12 deletions(-) diff --git a/DVR.xcodeproj/project.pbxproj b/DVR.xcodeproj/project.pbxproj index c6865bd..d80fe53 100644 --- a/DVR.xcodeproj/project.pbxproj +++ b/DVR.xcodeproj/project.pbxproj @@ -301,7 +301,7 @@ isa = PBXProject; attributes = { LastSwiftUpdateCheck = 0700; - LastUpgradeCheck = 0700; + LastUpgradeCheck = 0800; ORGANIZATIONNAME = Venmo; TargetAttributes = { 3647AF9A1B335D5500EF10D4 = { @@ -466,8 +466,10 @@ CLANG_WARN_DIRECT_OBJC_ISA_USAGE = YES_ERROR; CLANG_WARN_EMPTY_BODY = YES; CLANG_WARN_ENUM_CONVERSION = YES; + CLANG_WARN_INFINITE_RECURSION = YES; CLANG_WARN_INT_CONVERSION = YES; CLANG_WARN_OBJC_ROOT_CLASS = YES_ERROR; + CLANG_WARN_SUSPICIOUS_MOVE = YES; CLANG_WARN_UNREACHABLE_CODE = YES; CLANG_WARN__DUPLICATE_METHOD_MATCH = YES; "CODE_SIGN_IDENTITY[sdk=iphoneos*]" = "iPhone Developer"; @@ -516,8 +518,10 @@ CLANG_WARN_DIRECT_OBJC_ISA_USAGE = YES_ERROR; CLANG_WARN_EMPTY_BODY = YES; CLANG_WARN_ENUM_CONVERSION = YES; + CLANG_WARN_INFINITE_RECURSION = YES; CLANG_WARN_INT_CONVERSION = YES; CLANG_WARN_OBJC_ROOT_CLASS = YES_ERROR; + CLANG_WARN_SUSPICIOUS_MOVE = YES; CLANG_WARN_UNREACHABLE_CODE = YES; CLANG_WARN__DUPLICATE_METHOD_MATCH = YES; "CODE_SIGN_IDENTITY[sdk=iphoneos*]" = "iPhone Developer"; @@ -538,7 +542,7 @@ MACOSX_DEPLOYMENT_TARGET = 10.9; MTL_ENABLE_DEBUG_INFO = NO; SDKROOT = iphoneos; - SWIFT_OPTIMIZATION_LEVEL = "-Onone"; + SWIFT_OPTIMIZATION_LEVEL = "-Owholemodule"; TARGETED_DEVICE_FAMILY = "1,2"; VALIDATE_PRODUCT = YES; VERSIONING_SYSTEM = "apple-generic"; @@ -550,6 +554,7 @@ isa = XCBuildConfiguration; buildSettings = { CLANG_ENABLE_MODULES = YES; + "CODE_SIGN_IDENTITY[sdk=iphoneos*]" = ""; DEFINES_MODULE = YES; DYLIB_COMPATIBILITY_VERSION = 1; DYLIB_CURRENT_VERSION = 1; @@ -568,6 +573,7 @@ isa = XCBuildConfiguration; buildSettings = { CLANG_ENABLE_MODULES = YES; + "CODE_SIGN_IDENTITY[sdk=iphoneos*]" = ""; DEFINES_MODULE = YES; DYLIB_COMPATIBILITY_VERSION = 1; DYLIB_CURRENT_VERSION = 1; diff --git a/DVR.xcodeproj/xcshareddata/xcschemes/DVR-OSX.xcscheme b/DVR.xcodeproj/xcshareddata/xcschemes/DVR-OSX.xcscheme index 15505b8..1a99cd1 100644 --- a/DVR.xcodeproj/xcshareddata/xcschemes/DVR-OSX.xcscheme +++ b/DVR.xcodeproj/xcshareddata/xcschemes/DVR-OSX.xcscheme @@ -1,6 +1,6 @@ + shouldUseLaunchSchemeArgsEnv = "YES"> @@ -52,11 +52,11 @@ + codeCoverageEnabled = "YES"> @@ -53,11 +53,11 @@ Date: Mon, 12 Sep 2016 12:11:00 -0700 Subject: [PATCH 4/4] Add Swift version compatibility table --- Readme.markdown | 8 ++++++-- 1 file changed, 6 insertions(+), 2 deletions(-) diff --git a/Readme.markdown b/Readme.markdown index c343ef7..6538873 100644 --- a/Readme.markdown +++ b/Readme.markdown @@ -8,9 +8,13 @@ watchOS, and OS X based on [VCR](https://github.com/vcr/vcr). Easy [dependency injection](https://en.wikipedia.org/wiki/Dependency_injection) is the main design goal. The API is the same as `NSURLSession`. `DVR.Session` is a subclass of `NSURLSession` so you can use it as a drop in replacement anywhere. (Currently only data tasks are supported.) -## Building +## Version Compatibility -DVR 0.3.0 requires Swift 2.2. For older versions of Swift, please use 0.2.x. +| Swift Version | DVR Version | +| ------------- | ----------- | +| 2.3 | 0.4 | +| 2.2 | 0.3 | +| < 2.2 | 0.2.1 | ## Usage