diff --git a/.swift-version b/.swift-version index f2c6cb6..819e07a 100644 --- a/.swift-version +++ b/.swift-version @@ -1 +1 @@ -4.2.3 +5.0 diff --git a/.travis.yml b/.travis.yml index 1fd5fb0..dbdce91 100644 --- a/.travis.yml +++ b/.travis.yml @@ -25,17 +25,17 @@ matrix: dist: xenial sudo: required services: docker - env: DOCKER_IMAGE=swift:4.2.3 + env: DOCKER_IMAGE=swift:4.2.4 SWIFT_SNAPSHOT=4.2.4 - os: linux dist: xenial sudo: required services: docker - env: DOCKER_IMAGE=swift:4.2.3 SWIFT_SNAPSHOT=$SWIFT_DEVELOPMENT_SNAPSHOT + env: DOCKER_IMAGE=swift:5.0-xenial - os: linux dist: xenial sudo: required services: docker - env: DOCKER_IMAGE=ubuntu:18.04 + env: DOCKER_IMAGE=swift:5.0 SWIFT_SNAPSHOT=$SWIFT_DEVELOPMENT_SNAPSHOT - os: osx osx_image: xcode9.2 sudo: required @@ -43,12 +43,16 @@ matrix: - os: osx osx_image: xcode9.4 sudo: required - env: SWIFT_SNAPSHOT=4.1.2 JAZZY_ELIGIBLE=true + env: SWIFT_SNAPSHOT=4.1.2 - os: osx osx_image: xcode10.1 sudo: required + env: SWIFT_SNAPSHOT=4.2.1 JAZZY_ELIGIBLE=true - os: osx - osx_image: xcode10.1 + osx_image: xcode10.2 + sudo: required + - os: osx + osx_image: xcode10.2 sudo: required env: SWIFT_SNAPSHOT=$SWIFT_DEVELOPMENT_SNAPSHOT diff --git a/Package.swift b/Package.swift index 3d16ffa..53f4d66 100644 --- a/Package.swift +++ b/Package.swift @@ -1,8 +1,8 @@ -// swift-tools-version:4.0 +// swift-tools-version:5.0 // The swift-tools-version declares the minimum version of Swift required to build this package. /** - * Copyright IBM Corporation 2016, 2017 + * Copyright IBM Corporation 2016-2019 * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. diff --git a/Package@swift-4.swift b/Package@swift-4.swift new file mode 100644 index 0000000..3d16ffa --- /dev/null +++ b/Package@swift-4.swift @@ -0,0 +1,43 @@ +// swift-tools-version:4.0 +// The swift-tools-version declares the minimum version of Swift required to build this package. + +/** + * Copyright IBM Corporation 2016, 2017 + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + **/ + +import PackageDescription + +let package = Package( + name: "CircuitBreaker", + products: [ + .library( + name: "CircuitBreaker", + targets: ["CircuitBreaker"] + ) + ], + dependencies: [ + .package(url: "https://github.com/IBM-Swift/LoggerAPI.git", .upToNextMajor(from: "1.0.0")) + ], + targets: [ + .target( + name: "CircuitBreaker", + dependencies: ["LoggerAPI"] + ), + .testTarget( + name: "CircuitBreakerTests", + dependencies: ["CircuitBreaker"] + ) + ] +) diff --git a/Tests/CircuitBreakerTests/CircuitBreakerTests.swift b/Tests/CircuitBreakerTests/CircuitBreakerTests.swift index bd93bcb..763f20b 100644 --- a/Tests/CircuitBreakerTests/CircuitBreakerTests.swift +++ b/Tests/CircuitBreakerTests/CircuitBreakerTests.swift @@ -125,6 +125,10 @@ class CircuitBreakerTests: XCTestCase { func time(milliseconds: Int) { #if os(Linux) usleep(UInt32(milliseconds * 1000)) + #elseif swift(>=4.2) + RunLoop.current.run(mode: RunLoop.Mode.default, before: Date(timeIntervalSinceNow: 0.001)) + let time: Double = Double(milliseconds) / 1000 + RunLoop.current.run(mode: RunLoop.Mode.default, before: Date(timeIntervalSinceNow: time)) #else RunLoop.current.run(mode: .defaultRunLoopMode, before: Date(timeIntervalSinceNow: 0.001)) let time: Double = Double(milliseconds) / 1000 @@ -330,8 +334,8 @@ class CircuitBreakerTests: XCTestCase { let expectation1 = expectation(description: "Breaker will be closed after successful bulkhead request in halfopen state.") func testHalfOpen(invocation: Invocation) { - expectation1.fulfill() invocation.notifySuccess() + expectation1.fulfill() } let breaker = CircuitBreaker(name: "Test", bulkhead: 3, command: testHalfOpen, fallback: dummyFallback)