cleanup tests
This commit is contained in:
@@ -0,0 +1,58 @@
|
||||
import Foundation
|
||||
import Testing
|
||||
|
||||
@testable import phbar
|
||||
|
||||
// MARK: - Config directory cascade
|
||||
//
|
||||
// `PHPaths` resolves the config root in priority order:
|
||||
// 1. $XDG_CONFIG_HOME/phbar (only for an absolute XDG path)
|
||||
// 2. ~/.config/phbar
|
||||
// 3. ~/.phbar
|
||||
|
||||
@Test func pathsCandidatesIncludeAbsoluteXdgFirst() {
|
||||
let home = FileManager.default.homeDirectoryForCurrentUser
|
||||
let candidates = PHPaths.configDirectoryCandidates(environment: ["XDG_CONFIG_HOME": "/custom/xdg"])
|
||||
|
||||
#expect(candidates.count == 3)
|
||||
#expect(candidates[0].path == "/custom/xdg/phbar")
|
||||
#expect(candidates[1].path == home.appending(path: ".config/phbar").path)
|
||||
#expect(candidates[2].path == home.appending(path: ".phbar").path)
|
||||
}
|
||||
|
||||
@Test func pathsCandidatesOmitRelativeXdg() {
|
||||
let home = FileManager.default.homeDirectoryForCurrentUser
|
||||
let candidates = PHPaths.configDirectoryCandidates(environment: ["XDG_CONFIG_HOME": "relative/path"])
|
||||
|
||||
#expect(candidates.count == 2)
|
||||
#expect(candidates[0].path == home.appending(path: ".config/phbar").path)
|
||||
#expect(candidates[1].path == home.appending(path: ".phbar").path)
|
||||
}
|
||||
|
||||
@Test func pathsCandidatesOmitEmptyXdg() {
|
||||
let candidates = PHPaths.configDirectoryCandidates(environment: ["XDG_CONFIG_HOME": ""])
|
||||
#expect(candidates.count == 2)
|
||||
}
|
||||
|
||||
@Test func pathsCandidatesOmitXdgWhenUnset() {
|
||||
let candidates = PHPaths.configDirectoryCandidates(environment: [:])
|
||||
#expect(candidates.count == 2)
|
||||
}
|
||||
|
||||
@Test func pathsResolvePicksFirstExistingCandidate() throws {
|
||||
// An existing XDG-rooted dir takes priority over ~/.config/phbar because
|
||||
// it sorts first in the candidate list.
|
||||
let xdgRoot = FileManager.default.temporaryDirectory.appending(path: "phbar_xdg_\(UUID().uuidString)")
|
||||
let xdgConfig = xdgRoot.appending(path: "phbar")
|
||||
try FileManager.default.createDirectory(at: xdgConfig, withIntermediateDirectories: true)
|
||||
defer { try? FileManager.default.removeItem(at: xdgRoot) }
|
||||
|
||||
let resolved = PHPaths.resolveConfigDirectory(environment: ["XDG_CONFIG_HOME": xdgRoot.path])
|
||||
|
||||
#expect(resolved == xdgConfig)
|
||||
}
|
||||
|
||||
@Test func pathsConfigDirectoryMatchesResolve() {
|
||||
// The cached static agrees with a fresh resolve against the live process env.
|
||||
#expect(PHPaths.configDirectory == PHPaths.resolveConfigDirectory())
|
||||
}
|
||||
Reference in New Issue
Block a user