This commit is contained in:
Sean McLoughlin 2026-04-12 17:57:04 +02:00 committed by GitHub
commit 58cf342167
No known key found for this signature in database
GPG Key ID: B5690EEEBB952194
2 changed files with 29 additions and 1 deletions

View File

@ -19,7 +19,7 @@ class ControlSocket {
func run() async throws {
// Remove control socket file from previous "tart run" invocations,
// if any, otherwise we may get the "address already in use" error
try? FileManager.default.removeItem(atPath: controlSocketURL.path())
try? FileManager.default.removeItem(atPath: controlSocketURL.path)
// Change the current working directory to a VM's base directory
// to work around Unix domain socket 104 byte limitation [1]

View File

@ -0,0 +1,28 @@
import XCTest
@testable import tart
final class ControlSocketURLTests: XCTestCase {
func testControlSocketURLResolvesToAbsolutePath() throws {
let baseURL = URL(fileURLWithPath: "/Users/test/.tart/vms/myvm/")
let vmDir = VMDirectory(baseURL: baseURL)
// The .path property resolves relative URLs to absolute paths,
// which is required for stale socket cleanup in ControlSocket.run()
// since it happens before the working directory is changed.
XCTAssertEqual(
vmDir.controlSocketURL.path,
"/Users/test/.tart/vms/myvm/control.sock"
)
}
func testControlSocketURLRelativePathIsJustFilename() throws {
let baseURL = URL(fileURLWithPath: "/Users/test/.tart/vms/myvm/")
let vmDir = VMDirectory(baseURL: baseURL)
// The .relativePath is used for socket binding after cwd is changed
XCTAssertEqual(
vmDir.controlSocketURL.relativePath,
"control.sock"
)
}
}