Add mascot demo. Update assets for readme
This commit is contained in:
@@ -120,6 +120,64 @@ final class WorkspaceRegistryTests: XCTestCase {
|
||||
}
|
||||
}
|
||||
|
||||
@MainActor
|
||||
final class WorkspaceControllerTests: XCTestCase {
|
||||
func testNewTabUsesActiveTabCurrentDirectory() {
|
||||
let factory = RecordingTerminalSessionFactory()
|
||||
let controller = WorkspaceController(
|
||||
summary: WorkspaceSummary(name: "Main"),
|
||||
sessionFactory: factory,
|
||||
settingsProvider: TestSettingsProvider(),
|
||||
bootstrapDefaultTab: false
|
||||
)
|
||||
|
||||
controller.newTab()
|
||||
controller.activeTab?.currentDirectory = "/tmp/Raycast"
|
||||
|
||||
controller.newTab()
|
||||
|
||||
XCTAssertEqual(factory.requestedDirectories, [nil, "/tmp/Raycast"])
|
||||
XCTAssertEqual(controller.activeTab?.currentDirectory, "/tmp/Raycast")
|
||||
XCTAssertEqual(controller.tabs.count, 2)
|
||||
XCTAssertEqual(controller.activeTabIndex, 1)
|
||||
}
|
||||
|
||||
func testNewTabNormalizesCurrentDirectoryFileURL() {
|
||||
let factory = RecordingTerminalSessionFactory()
|
||||
let controller = WorkspaceController(
|
||||
summary: WorkspaceSummary(name: "Main"),
|
||||
sessionFactory: factory,
|
||||
settingsProvider: TestSettingsProvider(),
|
||||
bootstrapDefaultTab: false
|
||||
)
|
||||
let expectedPath = "/tmp/Raycast Folder"
|
||||
|
||||
controller.newTab()
|
||||
controller.activeTab?.currentDirectory = URL(fileURLWithPath: expectedPath).absoluteString
|
||||
|
||||
controller.newTab()
|
||||
|
||||
XCTAssertEqual(controller.activeTab?.currentDirectory, expectedPath)
|
||||
}
|
||||
|
||||
func testNewTabFallsBackToHomeDirectoryWhenWorkspaceHasNoTabs() {
|
||||
let factory = RecordingTerminalSessionFactory()
|
||||
let controller = WorkspaceController(
|
||||
summary: WorkspaceSummary(name: "Main"),
|
||||
sessionFactory: factory,
|
||||
settingsProvider: TestSettingsProvider(),
|
||||
bootstrapDefaultTab: false
|
||||
)
|
||||
|
||||
controller.newTab()
|
||||
|
||||
XCTAssertEqual(factory.requestedDirectories, [nil])
|
||||
XCTAssertEqual(controller.activeTab?.currentDirectory, NSHomeDirectory())
|
||||
XCTAssertEqual(controller.tabs.count, 1)
|
||||
XCTAssertEqual(controller.activeTabIndex, 0)
|
||||
}
|
||||
}
|
||||
|
||||
private final class InMemoryWorkspaceStore: WorkspaceStoreType {
|
||||
var savedSummaries: [WorkspaceSummary] = []
|
||||
|
||||
@@ -138,9 +196,35 @@ private final class TestSettingsProvider: TerminalSessionConfigurationProviding
|
||||
let terminalSizePresets = TerminalSizePresetStore.loadDefaults()
|
||||
}
|
||||
|
||||
private final class RecordingTerminalSessionFactory: TerminalSessionFactoryType {
|
||||
private(set) var requestedDirectories: [String?] = []
|
||||
|
||||
@MainActor
|
||||
func makeSession(
|
||||
fontSize: CGFloat,
|
||||
theme: TerminalTheme,
|
||||
shellPath: String,
|
||||
initialDirectory: String?
|
||||
) -> TerminalSession {
|
||||
requestedDirectories.append(initialDirectory)
|
||||
return TerminalSession(
|
||||
fontSize: fontSize,
|
||||
theme: theme,
|
||||
shellPath: shellPath,
|
||||
initialDirectory: initialDirectory,
|
||||
startImmediately: false
|
||||
)
|
||||
}
|
||||
}
|
||||
|
||||
private struct UnusedTerminalSessionFactory: TerminalSessionFactoryType {
|
||||
@MainActor
|
||||
func makeSession(fontSize: CGFloat, theme: TerminalTheme, shellPath: String) -> TerminalSession {
|
||||
func makeSession(
|
||||
fontSize: CGFloat,
|
||||
theme: TerminalTheme,
|
||||
shellPath: String,
|
||||
initialDirectory: String?
|
||||
) -> TerminalSession {
|
||||
fatalError("WorkspaceRegistryTests should not create live terminal sessions.")
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user