Skip to content

Commit a56c183

Browse files
committed
Support Swift 4; Test all configurations
1 parent bf07108 commit a56c183

File tree

5 files changed

+78
-22
lines changed

5 files changed

+78
-22
lines changed

.travis.yml

+48-12
Original file line numberDiff line numberDiff line change
@@ -1,21 +1,57 @@
1+
os: osx
12
language: objective-c
2-
osx_image: xcode8.3
3-
env:
4-
- PLATFORM=Mac
5-
- PLATFORM=iOS NAME='iPhone SE'
6-
- PLATFORM=tvOS NAME='Apple TV 1080p'
3+
matrix:
4+
include:
5+
- osx_image: xcode8.2
6+
env: PLAT=macOS SWFT=3.0
7+
- osx_image: xcode8.2
8+
env: PLAT=iOS SWFT=3.0
9+
- osx_image: xcode8.2
10+
env: PLAT=tvOS SWFT=3.0
11+
- osx_image: xcode8.3
12+
env: PLAT=macOS SWFT=3.1
13+
- osx_image: xcode8.3
14+
env: PLAT=iOS SWFT=3.1
15+
- osx_image: xcode8.3
16+
env: PLAT=tvOS SWFT=3.1
17+
- osx_image: xcode9
18+
env: PLAT=macOS SWFT=3.2
19+
- osx_image: xcode9
20+
env: PLAT=iOS SWFT=3.2
21+
- osx_image: xcode9
22+
env: PLAT=tvOS SWFT=3.2
23+
- osx_image: xcode9
24+
env: PLAT=macOS SWFT=4.0
25+
- osx_image: xcode9
26+
env: PLAT=iOS SWFT=4.0
27+
- osx_image: xcode9
28+
env: PLAT=tvOS SWFT=4.0
729
before_install:
8-
- if [ -n "$NAME" ]; then
30+
- case $PLAT in
31+
iOS)
32+
NAME="iPhone SE";;
33+
tvOS)
34+
NAME="Apple TV 1080p";;
35+
esac;
36+
if [ -n "$NAME" ]; then
937
export UUID=$(instruments -s | ruby -e "ARGF.each_line{ |ln| ln =~ /$NAME .* \[(.*)\]/; if \$1; puts(\$1); exit; end }");
38+
export DESTINATION="id=$UUID";
1039
fi
1140
install:
12-
- carthage bootstrap --platform $PLATFORM
41+
- case $PLAT in
42+
macOS)
43+
carthage bootstrap --platform Mac;;
44+
tvOS|iOS)
45+
carthage bootstrap --platform $PLAT;;
46+
esac;
1347
script:
1448
- set -o pipefail;
15-
case $PLATFORM in
16-
Mac)
17-
xcodebuild -scheme PMKStoreKit test | xcpretty;;
49+
case $PLAT in
50+
macOS)
51+
xcodebuild -scheme PMKStoreKit -quiet build clean SWIFT_VERSION=$SWFT;
52+
xcodebuild -scheme PMKStoreKit -quiet test;;
1853
iOS|tvOS)
19-
open -a "simulator" --args -CurrentDeviceUDID "$UUID";
20-
xcodebuild -scheme PMKStoreKit -destination "id=$UUID" test | xcpretty;;
54+
open -b com.apple.iphonesimulator --args -CurrentDeviceUDID "$UUID";
55+
xcodebuild -scheme PMKStoreKit -quiet -destination "$DESTINATION" build clean SWIFT_VERSION=$SWFT;
56+
xcodebuild -scheme PMKStoreKit -quiet -destination "$DESTINATION" test;;
2157
esac

PMKStoreKit.xcodeproj/project.pbxproj

+21-9
Original file line numberDiff line numberDiff line change
@@ -94,19 +94,17 @@
9494
D3F6DBF21EA245750013E242 /* SKPayment+Promise.swift */,
9595
D3F6DBF41EA246340013E242 /* SKReceiptRefreshRequest+Promise.swift */,
9696
);
97-
name = Sources;
98-
path = "PMK+UIKit";
99-
sourceTree = "<group>";
97+
path = Sources;
98+
sourceTree = SOURCE_ROOT;
10099
};
101100
63C7FFF31D5C020D003BAE60 /* Tests */ = {
102101
isa = PBXGroup;
103102
children = (
104103
637B4A6F1D5D5FA400E1BC6C /* TestStoreKit.m */,
105104
637B4A701D5D5FA400E1BC6C /* TestStoreKit.swift */,
106105
);
107-
name = Tests;
108-
path = PMKTests/NS;
109-
sourceTree = "<group>";
106+
path = Tests;
107+
sourceTree = SOURCE_ROOT;
110108
};
111109
/* End PBXGroup section */
112110

@@ -165,17 +163,17 @@
165163
isa = PBXProject;
166164
attributes = {
167165
LastSwiftUpdateCheck = 0800;
168-
LastUpgradeCheck = 0800;
166+
LastUpgradeCheck = 0900;
169167
ORGANIZATIONNAME = "Max Howell";
170168
TargetAttributes = {
171169
63C7FFA61D5BEE09003BAE60 = {
172170
CreatedOnToolsVersion = 8.0;
173-
LastSwiftMigration = 0800;
171+
LastSwiftMigration = 0900;
174172
ProvisioningStyle = Automatic;
175173
};
176174
63C7FFF11D5C020D003BAE60 = {
177175
CreatedOnToolsVersion = 8.0;
178-
LastSwiftMigration = 0800;
176+
LastSwiftMigration = 0900;
179177
ProvisioningStyle = Automatic;
180178
};
181179
};
@@ -258,15 +256,22 @@
258256
CLANG_CXX_LIBRARY = "libc++";
259257
CLANG_ENABLE_MODULES = YES;
260258
CLANG_ENABLE_OBJC_ARC = YES;
259+
CLANG_WARN_BLOCK_CAPTURE_AUTORELEASING = YES;
261260
CLANG_WARN_BOOL_CONVERSION = YES;
261+
CLANG_WARN_COMMA = YES;
262262
CLANG_WARN_CONSTANT_CONVERSION = YES;
263263
CLANG_WARN_DIRECT_OBJC_ISA_USAGE = YES_ERROR;
264264
CLANG_WARN_DOCUMENTATION_COMMENTS = YES;
265265
CLANG_WARN_EMPTY_BODY = YES;
266266
CLANG_WARN_ENUM_CONVERSION = YES;
267267
CLANG_WARN_INFINITE_RECURSION = YES;
268268
CLANG_WARN_INT_CONVERSION = YES;
269+
CLANG_WARN_NON_LITERAL_NULL_CONVERSION = YES;
270+
CLANG_WARN_OBJC_LITERAL_CONVERSION = YES;
269271
CLANG_WARN_OBJC_ROOT_CLASS = YES_ERROR;
272+
CLANG_WARN_RANGE_LOOP_ANALYSIS = YES;
273+
CLANG_WARN_STRICT_PROTOTYPES = YES;
274+
CLANG_WARN_SUSPICIOUS_MOVE = YES;
270275
CLANG_WARN_SUSPICIOUS_MOVES = YES;
271276
CLANG_WARN_UNREACHABLE_CODE = YES;
272277
CLANG_WARN__DUPLICATE_METHOD_MATCH = YES;
@@ -316,15 +321,22 @@
316321
CLANG_CXX_LIBRARY = "libc++";
317322
CLANG_ENABLE_MODULES = YES;
318323
CLANG_ENABLE_OBJC_ARC = YES;
324+
CLANG_WARN_BLOCK_CAPTURE_AUTORELEASING = YES;
319325
CLANG_WARN_BOOL_CONVERSION = YES;
326+
CLANG_WARN_COMMA = YES;
320327
CLANG_WARN_CONSTANT_CONVERSION = YES;
321328
CLANG_WARN_DIRECT_OBJC_ISA_USAGE = YES_ERROR;
322329
CLANG_WARN_DOCUMENTATION_COMMENTS = YES;
323330
CLANG_WARN_EMPTY_BODY = YES;
324331
CLANG_WARN_ENUM_CONVERSION = YES;
325332
CLANG_WARN_INFINITE_RECURSION = YES;
326333
CLANG_WARN_INT_CONVERSION = YES;
334+
CLANG_WARN_NON_LITERAL_NULL_CONVERSION = YES;
335+
CLANG_WARN_OBJC_LITERAL_CONVERSION = YES;
327336
CLANG_WARN_OBJC_ROOT_CLASS = YES_ERROR;
337+
CLANG_WARN_RANGE_LOOP_ANALYSIS = YES;
338+
CLANG_WARN_STRICT_PROTOTYPES = YES;
339+
CLANG_WARN_SUSPICIOUS_MOVE = YES;
328340
CLANG_WARN_SUSPICIOUS_MOVES = YES;
329341
CLANG_WARN_UNREACHABLE_CODE = YES;
330342
CLANG_WARN__DUPLICATE_METHOD_MATCH = YES;

PMKStoreKit.xcodeproj/xcshareddata/xcschemes/PMKStoreKit.xcscheme

+3-1
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
<?xml version="1.0" encoding="UTF-8"?>
22
<Scheme
3-
LastUpgradeVersion = "0800"
3+
LastUpgradeVersion = "0900"
44
version = "1.3">
55
<BuildAction
66
parallelizeBuildables = "YES"
@@ -40,6 +40,7 @@
4040
buildConfiguration = "Debug"
4141
selectedDebuggerIdentifier = "Xcode.DebuggerFoundation.Debugger.LLDB"
4242
selectedLauncherIdentifier = "Xcode.DebuggerFoundation.Launcher.LLDB"
43+
language = ""
4344
shouldUseLaunchSchemeArgsEnv = "YES">
4445
<Testables>
4546
<TestableReference
@@ -69,6 +70,7 @@
6970
buildConfiguration = "Debug"
7071
selectedDebuggerIdentifier = "Xcode.DebuggerFoundation.Debugger.LLDB"
7172
selectedLauncherIdentifier = "Xcode.DebuggerFoundation.Launcher.LLDB"
73+
language = ""
7274
launchStyle = "0"
7375
useCustomWorkingDirectory = "NO"
7476
ignoresPersistentStateOnLaunch = "NO"

Sources/SKProductsRequest+Promise.swift

+3
Original file line numberDiff line numberDiff line change
@@ -43,7 +43,10 @@ fileprivate class SKDelegate: NSObject, SKProductsRequestDelegate {
4343
retainCycle = nil
4444
}
4545

46+
#if swift(>=3.2)
47+
#else
4648
@objc override class func initialize() {
4749
NSError.registerCancelledErrorDomain(SKErrorDomain, code: SKError.Code.paymentCancelled.rawValue)
4850
}
51+
#endif
4952
}

Tests/TestStoreKit.swift

+3
Original file line numberDiff line numberDiff line change
@@ -20,6 +20,8 @@ class SKProductsRequestTests: XCTestCase {
2020
waitForExpectations(timeout: 1, handler: nil)
2121
}
2222

23+
#if swift(>=3.2)
24+
#else
2325
func testCancellation() {
2426
class MockProductsRequest: SKProductsRequest {
2527
override func start() {
@@ -37,4 +39,5 @@ class SKProductsRequestTests: XCTestCase {
3739
}
3840
waitForExpectations(timeout: 1, handler: nil)
3941
}
42+
#endif
4043
}

0 commit comments

Comments
 (0)