Skip to content

Commit 4faa2e8

Browse files
authored
Have Environment.set(_:value:) actually set the environment (#557)
* Have Environment.set actually set the environment * Add test
1 parent 1bfd1f4 commit 4faa2e8

File tree

2 files changed

+14
-1
lines changed

2 files changed

+14
-1
lines changed

Sources/Hummingbird/Environment.swift

+5
Original file line numberDiff line numberDiff line change
@@ -92,6 +92,11 @@ public struct Environment: Sendable, Decodable, ExpressibleByDictionaryLiteral {
9292
/// - value: Environment variable name value
9393
public mutating func set(_ s: String, value: String?) {
9494
self.values[s.lowercased()] = value
95+
if let value {
96+
setenv(s, value, 1)
97+
} else {
98+
unsetenv(s)
99+
}
95100
}
96101

97102
/// Merge two environment variable sets together and return result

Tests/HummingbirdTests/EnvironmentTests.swift

+9-1
Original file line numberDiff line numberDiff line change
@@ -41,8 +41,16 @@ final class EnvironmentTests: XCTestCase {
4141
XCTAssertEqual(env.get("TEST_VAR"), "testSet")
4242
}
4343

44+
func testSetForAllEnvironments() {
45+
var env = Environment()
46+
env.set("TEST_VAR", value: "testSet")
47+
let env2 = Environment()
48+
XCTAssertEqual(env2.get("TEST_VAR"), "testSet")
49+
}
50+
4451
func testLogLevel() {
45-
setenv("LOG_LEVEL", "trace", 1)
52+
var env = Environment()
53+
env.set("LOG_LEVEL", value: "trace")
4654
let router = Router()
4755
let app = Application(responder: router.buildResponder())
4856
XCTAssertEqual(app.logger.logLevel, .trace)

0 commit comments

Comments
 (0)