From c87f8f1e0fabce11fa096d3eca1eec8a73378324 Mon Sep 17 00:00:00 2001 From: Ben Kempner Date: Thu, 16 Apr 2020 10:12:30 -0500 Subject: [PATCH 1/5] update to swift 5, update quick and nimble to latest versions --- Cartfile.private | 4 +- Cartfile.resolved | 4 +- Carthage/Checkouts/Nimble | 2 +- Carthage/Checkouts/Quick | 2 +- Dobby.xcodeproj/project.pbxproj | 38 +++++++--- .../xcshareddata/xcschemes/Dobby-iOS.xcscheme | 24 +++---- .../xcschemes/Dobby-macOS.xcscheme | 24 +++---- .../xcshareddata/IDEWorkspaceChecks.plist | 8 +++ Dobby/Matcher.swift | 4 +- Dobby/Stub.swift | 2 +- DobbyTests/MatcherSpec.swift | 72 +++++++++---------- 11 files changed, 101 insertions(+), 83 deletions(-) create mode 100644 Dobby.xcworkspace/xcshareddata/IDEWorkspaceChecks.plist diff --git a/Cartfile.private b/Cartfile.private index 35090d1..2caa743 100644 --- a/Cartfile.private +++ b/Cartfile.private @@ -1,3 +1,3 @@ github "jspahrsummers/xcconfigs" ~> 0.10 -github "Quick/Quick" ~> 0.10 -github "Quick/Nimble" ~> 5.0 +github "Quick/Quick" ~> 2.2 +github "Quick/Nimble" ~> 8.0 diff --git a/Cartfile.resolved b/Cartfile.resolved index 61caa92..b3f5166 100644 --- a/Cartfile.resolved +++ b/Cartfile.resolved @@ -1,3 +1,3 @@ -github "Quick/Nimble" "v5.0.0" -github "Quick/Quick" "v0.10.0" +github "Quick/Nimble" "v8.0.7" +github "Quick/Quick" "v2.2.0" github "jspahrsummers/xcconfigs" "0.10" diff --git a/Carthage/Checkouts/Nimble b/Carthage/Checkouts/Nimble index 0209419..7fd118e 160000 --- a/Carthage/Checkouts/Nimble +++ b/Carthage/Checkouts/Nimble @@ -1 +1 @@ -Subproject commit 0209419661b6acceff45cd63984596f2e9eea517 +Subproject commit 7fd118ec8795888bcbbebc1a41f6984454c4cd6f diff --git a/Carthage/Checkouts/Quick b/Carthage/Checkouts/Quick index b441ba9..33682c2 160000 --- a/Carthage/Checkouts/Quick +++ b/Carthage/Checkouts/Quick @@ -1 +1 @@ -Subproject commit b441ba9d4abdc87fc153c55de947834b737bbe04 +Subproject commit 33682c2f6230c60614861dfc61df267e11a1602f diff --git a/Dobby.xcodeproj/project.pbxproj b/Dobby.xcodeproj/project.pbxproj index 71e4cdc..ea8d442 100644 --- a/Dobby.xcodeproj/project.pbxproj +++ b/Dobby.xcodeproj/project.pbxproj @@ -415,16 +415,16 @@ isa = PBXProject; attributes = { LastSwiftUpdateCheck = 0700; - LastUpgradeCheck = 0800; + LastUpgradeCheck = 1130; ORGANIZATIONNAME = "trivago GmbH"; TargetAttributes = { DC7F6AF71AD8291800CCBF6D = { CreatedOnToolsVersion = 6.3; - LastSwiftMigration = 0800; + LastSwiftMigration = 1130; }; DC7F6B021AD8291800CCBF6D = { CreatedOnToolsVersion = 6.3; - LastSwiftMigration = 0800; + LastSwiftMigration = 1130; }; DC8452171ADBF5CC006AC5D4 = { CreatedOnToolsVersion = 6.3; @@ -438,10 +438,11 @@ }; buildConfigurationList = DC7F6AF21AD8291800CCBF6D /* Build configuration list for PBXProject "Dobby" */; compatibilityVersion = "Xcode 3.2"; - developmentRegion = English; + developmentRegion = en; hasScannedForEncodings = 0; knownRegions = ( en, + Base, ); mainGroup = DC7F6AEE1AD8291800CCBF6D; productRefGroup = DC7F6AF91AD8291800CCBF6D /* Products */; @@ -552,12 +553,18 @@ isa = XCBuildConfiguration; baseConfigurationReference = DCDDA8ED1BED4A7600BB5228 /* Debug.xcconfig */; buildSettings = { + CLANG_ANALYZER_LOCALIZABILITY_NONLOCALIZED = YES; + CLANG_WARN_BLOCK_CAPTURE_AUTORELEASING = YES; + CLANG_WARN_COMMA = YES; + CLANG_WARN_RANGE_LOOP_ANALYSIS = YES; + CLANG_WARN_STRICT_PROTOTYPES = YES; CURRENT_PROJECT_VERSION = 1; ENABLE_TESTABILITY = YES; IPHONEOS_DEPLOYMENT_TARGET = 8.0; MACOSX_DEPLOYMENT_TARGET = 10.9; PRODUCT_BUNDLE_IDENTIFIER = "com.trivago.$(PRODUCT_NAME:rfc1034identifier)"; PRODUCT_NAME = "$(PROJECT_NAME)"; + SWIFT_SWIFT3_OBJC_INFERENCE = Default; TARGETED_DEVICE_FAMILY = "1,2"; VERSIONING_SYSTEM = "apple-generic"; VERSION_INFO_PREFIX = ""; @@ -568,11 +575,18 @@ isa = XCBuildConfiguration; baseConfigurationReference = DCDDA8EF1BED4A7600BB5228 /* Release.xcconfig */; buildSettings = { + CLANG_ANALYZER_LOCALIZABILITY_NONLOCALIZED = YES; + CLANG_WARN_BLOCK_CAPTURE_AUTORELEASING = YES; + CLANG_WARN_COMMA = YES; + CLANG_WARN_RANGE_LOOP_ANALYSIS = YES; + CLANG_WARN_STRICT_PROTOTYPES = YES; CURRENT_PROJECT_VERSION = 1; IPHONEOS_DEPLOYMENT_TARGET = 8.0; MACOSX_DEPLOYMENT_TARGET = 10.9; PRODUCT_BUNDLE_IDENTIFIER = "com.trivago.$(PRODUCT_NAME:rfc1034identifier)"; PRODUCT_NAME = "$(PROJECT_NAME)"; + SWIFT_COMPILATION_MODE = wholemodule; + SWIFT_SWIFT3_OBJC_INFERENCE = Default; TARGETED_DEVICE_FAMILY = "1,2"; VERSIONING_SYSTEM = "apple-generic"; VERSION_INFO_PREFIX = ""; @@ -592,7 +606,8 @@ ); INFOPLIST_FILE = Dobby/Info.plist; LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/Frameworks @loader_path/Frameworks"; - SWIFT_VERSION = 3.0; + SWIFT_SWIFT3_OBJC_INFERENCE = Default; + SWIFT_VERSION = 5.0; }; name = Debug; }; @@ -609,7 +624,8 @@ ); INFOPLIST_FILE = Dobby/Info.plist; LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/Frameworks @loader_path/Frameworks"; - SWIFT_VERSION = 3.0; + SWIFT_SWIFT3_OBJC_INFERENCE = Default; + SWIFT_VERSION = 5.0; }; name = Release; }; @@ -624,7 +640,8 @@ INFOPLIST_FILE = DobbyTests/Info.plist; LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/Frameworks @loader_path/Frameworks"; PRODUCT_NAME = "$(PROJECT_NAME)Tests"; - SWIFT_VERSION = 3.0; + SWIFT_SWIFT3_OBJC_INFERENCE = Default; + SWIFT_VERSION = 5.0; }; name = Debug; }; @@ -639,7 +656,8 @@ INFOPLIST_FILE = DobbyTests/Info.plist; LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/Frameworks @loader_path/Frameworks"; PRODUCT_NAME = "$(PROJECT_NAME)Tests"; - SWIFT_VERSION = 3.0; + SWIFT_SWIFT3_OBJC_INFERENCE = Default; + SWIFT_VERSION = 5.0; }; name = Release; }; @@ -657,7 +675,7 @@ FRAMEWORK_VERSION = A; INFOPLIST_FILE = Dobby/Info.plist; LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/../Frameworks @loader_path/Frameworks"; - SWIFT_VERSION = 3.0; + SWIFT_VERSION = 4.2; }; name = Debug; }; @@ -675,7 +693,7 @@ FRAMEWORK_VERSION = A; INFOPLIST_FILE = Dobby/Info.plist; LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/../Frameworks @loader_path/Frameworks"; - SWIFT_VERSION = 3.0; + SWIFT_VERSION = 4.2; }; name = Release; }; diff --git a/Dobby.xcodeproj/xcshareddata/xcschemes/Dobby-iOS.xcscheme b/Dobby.xcodeproj/xcshareddata/xcschemes/Dobby-iOS.xcscheme index 41463d6..e3f9716 100644 --- a/Dobby.xcodeproj/xcshareddata/xcschemes/Dobby-iOS.xcscheme +++ b/Dobby.xcodeproj/xcshareddata/xcschemes/Dobby-iOS.xcscheme @@ -1,6 +1,6 @@ + + + + @@ -82,17 +91,6 @@ - - - - - - - - + + + + @@ -82,17 +91,6 @@ - - - - - - - - + + + + IDEDidComputeMac32BitWarning + + + diff --git a/Dobby/Matcher.swift b/Dobby/Matcher.swift index 5cdc8bb..49654b2 100644 --- a/Dobby/Matcher.swift +++ b/Dobby/Matcher.swift @@ -22,7 +22,7 @@ public func matches(_ matches: @escaping (Value) -> Bool) -> Matcher(_ matcher: M) -> Matcher { public extension Matcher where Value: Equatable { /// Initializes a new matcher that matches the given value. - public init(value: Value) { + init(value: Value) { self.init(description: "\(value)") { actualValue in return value == actualValue } diff --git a/Dobby/Stub.swift b/Dobby/Stub.swift index f3639d1..e73fd36 100644 --- a/Dobby/Stub.swift +++ b/Dobby/Stub.swift @@ -47,7 +47,7 @@ public final class Stub { behaviors.append((identifier: identifier, behavior: behavior)) return Disposable { [weak self] in - let index = self?.behaviors.index { otherIdentifier, _ in + let index = self?.behaviors.firstIndex { otherIdentifier, _ in return otherIdentifier == identifier } diff --git a/DobbyTests/MatcherSpec.swift b/DobbyTests/MatcherSpec.swift index eb94fce..a1aec21 100644 --- a/DobbyTests/MatcherSpec.swift +++ b/DobbyTests/MatcherSpec.swift @@ -80,12 +80,12 @@ class MatcherSpec: QuickSpec { let matcher: Dobby.Matcher<(Int, Int)> = equals((0, 1)) it("succeeds if all actual values equal the expected values") { - expect(matcher.matches(0, 1)).to(beTrue()) + expect(matcher.matches((0, 1))).to(beTrue()) } it("fails if any actual value does not equal the expected value") { - expect(matcher.matches(1, 1)).to(beFalse()) - expect(matcher.matches(0, 0)).to(beFalse()) + expect(matcher.matches((1, 1))).to(beFalse()) + expect(matcher.matches((0, 0))).to(beFalse()) } } @@ -93,13 +93,13 @@ class MatcherSpec: QuickSpec { let matcher: Dobby.Matcher<(Int, Int, Int)> = equals((0, 1, 2)) it("succeeds if all actual values equal the expected values") { - expect(matcher.matches(0, 1, 2)).to(beTrue()) + expect(matcher.matches((0, 1, 2))).to(beTrue()) } it("fails if any actual value does not equal the expected value") { - expect(matcher.matches(1, 1, 2)).to(beFalse()) - expect(matcher.matches(0, 0, 2)).to(beFalse()) - expect(matcher.matches(0, 1, 1)).to(beFalse()) + expect(matcher.matches((1, 1, 2))).to(beFalse()) + expect(matcher.matches((0, 0, 2))).to(beFalse()) + expect(matcher.matches((0, 1, 1))).to(beFalse()) } } @@ -107,14 +107,14 @@ class MatcherSpec: QuickSpec { let matcher: Dobby.Matcher<(Int, Int, Int, Int)> = equals((0, 1, 2, 3)) it("succeeds if all actual values equal the expected values") { - expect(matcher.matches(0, 1, 2, 3)).to(beTrue()) + expect(matcher.matches((0, 1, 2, 3))).to(beTrue()) } it("fails if any actual value does not equal the expected value") { - expect(matcher.matches(1, 1, 2, 3)).to(beFalse()) - expect(matcher.matches(0, 0, 2, 3)).to(beFalse()) - expect(matcher.matches(0, 1, 1, 3)).to(beFalse()) - expect(matcher.matches(0, 1, 2, 2)).to(beFalse()) + expect(matcher.matches((1, 1, 2, 3))).to(beFalse()) + expect(matcher.matches((0, 0, 2, 3))).to(beFalse()) + expect(matcher.matches((0, 1, 1, 3))).to(beFalse()) + expect(matcher.matches((0, 1, 2, 2))).to(beFalse()) } } @@ -122,15 +122,15 @@ class MatcherSpec: QuickSpec { let matcher: Dobby.Matcher<(Int, Int, Int, Int, Int)> = equals((0, 1, 2, 3, 4)) it("succeeds if all actual values equal the expected values") { - expect(matcher.matches(0, 1, 2, 3, 4)).to(beTrue()) + expect(matcher.matches((0, 1, 2, 3, 4))).to(beTrue()) } it("fails if any actual value does not equal the expected value") { - expect(matcher.matches(1, 1, 2, 3, 4)).to(beFalse()) - expect(matcher.matches(0, 0, 2, 3, 4)).to(beFalse()) - expect(matcher.matches(0, 1, 1, 3, 4)).to(beFalse()) - expect(matcher.matches(0, 1, 2, 2, 4)).to(beFalse()) - expect(matcher.matches(0, 1, 2, 3, 3)).to(beFalse()) + expect(matcher.matches((1, 1, 2, 3, 4))).to(beFalse()) + expect(matcher.matches((0, 0, 2, 3, 4))).to(beFalse()) + expect(matcher.matches((0, 1, 1, 3, 4))).to(beFalse()) + expect(matcher.matches((0, 1, 2, 2, 4))).to(beFalse()) + expect(matcher.matches((0, 1, 2, 3, 3))).to(beFalse()) } } @@ -176,12 +176,12 @@ class MatcherSpec: QuickSpec { let matcher: Dobby.Matcher<(Int, Int)> = matches((equals(0), equals(1))) it("succeeds if all actual values equal the expected values") { - expect(matcher.matches(0, 1)).to(beTrue()) + expect(matcher.matches((0, 1))).to(beTrue()) } it("fails if any actual value does not equal the expected value") { - expect(matcher.matches(1, 1)).to(beFalse()) - expect(matcher.matches(0, 0)).to(beFalse()) + expect(matcher.matches((1, 1))).to(beFalse()) + expect(matcher.matches((0, 0))).to(beFalse()) } } @@ -189,13 +189,13 @@ class MatcherSpec: QuickSpec { let matcher: Dobby.Matcher<(Int, Int, Int)> = matches((equals(0), equals(1), equals(2))) it("succeeds if all actual values equal the expected values") { - expect(matcher.matches(0, 1, 2)).to(beTrue()) + expect(matcher.matches((0, 1, 2))).to(beTrue()) } it("fails if any actual value does not equal the expected value") { - expect(matcher.matches(1, 1, 2)).to(beFalse()) - expect(matcher.matches(0, 0, 2)).to(beFalse()) - expect(matcher.matches(0, 1, 1)).to(beFalse()) + expect(matcher.matches((1, 1, 2))).to(beFalse()) + expect(matcher.matches((0, 0, 2))).to(beFalse()) + expect(matcher.matches((0, 1, 1))).to(beFalse()) } } @@ -203,14 +203,14 @@ class MatcherSpec: QuickSpec { let matcher: Dobby.Matcher<(Int, Int, Int, Int)> = matches((equals(0), equals(1), equals(2), equals(3))) it("succeeds if all actual values equal the expected values") { - expect(matcher.matches(0, 1, 2, 3)).to(beTrue()) + expect(matcher.matches((0, 1, 2, 3))).to(beTrue()) } it("fails if any actual value does not equal the expected value") { - expect(matcher.matches(1, 1, 2, 3)).to(beFalse()) - expect(matcher.matches(0, 0, 2, 3)).to(beFalse()) - expect(matcher.matches(0, 1, 1, 3)).to(beFalse()) - expect(matcher.matches(0, 1, 2, 2)).to(beFalse()) + expect(matcher.matches((1, 1, 2, 3))).to(beFalse()) + expect(matcher.matches((0, 0, 2, 3))).to(beFalse()) + expect(matcher.matches((0, 1, 1, 3))).to(beFalse()) + expect(matcher.matches((0, 1, 2, 2))).to(beFalse()) } } @@ -218,15 +218,15 @@ class MatcherSpec: QuickSpec { let matcher: Dobby.Matcher<(Int, Int, Int, Int, Int)> = matches((equals(0), equals(1), equals(2), equals(3), equals(4))) it("succeeds if all actual values equal the expected values") { - expect(matcher.matches(0, 1, 2, 3, 4)).to(beTrue()) + expect(matcher.matches((0, 1, 2, 3, 4))).to(beTrue()) } it("fails if any actual value does not equal the expected value") { - expect(matcher.matches(1, 1, 2, 3, 4)).to(beFalse()) - expect(matcher.matches(0, 0, 2, 3, 4)).to(beFalse()) - expect(matcher.matches(0, 1, 1, 3, 4)).to(beFalse()) - expect(matcher.matches(0, 1, 2, 2, 4)).to(beFalse()) - expect(matcher.matches(0, 1, 2, 3, 3)).to(beFalse()) + expect(matcher.matches((1, 1, 2, 3, 4))).to(beFalse()) + expect(matcher.matches((0, 0, 2, 3, 4))).to(beFalse()) + expect(matcher.matches((0, 1, 1, 3, 4))).to(beFalse()) + expect(matcher.matches((0, 1, 2, 2, 4))).to(beFalse()) + expect(matcher.matches((0, 1, 2, 3, 3))).to(beFalse()) } } From 6d3950c37373f16d2f2fe5e23f617b8502bfe37e Mon Sep 17 00:00:00 2001 From: Ben Kempner Date: Sat, 18 Apr 2020 12:28:56 -0500 Subject: [PATCH 2/5] add swift package manager support --- Dobby.xcodeproj/project.pbxproj | 4 ++++ Package.swift | 17 +++++++++++++++++ 2 files changed, 21 insertions(+) create mode 100644 Package.swift diff --git a/Dobby.xcodeproj/project.pbxproj b/Dobby.xcodeproj/project.pbxproj index ea8d442..51b9d24 100644 --- a/Dobby.xcodeproj/project.pbxproj +++ b/Dobby.xcodeproj/project.pbxproj @@ -7,6 +7,7 @@ objects = { /* Begin PBXBuildFile section */ + 5C66EBDE244B6F4B0049DC42 /* Package.swift in Sources */ = {isa = PBXBuildFile; fileRef = 5C66EBDD244B6F4B0049DC42 /* Package.swift */; }; DC18FB9C1BF0948900768632 /* Dobby.framework in Copy Frameworks */ = {isa = PBXBuildFile; fileRef = DC7F6AF81AD8291800CCBF6D /* Dobby.framework */; settings = {ATTRIBUTES = (CodeSignOnCopy, RemoveHeadersOnCopy, ); }; }; DC3CFE781ADE895E004728C2 /* SwiftExtensions.swift in Sources */ = {isa = PBXBuildFile; fileRef = DC3CFE771ADE895E004728C2 /* SwiftExtensions.swift */; }; DC3CFE791ADE895E004728C2 /* SwiftExtensions.swift in Sources */ = {isa = PBXBuildFile; fileRef = DC3CFE771ADE895E004728C2 /* SwiftExtensions.swift */; }; @@ -70,6 +71,7 @@ /* End PBXCopyFilesBuildPhase section */ /* Begin PBXFileReference section */ + 5C66EBDD244B6F4B0049DC42 /* Package.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = Package.swift; sourceTree = ""; }; DC3CFE771ADE895E004728C2 /* SwiftExtensions.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = SwiftExtensions.swift; sourceTree = ""; }; DC457AD81B5552CA00919032 /* Matcher.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = Matcher.swift; sourceTree = ""; }; DC7F6AF81AD8291800CCBF6D /* Dobby.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; includeInIndex = 0; path = Dobby.framework; sourceTree = BUILT_PRODUCTS_DIR; }; @@ -163,6 +165,7 @@ DC7F6AEE1AD8291800CCBF6D = { isa = PBXGroup; children = ( + 5C66EBDD244B6F4B0049DC42 /* Package.swift */, DC7F6AFA1AD8291800CCBF6D /* Dobby */, DC7F6B071AD8291800CCBF6D /* DobbyTests */, DCDDA8E81BED4A7600BB5228 /* Configuration */, @@ -515,6 +518,7 @@ isa = PBXSourcesBuildPhase; buildActionMask = 2147483647; files = ( + 5C66EBDE244B6F4B0049DC42 /* Package.swift in Sources */, DC457ADA1B5552CA00919032 /* Matcher.swift in Sources */, DC3CFE791ADE895E004728C2 /* SwiftExtensions.swift in Sources */, DC83356D1B56661900569709 /* Disposable.swift in Sources */, diff --git a/Package.swift b/Package.swift new file mode 100644 index 0000000..fd5322e --- /dev/null +++ b/Package.swift @@ -0,0 +1,17 @@ +// swift-tools-version:5.0 + +import PackageDescription + +let package = Package( + name: "Dobby", + products: [ + .library(name: "Dobby", targets: ["Dobby"]) + ], + targets: [ + .target(name: "Dobby", path: "./Dobby"), + .testTarget(name: "DobbyTests", dependencies: ["Dobby"], path: "./DobbyTests") + ], + swiftLanguageVersions: [ + .v5 + ] +) From 18940c3608a1017f2938fc244137dde874b30c04 Mon Sep 17 00:00:00 2001 From: Ben Kempner Date: Sun, 19 Apr 2020 03:34:05 -0500 Subject: [PATCH 3/5] add support for matches with single value arg --- Dobby/Matcher.swift | 7 +++++++ 1 file changed, 7 insertions(+) diff --git a/Dobby/Matcher.swift b/Dobby/Matcher.swift index 49654b2..aed1712 100644 --- a/Dobby/Matcher.swift +++ b/Dobby/Matcher.swift @@ -148,6 +148,13 @@ extension Matcher: MatcherConvertible { } } +/// Returns a new matcher that matches the given value. +public func matches(_ value: Value) -> Matcher { + return Matcher(description: "\(value)") { actualValue in + return value.matcher().matches(actualValue) + } +} + /// Returns a new matcher that matches the given 2-tuple of matchers. public func matches(_ values: (A, B)) -> Matcher<(A.ValueType, B.ValueType)> { return Matcher(description: "\(values)") { actualValues in From 6f88d0cc777d6eaf0788ff6a10ddba1869e49654 Mon Sep 17 00:00:00 2001 From: Ben Kempner Date: Sun, 19 Apr 2020 13:42:09 -0500 Subject: [PATCH 4/5] add documentation about making custom types matchable --- README.md | 10 ++++++++++ 1 file changed, 10 insertions(+) diff --git a/README.md b/README.md index 78b70e2..d8faba5 100644 --- a/README.md +++ b/README.md @@ -21,6 +21,16 @@ equals([1, 2, 3]) // matches [1, 2, 3] equals([1: 1, 2: 2, 3: 3]) // matches [1: 1, 2: 2, 3: 3] ``` +You may also extend your custom types using an extension: (not your types must conform to equatable) + +``` +extension MyCustomType: MatcherConvertible { + public func matcher() -> Matcher { + return equals(self) + } +} +``` + Matchers may also be nested: ```swift From dad8338c059696a8d4cf131ce4eb1cdb822f4329 Mon Sep 17 00:00:00 2001 From: Ben Kempner Date: Sun, 19 Apr 2020 13:45:53 -0500 Subject: [PATCH 5/5] update podspec --- Dobby.podspec | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/Dobby.podspec b/Dobby.podspec index 9ca185b..3829660 100644 --- a/Dobby.podspec +++ b/Dobby.podspec @@ -17,10 +17,12 @@ Pod::Spec.new do |spec| spec.summary = 'Swift helpers for mocking and stubbing' spec.description = 'Dobby provides a few helpers for mocking and stubbing.' - spec.ios.deployment_target = '8.0' - spec.osx.deployment_target = '10.9' + spec.ios.deployment_target = '11.0' + spec.osx.deployment_target = '10.13' spec.frameworks = 'Foundation', 'XCTest' spec.source_files = 'Dobby/**/*.swift' + + s.swift_version = '5.0' end