Files
knotchy/Tests/KnotchyCoreTests/ContainerRuntimeTests.swift
T
2026-09-28 18:28:32 +05:30

35 lines
1.7 KiB
Swift

import Testing
@testable import KnotchyCore
struct ContainerRuntimeTests {
@Test func readsTheVersionFromTheCLIOutput() {
#expect(ContainerRuntime.version(in: "container CLI version 1.4.1 (build: release, commit: 9a8917c)\n") == "1.4.1")
#expect(ContainerRuntime.version(in: "warning: x\ncontainer CLI version 2.0 (build: debug)") == "2.0")
#expect(ContainerRuntime.version(in: "container version 1.4.1") == nil)
}
@Test func comparesVersionsNumerically() {
#expect(ContainerRuntime.isOlder("1.3.9", than: "1.4.0"))
#expect(ContainerRuntime.isOlder("1.4", than: "1.4.1"))
#expect(!ContainerRuntime.isOlder("1.10.0", than: "1.4.0"))
#expect(!ContainerRuntime.isOlder("1.4.0", than: "1.4"))
}
@Test func judgesAnInstalledRuntime() {
#expect(ContainerRuntime.status(versionOutput: nil) == .missing)
#expect(ContainerRuntime.status(versionOutput: "container CLI version 1.3.1 (build: release)") == .outdated("1.3.1"))
#expect(ContainerRuntime.status(versionOutput: "container CLI version 1.4.1 (build: release)") == .current("1.4.1"))
#expect(ContainerRuntime.status(versionOutput: "container CLI version 9.0.0") == .current("9.0.0"))
}
@Test func unreadableOutputNeverTriggersAnUpdate() {
#expect(ContainerRuntime.status(versionOutput: "container 3 (a new format)") == .current(nil))
#expect(ContainerRuntime.status(versionOutput: "") == .current(nil))
}
@Test func thePinnedReleaseIsNewEnough() {
#expect(!ContainerRuntime.isOlder(ContainerRuntime.pinned.version, than: ContainerRuntime.minimumVersion))
#expect(ContainerRuntime.pinned.sha256.count == 64)
}
}