Files
darwin-apk/Tests/darwin-apk-tests/ApkVersionTests.swift

60 lines
1.9 KiB
Swift

/*
* darwin-apk © 2025 Gay Pizza Specifications
* SPDX-License-Identifier: Apache-2.0
*/
import Testing
@testable import darwin_apk
@Test func testParseDependency() {
let tests: [String: ApkVersionRequirement] = [
"bash":
.init(name: "bash", spec: .any()),
"!libdbus":
.init(name: "libdbus", spec: .any(invert: true)),
"libapparmor=4.1.0-r2":
.init(name: "libapparmor", spec: .constraint(op: .equals, version: "4.1.0-r2")),
"python3~3.12":
.init(name: "python3", spec: .constraint(op: .fuzzyEquals, version: "3.12")),
"so:libc.musl-x86_64.so.1":
.init(name: "so:libc.musl-x86_64.so.1", spec: .any()),
"!alsa-lib<1.2.14-r0":
.init(name: "alsa-lib", spec: .constraint(invert: true, op: .less, version: "1.2.14-r0")),
"!alsa-lib>1.2.14-r0":
.init(name: "alsa-lib", spec: .constraint(invert: true, op: .greater, version: "1.2.14-r0")),
"!lld20-libs<20.1.2-r0":
.init(name: "lld20-libs", spec: .constraint(invert: true, op: .less, version: "20.1.2-r0")),
"!lld20-libs>20.1.2-r0":
.init(name: "lld20-libs", spec: .constraint(invert: true, op: .greater, version: "20.1.2-r0")),
"!lld20<20.1.2-r0":
.init(name: "lld20", spec: .constraint(invert: true, op: .less, version: "20.1.2-r0")),
"!lld20>20.1.2-r0":
.init(name: "lld20", spec: .constraint(invert: true, op: .greater, version: "20.1.2-r0")),
]
for valid in tests {
#expect((try? ApkVersionRequirement(extract: valid.key[...])) == valid.value,
"Expect: \(valid.key) == \(valid.value)")
}
}
@Test func testVersionValidation() {
for valid in [
"100",
"1.0",
"0-r1",
"10.2.3-r100",
"0.0.0_git20210122-r0",
"0.20240527.191746-r2",
"9100h-r4",
] {
#expect(ApkVersionCompare.validate(valid), "Should be valid: \(valid)")
}
for invalid in [
"a",
"0r-10",
"10.2.3-100",
] {
#expect(!ApkVersionCompare.validate(invalid), "Should be invalid: \(invalid)")
}
}