test(mcp): ready providers before live prompt completion checks (#2137)
07b36c148 made document and procedure completion read only from an
already-started provider client. Two checks still completed right after
opening a target, so they observed an empty cold result:
- promptCompletion.test.ts used a fixture client without executeIfReady
and never ran an ordinary operation, so the composite provider had not
created a client yet.
- The packaged MCP smoke expected live completions on non-Linux hosts
immediately after open_binary, before current_document started Hopper.
Both now assert the cold result is empty, ready the provider through an
ordinary operation, and then assert the unchanged live candidates.
Fixes #2123
Co-authored-by: Claude Opus 5.5 <noreply@anthropic.com>
This commit is contained in:
parent
c22111eca2
commit
621cee192d
|
|
@ -121,11 +121,8 @@ const verifyMcpNonLinuxCurrentDocument = async (
|
|||
|
||||
const verifyMcpBinaryLifecycle = async (client, mcpOptions) => {
|
||||
await verifyMcpOpenAndBind(client, mcpOptions);
|
||||
await prompts.verifyPromptCompletion(
|
||||
client,
|
||||
mcpOptions,
|
||||
process.platform !== "linux",
|
||||
);
|
||||
// Completion never starts a provider; only an ordinary operation readies it.
|
||||
await prompts.verifyPromptCompletion(client, mcpOptions, false);
|
||||
if (process.platform === "linux") {
|
||||
await verifyMcpLinuxToolAvailability(client, mcpOptions);
|
||||
} else {
|
||||
|
|
@ -133,6 +130,7 @@ const verifyMcpBinaryLifecycle = async (client, mcpOptions) => {
|
|||
{ name: "current_document", arguments: {} },
|
||||
mcpOptions,
|
||||
);
|
||||
await prompts.verifyPromptCompletion(client, mcpOptions, true);
|
||||
await verifyMcpNonLinuxCurrentDocument(client, mcpOptions, current);
|
||||
}
|
||||
const closed = await client.callTool(
|
||||
|
|
|
|||
|
|
@ -50,6 +50,9 @@ describe("guided prompt completion from live analysis", () => {
|
|||
expect((await session.open(target)).ok).toBe(true);
|
||||
const completion = createPromptCompletionSource(session, session);
|
||||
|
||||
// Completion never starts a provider; an ordinary operation readies it.
|
||||
expect(await completion.complete("document", "app")).toEqual([]);
|
||||
expect((await session.execute("list_documents", {})).ok).toBe(true);
|
||||
expect(await completion.complete("document", "app")).toEqual([
|
||||
"App",
|
||||
"AppTests",
|
||||
|
|
@ -269,8 +272,8 @@ const fixtureEnvironment = {
|
|||
|
||||
const client = (
|
||||
requests: Array<Readonly<Record<string, unknown>>>,
|
||||
): AnalysisClient => ({
|
||||
execute(operation, parameters) {
|
||||
): AnalysisClient => {
|
||||
const execute: AnalysisClient["execute"] = (operation, parameters) => {
|
||||
if (operation === "list_documents")
|
||||
return Promise.resolve(observed(["AppTests", "App", "App"]));
|
||||
if (operation === "list_procedures") {
|
||||
|
|
@ -285,6 +288,11 @@ const client = (
|
|||
);
|
||||
}
|
||||
return Promise.resolve(observed(null));
|
||||
},
|
||||
close: () => Promise.resolve(resultOk(null)),
|
||||
});
|
||||
};
|
||||
// An in-process fixture client is ready as soon as the session opens.
|
||||
return {
|
||||
execute,
|
||||
executeIfReady: execute,
|
||||
close: () => Promise.resolve(resultOk(null)),
|
||||
};
|
||||
};
|
||||
|
|
|
|||
Loading…
Reference in New Issue