fix(worktree): type expected errors (#27296)
This commit is contained in:
@@ -135,13 +135,17 @@ describe("Worktree", () => {
|
||||
{ git: true },
|
||||
)
|
||||
|
||||
it.instance("throws NotGitError for non-git directories", () =>
|
||||
it.instance("fails with NotGitError for non-git directories", () =>
|
||||
Effect.gen(function* () {
|
||||
const svc = yield* Worktree.Service
|
||||
const exit = yield* Effect.exit(svc.makeWorktreeInfo())
|
||||
|
||||
expect(Exit.isFailure(exit)).toBe(true)
|
||||
if (Exit.isFailure(exit)) expect(Cause.squash(exit.cause)).toBeInstanceOf(Worktree.NotGitError)
|
||||
if (Exit.isFailure(exit)) {
|
||||
const error = Cause.squash(exit.cause)
|
||||
expect(error).toBeInstanceOf(Worktree.NotGitError)
|
||||
if (error instanceof Worktree.NotGitError) expect(error._tag).toBe("WorktreeNotGitError")
|
||||
}
|
||||
}),
|
||||
)
|
||||
|
||||
@@ -286,14 +290,18 @@ describe("Worktree", () => {
|
||||
{ git: true },
|
||||
)
|
||||
|
||||
it.instance("throws NotGitError for non-git directories", () =>
|
||||
it.instance("fails with NotGitError for non-git directories", () =>
|
||||
Effect.gen(function* () {
|
||||
const test = yield* TestInstance
|
||||
const svc = yield* Worktree.Service
|
||||
const exit = yield* Effect.exit(svc.remove({ directory: path.join(test.directory, "fake") }))
|
||||
|
||||
expect(Exit.isFailure(exit)).toBe(true)
|
||||
if (Exit.isFailure(exit)) expect(Cause.squash(exit.cause)).toBeInstanceOf(Worktree.NotGitError)
|
||||
if (Exit.isFailure(exit)) {
|
||||
const error = Cause.squash(exit.cause)
|
||||
expect(error).toBeInstanceOf(Worktree.NotGitError)
|
||||
if (error instanceof Worktree.NotGitError) expect(error._tag).toBe("WorktreeNotGitError")
|
||||
}
|
||||
}),
|
||||
)
|
||||
})
|
||||
|
||||
@@ -171,7 +171,7 @@ function withContext<A, E>(
|
||||
messages: (sessionID) =>
|
||||
run(modules.Session.Service.use((svc) => svc.messages({ sessionID }).pipe(Effect.orDie))),
|
||||
todos: (sessionID, todos) => run(modules.Todo.Service.use((svc) => svc.update({ sessionID, todos }))),
|
||||
worktree: (input) => run(modules.Worktree.Service.use((svc) => svc.create(input))),
|
||||
worktree: (input) => run(modules.Worktree.Service.use((svc) => svc.create(input).pipe(Effect.orDie))),
|
||||
worktreeRemove: (directory) =>
|
||||
run(modules.Worktree.Service.use((svc) => svc.remove({ directory })).pipe(Effect.ignore)),
|
||||
llmText: (value) => Effect.suspend(() => llm().text(value)),
|
||||
|
||||
@@ -192,6 +192,23 @@ describe("experimental HttpApi", () => {
|
||||
},
|
||||
)
|
||||
|
||||
it.instance("returns declared worktree errors", () =>
|
||||
Effect.gen(function* () {
|
||||
const tmp = yield* TestInstance
|
||||
const response = yield* request(ExperimentalPaths.worktree, tmp.directory, {
|
||||
method: "POST",
|
||||
headers: { "content-type": "application/json" },
|
||||
body: JSON.stringify({}),
|
||||
})
|
||||
|
||||
expect(response.status).toBe(400)
|
||||
expect(yield* json(response)).toEqual({
|
||||
name: "WorktreeNotGitError",
|
||||
data: { message: "Worktrees are only supported for git projects" },
|
||||
})
|
||||
}),
|
||||
)
|
||||
|
||||
it.instance(
|
||||
"serves Console org switch through the default server app",
|
||||
() =>
|
||||
|
||||
Reference in New Issue
Block a user