Skip to content

Commit e5d510c

Browse files
committed
Tests
1 parent a69e578 commit e5d510c

File tree

2 files changed

+37
-7
lines changed

2 files changed

+37
-7
lines changed

Tests/HTTPServerTests.swift

Lines changed: 28 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -39,7 +39,7 @@ import FoundationNetworking
3939
final class HTTPServerTests: XCTestCase {
4040

4141
func testRequests_AreMatchedToHandlers_ViaRoute() async throws {
42-
let server = HTTPServer(port: 8008)
42+
let server = HTTPServer.make()
4343

4444
await server.appendRoute("/accepted") { _ in
4545
HTTPResponse.make(statusCode: .accepted)
@@ -62,7 +62,7 @@ final class HTTPServerTests: XCTestCase {
6262
}
6363

6464
func testUnmatchedRequests_Return404() async throws {
65-
let server = HTTPServer(port: 8008)
65+
let server = HTTPServer.make()
6666

6767
let response = await server.handleRequest(.make(method: .GET, path: "/accepted"))
6868
XCTAssertEqual(
@@ -72,7 +72,7 @@ final class HTTPServerTests: XCTestCase {
7272
}
7373

7474
func testHandlerErrors_Return500() async throws {
75-
let server = HTTPServer(port: 8008) { _ in
75+
let server = HTTPServer.make() { _ in
7676
throw SocketError.disconnected
7777
}
7878

@@ -84,7 +84,7 @@ final class HTTPServerTests: XCTestCase {
8484
}
8585

8686
func testHandlerTimeout_Returns500() async throws {
87-
let server = HTTPServer(port: 8008, timeout: 0.1) { _ in
87+
let server = HTTPServer.make(timeout: 0.1) { _ in
8888
try await Task.sleep(nanoseconds: 1_000_000_000)
8989
return HTTPResponse.make(statusCode: .accepted)
9090
}
@@ -97,7 +97,7 @@ final class HTTPServerTests: XCTestCase {
9797
}
9898

9999
func testKeepAlive_IsAddedToResponses() async throws {
100-
let server = HTTPServer(port: 8008)
100+
let server = HTTPServer.make()
101101

102102
var response = await server.handleRequest(
103103
.make(method: .GET, path: "/accepted", headers: [.connection: "keep-alive"])
@@ -115,7 +115,7 @@ final class HTTPServerTests: XCTestCase {
115115
}
116116

117117
func testServer_ReturnsFile_WhenFileHandlerIsMatched() async throws {
118-
let server = HTTPServer(port: 8009, logger: .print())
118+
let server = HTTPServer.make(port: 8009)
119119
await server.appendRoute("*", to: .file(named: "fish.json", in: .module))
120120
let task = Task { try await server.start() }
121121

@@ -131,7 +131,7 @@ final class HTTPServerTests: XCTestCase {
131131

132132
#if canImport(Darwin)
133133
func testServer_Returns500_WhenHandlerTimesout() async throws {
134-
let server = HTTPServer(port: 8008, timeout: 0.1)
134+
let server = HTTPServer.make(timeout: 0.1)
135135
await server.appendRoute("*") { _ in
136136
try await Task.sleep(nanoseconds: 5_000_000_000)
137137
return .make(statusCode: .ok)
@@ -150,4 +150,25 @@ final class HTTPServerTests: XCTestCase {
150150
#endif
151151
}
152152

153+
extension HTTPServer {
153154

155+
static func make(port: UInt16 = 8008,
156+
timeout: TimeInterval = 15,
157+
logger: HTTPLogging? = defaultLogger(),
158+
handler: HTTPHandler? = nil) -> HTTPServer {
159+
HTTPServer(port: port,
160+
timeout: timeout,
161+
logger: logger,
162+
handler: handler)
163+
}
164+
165+
static func make(port: UInt16 = 8008,
166+
timeout: TimeInterval = 15,
167+
logger: HTTPLogging? = .print(),
168+
handler: @Sendable @escaping (HTTPRequest) async throws -> HTTPResponse) -> HTTPServer {
169+
HTTPServer(port: port,
170+
timeout: timeout,
171+
logger: logger,
172+
handler: ClosureHTTPHandler(handler))
173+
}
174+
}

docker-run-tests.sh

Lines changed: 9 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,9 @@
1+
#!/usr/bin/env bash
2+
3+
set -eu
4+
5+
docker run -it \
6+
--rm \
7+
--mount src="$(pwd)",target=/flyingfox,type=bind \
8+
swift \
9+
/usr/bin/swift test --package-path /flyingfox

0 commit comments

Comments
 (0)