Fix tart set --disk when TART_HOME contains spaces (#1374)

This commit is contained in:
wj
2026-10-15 15:45:11 -07:00
committed by GitHub
parent 543453404c
commit e8e97444af
2 changed files with 17 additions and 1 deletions
+1 -1
View File
@@ -101,7 +101,7 @@ struct Set: AsyncParsableCommand {
if let disk = disk {
let temporaryDiskURL = try Config().tartTmpDir.appendingPathComponent("set-disk-\(UUID().uuidString)")
try FileManager.default.copyItem(atPath: disk, toPath: temporaryDiskURL.path())
try FileManager.default.copyItem(atPath: disk, toPath: temporaryDiskURL.path(percentEncoded: false))
_ = try FileManager.default.replaceItemAt(vmDir.diskURL, withItemAt: temporaryDiskURL)
}
@@ -245,6 +245,22 @@ final class CommandBehaviorTests: XCTestCase {
}
}
func testSetDiskReplacesDiskWhenTartHomeContainsSpaces() async throws {
let home = try temporaryDirectory().appendingPathComponent("Tart Home", isDirectory: true)
let previousHome = ProcessInfo.processInfo.environment["TART_HOME"]
setenv("TART_HOME", home.path, 1)
defer { restoreEnvironment("TART_HOME", to: previousHome) }
let vmDir = try makeStandaloneVM(named: "spaces", diskContents: "disk")
let replacementURL = try temporaryDirectory().appendingPathComponent("replacement.img")
XCTAssertTrue(FileManager.default.createFile(atPath: replacementURL.path, contents: Data("replacement".utf8)))
let command = try Set.parseAsRoot(["spaces", "--disk", replacementURL.path]) as! Set
try await command.run()
XCTAssertEqual(try Data(contentsOf: vmDir.diskURL), Data("replacement".utf8))
}
func testSetPreservesDisplayRefitWhenChangingOtherOptions() async throws {
try await withTemporaryTartHome {
let vmDir = try makeStandaloneVM(named: "display-refit", diskContents: "disk")