Skip to content

Commit 232ac1f

Browse files
authored
Fix parametric completion tests (#1063)
* Await completion expectations. * Fix Pico completion order. * Await loading of completion suggestions.
1 parent e867822 commit 232ac1f

3 files changed

Lines changed: 13 additions & 9 deletions

File tree

rascal-lsp/src/main/rascal/library/demo/lang/pico/LanguageServer.rsc

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -41,6 +41,7 @@ import util::Reflective;
4141
extend lang::pico::\syntax::Main;
4242
import DateTime;
4343
import IO;
44+
import List;
4445
import Location;
4546
import String;
4647

@@ -317,7 +318,7 @@ list[CompletionItem] picoCompletionService(Focus focus, int cursorOffset, Comple
317318
t = focus[0];
318319
str prefix = "<t>"[..cursorOffset];
319320
cc = t.src.begin.column + cursorOffset;
320-
items = [];
321+
list[CompletionItem] items = [];
321322
322323
isTypingId = false;
323324
try {
@@ -339,7 +340,7 @@ list[CompletionItem] picoCompletionService(Focus focus, int cursorOffset, Comple
339340
}
340341
}
341342
342-
return items;
343+
return sort(items, bool(CompletionItem i1, CompletionItem i2) {return i1.label < i2.label; });
343344
}
344345
345346
@synopsis{The main function registers the Pico language with the IDE}

rascal-vscode-extension/src/test/vscode-suite/dsl.test.ts

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -312,7 +312,7 @@ end
312312

313313
await editor.moveCursor(9, 4);
314314
await bench.executeCommand("editor.action.triggerSuggest"); // 'completion', typically triggered with Ctrl+Space
315-
expectCompletions(editor, ["a", "aa"]);
315+
await expectCompletions(driver, editor, ["a", "aa"]);
316316
});
317317

318318
it("completion by trigger character works", async function() {
@@ -322,7 +322,7 @@ end
322322
const editor = await ide.openModule(TestWorkspace.picoFile);
323323
await editor.moveCursor(10, 10);
324324
await editor.typeText(" x :=");
325-
expectCompletions(editor, ["x", "n", "a", "b"]);
325+
await expectCompletions(driver, editor, ["a", "b", "n", "x"]);
326326
});
327327

328328
it("serializes Rascal values as expected", async function() {

rascal-vscode-extension/src/test/vscode-suite/utils.ts

Lines changed: 8 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -538,10 +538,13 @@ export function printRascalOutputOnFailure(channel: 'Language Parametric Rascal'
538538
});
539539
}
540540

541-
export async function expectCompletions(editor: TextEditor, expectedLabels: string[]) {
542-
const completionMenu = new ContentAssist(editor);
543-
const completions = await completionMenu.getItems();
541+
export async function expectCompletions(driver: WebDriver, editor: TextEditor, expectedLabels: string[]) {
542+
const completions = await driver.wait(async () => {
543+
const completionMenu = new ContentAssist(editor);
544+
return await ignoreFails(completionMenu.getItems());
545+
}, Delays.fast, "Completion items not found");
546+
544547
expect(completions).to.have.length(expectedLabels.length);
545-
const labels: string[] = await Promise.all(completions.map(c => c.getLabel()));
546-
expect(labels).to.deep.equal(expectedLabels);
548+
const labels: string[] = await Promise.all(completions!.map(c => c.getLabel()));
549+
expect(labels).deep.equal(expectedLabels);
547550
}

0 commit comments

Comments
 (0)