Skip to content

Commit f9b4754

Browse files
authored
Tolerate Swift 5.1 (#44)
1 parent f2612ea commit f9b4754

10 files changed

+80
-41
lines changed

.swift-version

+1-1
Original file line numberDiff line numberDiff line change
@@ -1 +1 @@
1-
3.1.1
1+
5.0.1

.travis.yml

+34-13
Original file line numberDiff line numberDiff line change
@@ -1,40 +1,61 @@
1+
# Travis CI build file.
2+
3+
# whitelist (branches that should be built)
14
branches:
25
only:
36
- master
47
- /^issue.*$/
58

9+
# the matrix of builds should cover each combination of Swift version
10+
# and platform that is supported. The version of Swift used is specified
11+
# by .swift-version, unless SWIFT_SNAPSHOT is specified.
612
matrix:
713
include:
814
- os: linux
9-
dist: trusty
15+
dist: xenial
1016
sudo: required
17+
services: docker
18+
env: DOCKER_IMAGE=swift:4.0.3 SWIFT_SNAPSHOT=4.0.3
1119
- os: linux
12-
dist: trusty
20+
dist: xenial
1321
sudo: required
14-
env: SWIFT_SNAPSHOT=4.0.3
22+
services: docker
23+
env: DOCKER_IMAGE=swift:4.1.3 SWIFT_SNAPSHOT=4.1.3
1524
- os: linux
16-
dist: trusty
25+
dist: xenial
1726
sudo: required
18-
env: DOCKER_IMAGE=ubuntu:16.04 SWIFT_SNAPSHOT=4.2.1
19-
# - os: linux
20-
# dist: trusty
21-
# sudo: required
22-
# env: DOCKER_IMAGE=ubuntu:16.04 SWIFT_SNAPSHOT=$SWIFT_DEVELOPMENT_SNAPSHOT
23-
- os: osx
24-
osx_image: xcode8.3
27+
services: docker
28+
env: DOCKER_IMAGE=swift:4.2.4 SWIFT_SNAPSHOT=4.2.4
29+
- os: linux
30+
dist: xenial
2531
sudo: required
32+
services: docker
33+
env: DOCKER_IMAGE=swift:5.0.1-xenial
34+
- os: linux
35+
dist: xenial
36+
sudo: required
37+
services: docker
38+
env: DOCKER_IMAGE=swift:5.0.1 SWIFT_SNAPSHOT=$SWIFT_DEVELOPMENT_SNAPSHOT
2639
- os: osx
2740
osx_image: xcode9.2
2841
sudo: required
2942
env: SWIFT_SNAPSHOT=4.0.3
3043
- os: osx
3144
osx_image: xcode9.4
3245
sudo: required
33-
env: SWIFT_SNAPSHOT=4.1.2
46+
env: SWIFT_SNAPSHOT=4.1.2 JAZZY_ELIGIBLE=true
3447
- os: osx
3548
osx_image: xcode10.1
3649
sudo: required
37-
env: SWIFT_SNAPSHOT=$SWIFT_DEVELOPMENT_SNAPSHOT
50+
env: SWIFT_SNAPSHOT=4.2.1
51+
- os: osx
52+
osx_image: xcode10.2
53+
sudo: required
54+
# Pending Travis Xcode 11 image
55+
# - os: osx
56+
# osx_image: xcode11
57+
# sudo: required
58+
# env: SWIFT_SNAPSHOT=$SWIFT_DEVELOPMENT_SNAPSHOT
3859

3960
before_install:
4061
- git clone https://github.com/IBM-Swift/Package-Builder.git

Package@swift-5.swift

+1-1
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
// swift-tools-version:4.0
1+
// swift-tools-version:5.0
22
// The swift-tools-version declares the minimum version of Swift required to build this package.
33
/**
44
* Copyright IBM Corporation 2016, 2017

Sources/SwiftyJSON/SwiftyJSON.swift

+4-2
Original file line numberDiff line numberDiff line change
@@ -1598,7 +1598,9 @@ func ==(lhs: NSNumber, rhs: NSNumber) -> Bool {
15981598
func !=(lhs: NSNumber, rhs: NSNumber) -> Bool {
15991599
return !(lhs == rhs)
16001600
}
1601-
1601+
#if os(Linux) && swift(>=5.1)
1602+
// TODO: why must this be excluded, only on Linux, with Swift 5.1?
1603+
#else
16021604
func <(lhs: NSNumber, rhs: NSNumber) -> Bool {
16031605

16041606
switch (lhs.isBool, rhs.isBool) {
@@ -1610,7 +1612,7 @@ func <(lhs: NSNumber, rhs: NSNumber) -> Bool {
16101612
return lhs.compare(rhs) == ComparisonResult.orderedAscending
16111613
}
16121614
}
1613-
1615+
#endif
16141616
func >(lhs: NSNumber, rhs: NSNumber) -> Bool {
16151617

16161618
switch (lhs.isBool, rhs.isBool) {

Tests/SwiftyJSONTests/BaseTests.swift

+13-4
Original file line numberDiff line numberDiff line change
@@ -163,13 +163,16 @@ class BaseTests: XCTestCase {
163163
break
164164
}
165165

166+
#if !swift(>=5.0)
167+
// Invalid as of Swift 5, as dictionary order is not predictable
166168
let index = 0
167169
let keys = Array(json[1].dictionaryObject!.keys)
168170
for (aKey, aJson) in json[1] {
169171
XCTAssertEqual(aKey, keys[index])
170172
XCTAssertEqual(aJson, json[1][keys[index]])
171173
break
172174
}
175+
#endif
173176
}
174177

175178
func testJSONNumberCompare() {
@@ -195,10 +198,16 @@ class BaseTests: XCTestCase {
195198
XCTAssertEqual(JSON(999.9823).stringValue, "999.9823")
196199
XCTAssertEqual(JSON(true).number!.stringValue, "1")
197200
XCTAssertEqual(JSON(false).number!.stringValue, "0")
198-
XCTAssertEqual(JSON("hello").numberValue.stringValue, "0")
199-
XCTAssertEqual(JSON(NSNull()).numberValue.stringValue, "0")
200-
XCTAssertEqual(JSON(["a","b","c","d"]).numberValue.stringValue, "0")
201-
XCTAssertEqual(JSON(["a":"b","c":"d"]).numberValue.stringValue, "0")
201+
#if os(Linux) && swift(>=4.2)
202+
// https://github.com/apple/swift-corelibs-foundation/pull/1724
203+
let expectedValue = "0.0"
204+
#else
205+
let expectedValue = "0"
206+
#endif
207+
XCTAssertEqual(JSON("hello").numberValue.stringValue, expectedValue)
208+
XCTAssertEqual(JSON(NSNull()).numberValue.stringValue, expectedValue)
209+
XCTAssertEqual(JSON(["a","b","c","d"]).numberValue.stringValue, expectedValue)
210+
XCTAssertEqual(JSON(["a":"b","c":"d"]).numberValue.stringValue, expectedValue)
202211
}
203212

204213
func testNumberPrint(){

Tests/SwiftyJSONTests/LiteralConvertibleTests.swift

+4-4
Original file line numberDiff line numberDiff line change
@@ -41,7 +41,7 @@ class LiteralConvertibleTests: XCTestCase {
4141
// END OF GENERATED CODE
4242

4343
func testNumber() {
44-
var json:JSON = 1234567890.876623
44+
let json:JSON = 1234567890.876623
4545
XCTAssertEqual(json.int!, 1234567890)
4646
XCTAssertEqual(json.intValue, 1234567890)
4747
XCTAssertEqual(json.double!, 1234567890.876623)
@@ -51,16 +51,16 @@ class LiteralConvertibleTests: XCTestCase {
5151
}
5252

5353
func testBool() {
54-
var jsonTrue:JSON = true
54+
let jsonTrue:JSON = true
5555
XCTAssertEqual(jsonTrue.bool!, true)
5656
XCTAssertEqual(jsonTrue.boolValue, true)
57-
var jsonFalse:JSON = false
57+
let jsonFalse:JSON = false
5858
XCTAssertEqual(jsonFalse.bool!, false)
5959
XCTAssertEqual(jsonFalse.boolValue, false)
6060
}
6161

6262
func testString() {
63-
var json:JSON = "abcd efg, HIJK;LMn"
63+
let json:JSON = "abcd efg, HIJK;LMn"
6464
XCTAssertEqual(json.string!, "abcd efg, HIJK;LMn")
6565
XCTAssertEqual(json.stringValue, "abcd efg, HIJK;LMn")
6666
}

Tests/SwiftyJSONTests/NumberTests.swift

+8-1
Original file line numberDiff line numberDiff line change
@@ -63,14 +63,21 @@ class NumberTests: XCTestCase {
6363

6464
json.string = "1000000000000000000000000000.1"
6565
XCTAssertNil(json.number)
66+
6667
#if !os(Linux)
6768
// blocked by defect https://bugs.swift.org/browse/SR-1464?jql=text%20~%20%22NSNumber%22
6869
//TODO: remove ifdef once the defect is resolved
6970
XCTAssertEqual(json.numberValue.description, "1000000000000000000000000000.1")
7071
#endif
7172

7273
json.string = "1e+27"
73-
XCTAssertEqual(json.numberValue.description, "1000000000000000000000000000")
74+
#if os(Linux) && swift(>=4.2)
75+
// TODO: is this actually correct?
76+
let expectedValue="1e+27"
77+
#else
78+
let expectedValue="1000000000000000000000000000"
79+
#endif
80+
XCTAssertEqual(json.numberValue.description, expectedValue)
7481

7582
//setter
7683
json.number = NSNumber(value: 123456789.0987654321)

Tests/SwiftyJSONTests/RawRepresentableTests.swift

+3-3
Original file line numberDiff line numberDiff line change
@@ -39,7 +39,7 @@ class RawRepresentableTests: XCTestCase {
3939
// END OF GENERATED CODE
4040

4141
func testNumber() {
42-
var json:JSON = JSON(rawValue: 948394394.347384 as NSNumber)!
42+
let json:JSON = JSON(rawValue: 948394394.347384 as NSNumber)!
4343
XCTAssertEqual(json.int!, 948394394)
4444
XCTAssertEqual(json.intValue, 948394394)
4545
XCTAssertEqual(json.double!, 948394394.347384)
@@ -59,7 +59,7 @@ class RawRepresentableTests: XCTestCase {
5959
}
6060

6161
func testBool() {
62-
var jsonTrue:JSON = JSON(rawValue: true as NSNumber)!
62+
let jsonTrue:JSON = JSON(rawValue: true as NSNumber)!
6363

6464
// Blocked by https://bugs.swift.org/browse/SR-5803
6565
#if !(os(Linux) && swift(>=3.2))
@@ -68,7 +68,7 @@ class RawRepresentableTests: XCTestCase {
6868

6969
XCTAssertEqual(jsonTrue.boolValue, true)
7070

71-
var jsonFalse:JSON = JSON(rawValue: false)!
71+
let jsonFalse:JSON = JSON(rawValue: false)!
7272
XCTAssertEqual(jsonFalse.bool!, false)
7373
XCTAssertEqual(jsonFalse.boolValue, false)
7474

Tests/SwiftyJSONTests/SequenceTypeTests.swift

+11-11
Original file line numberDiff line numberDiff line change
@@ -77,7 +77,7 @@ class SequenceTypeTests: XCTestCase {
7777
}
7878

7979
func testArrayAllNumber() {
80-
var json:JSON = [1,2.0,3.3,123456789,987654321.123456789]
80+
let json:JSON = [1,2.0,3.3,123456789,987654321.123456789]
8181
XCTAssertEqual(json.count, 5)
8282

8383
var index = 0
@@ -94,7 +94,7 @@ class SequenceTypeTests: XCTestCase {
9494
}
9595

9696
func testArrayAllBool() {
97-
var json:JSON = JSON([true, false, false, true, true])
97+
let json:JSON = JSON([true, false, false, true, true])
9898
XCTAssertEqual(json.count, 5)
9999

100100
var index = 0
@@ -111,7 +111,7 @@ class SequenceTypeTests: XCTestCase {
111111
}
112112

113113
func testArrayAllString() {
114-
var json:JSON = JSON(rawValue: ["aoo","bpp","zoo"])!
114+
let json:JSON = JSON(rawValue: ["aoo","bpp","zoo"])!
115115
XCTAssertEqual(json.count, 3)
116116

117117
var index = 0
@@ -129,7 +129,7 @@ class SequenceTypeTests: XCTestCase {
129129

130130
func testArrayWithNull() {
131131
#if os(Linux)
132-
var json:JSON = JSON(rawValue: ["aoo","bpp", NSNull() ,"zoo"] as [Any?])!
132+
let json:JSON = JSON(rawValue: ["aoo","bpp", NSNull() ,"zoo"] as [Any?])!
133133
#else
134134
var json:JSON = JSON(rawValue: ["aoo","bpp", NSNull() ,"zoo"])!
135135
#endif
@@ -152,7 +152,7 @@ class SequenceTypeTests: XCTestCase {
152152
}
153153

154154
func testArrayAllDictionary() {
155-
var json:JSON = [["1":1, "2":2], ["a":"A", "b":"B"], ["null":NSNull()]]
155+
let json:JSON = [["1":1, "2":2], ["a":"A", "b":"B"], ["null":NSNull()]]
156156
XCTAssertEqual(json.count, 3)
157157

158158
var index = 0
@@ -178,7 +178,7 @@ class SequenceTypeTests: XCTestCase {
178178
}
179179

180180
func testDictionaryAllNumber() {
181-
var json:JSON = ["double":1.11111, "int":987654321]
181+
let json:JSON = ["double":1.11111, "int":987654321]
182182
XCTAssertEqual(json.count, 2)
183183

184184
var index = 0
@@ -195,7 +195,7 @@ class SequenceTypeTests: XCTestCase {
195195
}
196196

197197
func testDictionaryAllBool() {
198-
var json:JSON = ["t":true, "f":false, "false":false, "tr":true, "true":true]
198+
let json:JSON = ["t":true, "f":false, "false":false, "tr":true, "true":true]
199199
XCTAssertEqual(json.count, 5)
200200

201201
var index = 0
@@ -212,7 +212,7 @@ class SequenceTypeTests: XCTestCase {
212212
}
213213

214214
func testDictionaryAllString() {
215-
var json:JSON = JSON(rawValue: ["a":"aoo","bb":"bpp","z":"zoo"])!
215+
let json:JSON = JSON(rawValue: ["a":"aoo","bb":"bpp","z":"zoo"])!
216216
XCTAssertEqual(json.count, 3)
217217

218218
var index = 0
@@ -230,9 +230,9 @@ class SequenceTypeTests: XCTestCase {
230230

231231
func testDictionaryWithNull() {
232232
#if os(Linux)
233-
var json:JSON = JSON(rawValue: ["a":"aoo","bb":"bpp","null":NSNull(), "z":"zoo"] as [String:Any?])!
233+
let json:JSON = JSON(rawValue: ["a":"aoo","bb":"bpp","null":NSNull(), "z":"zoo"] as [String:Any?])!
234234
#else
235-
var json:JSON = JSON(rawValue: ["a":"aoo","bb":"bpp","null":NSNull(), "z":"zoo"])!
235+
let json:JSON = JSON(rawValue: ["a":"aoo","bb":"bpp","null":NSNull(), "z":"zoo"])!
236236
#endif
237237
XCTAssertEqual(json.count, 4)
238238

@@ -253,7 +253,7 @@ class SequenceTypeTests: XCTestCase {
253253
}
254254

255255
func testDictionaryAllArray() {
256-
var json:JSON = JSON (["Number":[NSNumber(value:1),NSNumber(value:2.123456),NSNumber(value:123456789)], "String":["aa","bbb","cccc"], "Mix":[true, "766", NSNull(), 655231.9823]])
256+
let json:JSON = JSON (["Number":[NSNumber(value:1),NSNumber(value:2.123456),NSNumber(value:123456789)], "String":["aa","bbb","cccc"], "Mix":[true, "766", NSNull(), 655231.9823]])
257257

258258
XCTAssertEqual(json.count, 3)
259259

Tests/SwiftyJSONTests/SubscriptTests.swift

+1-1
Original file line numberDiff line numberDiff line change
@@ -123,7 +123,7 @@ class SubscriptTests: XCTestCase {
123123
}
124124

125125
func testArrayAllDictionary() {
126-
var json:JSON = [["1":1, "2":2], ["a":"A", "b":"B"], ["null":NSNull()]]
126+
let json:JSON = [["1":1, "2":2], ["a":"A", "b":"B"], ["null":NSNull()]]
127127
XCTAssertTrue(json[0] == ["1":1, "2":2])
128128
XCTAssertEqual(json[1].dictionary!, ["a":"A", "b":"B"])
129129
XCTAssertEqual(json[2], JSON(["null":NSNull()]))

0 commit comments

Comments
 (0)