Skip to content

Commit 9f4abe2

Browse files
author
Andy
authored
Improve completions testing (microsoft#23591)
1 parent cee4289 commit 9f4abe2

File tree

71 files changed

+538
-835
lines changed

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

71 files changed

+538
-835
lines changed

src/harness/fourslash.ts

+150-48
Large diffs are not rendered by default.

tests/cases/fourslash/augmentedTypesClass1.ts

+2-4
Original file line numberDiff line numberDiff line change
@@ -6,8 +6,6 @@
66
////var r = new c5b();
77
////r./*2*/
88

9-
goTo.marker('1');
10-
verify.completionListContains('prototype', '(property) c5b.prototype: c5b');
9+
verify.completions({ at: "1", includes: { name: "prototype", text: '(property) c5b.prototype: c5b' } });
1110
edit.insert('y;');
12-
goTo.marker('2');
13-
verify.completionListContains('foo', '(method) c5b.foo(): void');
11+
verify.completions({ at: "2", includes: { name: "foo", text: '(method) c5b.foo(): void' } });

tests/cases/fourslash/augmentedTypesModule6.ts

+4-10
Original file line numberDiff line numberDiff line change
@@ -8,25 +8,19 @@
88
////var r2: m3f.I = r;
99
////r2./*6*/
1010

11-
goTo.marker('1');
12-
verify.completionListContains('I');
13-
verify.not.completionListContains('foo');
11+
verify.completions({ at: "1", includes: "I", excludes: "foo" });
1412
edit.insert('I;');
1513

16-
goTo.marker('2');
17-
verify.completionListContains('m3f');
14+
verify.completions({ at: "2", includes: "m3f" });
1815

1916
goTo.marker('3');
2017
verify.currentSignatureHelpIs('m3f(): m3f');
2118

2219
verify.quickInfoAt("4", "var r: m3f");
2320

24-
goTo.marker('5');
25-
verify.completionListContains('foo');
21+
verify.completions({ at: "5", includes: "foo" });
2622
edit.insert('foo(1)');
2723

28-
goTo.marker('6');
29-
verify.completionListContains('foo');
24+
verify.completions({ at: "6", includes: "foo" });
3025
edit.insert('foo(');
3126
verify.currentSignatureHelpIs('foo(): void');
32-

tests/cases/fourslash/cloduleAsBaseClass2.ts

+2-14
Original file line numberDiff line numberDiff line change
@@ -28,22 +28,10 @@
2828
////d./*1*/
2929
////D./*2*/
3030

31-
goTo.marker('1');
32-
verify.completionListContains('foo');
33-
verify.completionListContains('foo2');
34-
verify.not.completionListContains('bar');
35-
verify.not.completionListContains('bar2');
36-
verify.not.completionListContains('baz');
37-
verify.not.completionListContains('x');
31+
verify.completions({ at: "1", are: ["foo2", "foo"] });
3832
edit.insert('foo()');
3933

40-
goTo.marker('2');
41-
verify.not.completionListContains('foo');
42-
verify.not.completionListContains('foo2');
43-
verify.completionListContains('bar');
44-
verify.completionListContains('bar2');
45-
verify.completionListContains('baz');
46-
verify.completionListContains('x');
34+
verify.completions({ at: "2", includes: ["bar", "bar2", "baz", "x"], excludes: ["foo", "foo2"] });
4735
edit.insert('bar()');
4836

4937
verify.noErrors();

tests/cases/fourslash/cloduleTypeOf1.ts

+3-7
Original file line numberDiff line numberDiff line change
@@ -14,18 +14,14 @@
1414
//// }
1515
////}
1616

17-
goTo.marker('1');
18-
verify.completionListContains('f');
19-
verify.completionListContains('foo');
17+
verify.completions({ at: "1", includes: ["f", "foo"] });
2018
edit.insert('foo(1);');
2119

22-
goTo.marker('2');
23-
verify.completionListContains('x');
20+
verify.completions({ at: "2", includes: "x" });
2421

2522
verify.quickInfoAt("3", "(local var) r: C<number>");
2623

27-
goTo.marker('4');
28-
verify.completionListContains('x');
24+
verify.completions({ at: "4", includes: "x" });
2925
edit.insert('x;');
3026

3127
verify.quickInfoAt("5", "(local var) r2: number");

tests/cases/fourslash/commentsEnums.ts

+11-8
Original file line numberDiff line numberDiff line change
@@ -17,16 +17,19 @@ verify.quickInfos({
1717
4: "var x: Colors"
1818
});
1919

20-
goTo.marker('5');
21-
verify.completionListContains("Colors", "enum Colors", "Enum of colors");
20+
verify.completions({
21+
at: "5",
22+
includes: { name: "Colors", text: "enum Colors", documentation: "Enum of colors" },
23+
isNewIdentifierLocation: true,
24+
});
2225
verify.quickInfoIs("enum Colors", "Enum of colors");
2326

24-
goTo.marker('6');
25-
verify.completionListContains("Cornflower", "(enum member) Colors.Cornflower = 0", "Fancy name for 'blue'");
26-
verify.completionListContains("FancyPink", "(enum member) Colors.FancyPink = 1", "Fancy name for 'pink'");
27+
const completions = [
28+
{ name: "Cornflower", text: "(enum member) Colors.Cornflower = 0", documentation: "Fancy name for 'blue'" },
29+
{ name: "FancyPink", text: "(enum member) Colors.FancyPink = 1", documentation: "Fancy name for 'pink'" },
30+
];
31+
verify.completions({ at: "6", includes: completions });
2732
verify.quickInfoIs("(enum member) Colors.Cornflower = 0", "Fancy name for 'blue'");
2833

29-
goTo.marker('7');
30-
verify.completionListContains("Cornflower", "(enum member) Colors.Cornflower = 0", "Fancy name for 'blue'");
31-
verify.completionListContains("FancyPink", "(enum member) Colors.FancyPink = 1", "Fancy name for 'pink'");
34+
verify.completions({ at: "7", includes: completions });
3235
verify.quickInfoIs("(enum member) Colors.FancyPink = 1", "Fancy name for 'pink'");

tests/cases/fourslash/commentsImportDeclaration.ts

+16-9
Original file line numberDiff line numberDiff line change
@@ -29,13 +29,16 @@ verify.quickInfos({
2929
3: ['import extMod = require("./commentsImportDeclaration_file0")', "Import declaration"]
3030
});
3131

32-
goTo.marker('6');
33-
verify.completionListContains("m1", "namespace extMod.m1");
32+
verify.completions({ at: "6", are: [{ name: "m1", text: "namespace extMod.m1", documentation: "NamespaceComment" }] });
3433

35-
goTo.marker('7');
36-
verify.completionListContains("b", "var extMod.m1.b: number", "b's comment");
37-
verify.completionListContains("fooExport", "function extMod.m1.fooExport(): number", "exported function");
38-
verify.completionListContains("m2", "namespace extMod.m1.m2");
34+
verify.completions({
35+
at: "7",
36+
are: [
37+
{ name: "fooExport", text: "function extMod.m1.fooExport(): number", documentation: "exported function" },
38+
{ name: "b", text: "var extMod.m1.b: number", documentation: "b's comment" },
39+
{ name: "m2", text: "namespace extMod.m1.m2", documentation: "m2 comments" },
40+
]
41+
})
3942

4043
goTo.marker('8');
4144
verify.currentSignatureHelpDocCommentIs("exported function");
@@ -44,6 +47,10 @@ verify.quickInfos({
4447
9: "var newVar: extMod.m1.m2.c"
4548
});
4649

47-
goTo.marker('10');
48-
verify.completionListContains("c", "constructor extMod.m1.m2.c(): extMod.m1.m2.c", "");
49-
verify.completionListContains("i", "var extMod.m1.m2.i: extMod.m1.m2.c", "i");
50+
verify.completions({
51+
at: "10",
52+
are: [
53+
{ name: "c", text: "constructor extMod.m1.m2.c(): extMod.m1.m2.c" },
54+
{ name: "i", text: "var extMod.m1.m2.i: extMod.m1.m2.c", documentation: "i" },
55+
],
56+
});

tests/cases/fourslash/commentsVariables.ts

+29-18
Original file line numberDiff line numberDiff line change
@@ -43,16 +43,26 @@
4343

4444
verify.quickInfoAt("1", "var myVariable: number", "This is my variable");
4545

46-
goTo.marker('2');
47-
verify.completionListContains("myVariable", "var myVariable: number", "This is my variable");
48-
49-
goTo.marker('3');
50-
verify.completionListContains("myVariable", "var myVariable: number", "This is my variable");
51-
verify.completionListContains("d", "var d: number", "d variable");
52-
53-
goTo.marker('4');
54-
verify.completionListContains("foo", "function foo(): void", "foos comment");
55-
verify.completionListContains("fooVar", "var fooVar: () => void", "fooVar comment");
46+
verify.completions(
47+
{
48+
at: "2",
49+
includes: { name: "myVariable", text: "var myVariable: number", documentation: "This is my variable" },
50+
},
51+
{
52+
at: "3",
53+
includes: [
54+
{ name: "myVariable", text: "var myVariable: number", documentation: "This is my variable" },
55+
{ name: "d", text: "var d: number", documentation: "d variable" }
56+
],
57+
},
58+
{
59+
at: "4",
60+
includes: [
61+
{ name: "foo", text: "function foo(): void", documentation: "foos comment" },
62+
{ name: "fooVar", text: "var fooVar: () => void", documentation:"fooVar comment" },
63+
]
64+
},
65+
)
5666

5767
goTo.marker('5');
5868
verify.currentSignatureHelpDocCommentIs("foos comment");
@@ -62,9 +72,13 @@ goTo.marker('6');
6272
verify.currentSignatureHelpDocCommentIs("fooVar comment");
6373
verify.quickInfoAt("6q", "var fooVar: () => void", "fooVar comment");
6474

65-
goTo.marker('7');
66-
verify.completionListContains("foo", "function foo(): void", "foos comment");
67-
verify.completionListContains("fooVar", "var fooVar: () => void", "fooVar comment");
75+
verify.completions({
76+
at: "7",
77+
includes: [
78+
{ name: "foo", text: "function foo(): void", documentation: "foos comment" },
79+
{ name: "fooVar", text: "var fooVar: () => void", documentation:"fooVar comment" },
80+
],
81+
});
6882

6983
goTo.marker('8');
7084
verify.currentSignatureHelpDocCommentIs("foos comment");
@@ -77,11 +91,8 @@ verify.quickInfos({
7791
"9aq": ["var fooVar: () => void", "fooVar comment"]
7892
});
7993

80-
goTo.marker('10');
81-
verify.completionListContains("i", "var i: c", "instance comment");
82-
83-
goTo.marker('11');
84-
verify.completionListContains("i1_i", "var i1_i: i1", "interface instance comments");
94+
verify.completions({ at: "10", includes: { name: "i", text: "var i: c", documentation: "instance comment" } });
95+
verify.completions({ at: "11", includes: { name: "i1_i", text: "var i1_i: i1", documentation: "interface instance comments" } });
8596

8697
verify.quickInfos({
8798
12: ["var fooVar: () => void", "fooVar comment"],

tests/cases/fourslash/completionForStringLiteralNonrelativeImport10.ts

+3-11
Original file line numberDiff line numberDiff line change
@@ -17,19 +17,11 @@
1717
// @Filename: package.json
1818
//// { "dependencies": { "fake-module": "latest" } }
1919
// @Filename: node_modules/fake-module/ts.ts
20-
//// /*module1*/
20+
////
2121

2222
// @Filename: dir1/dir2/dir3/package.json
2323
//// { "dependencies": { "fake-module3": "latest" } }
2424
// @Filename: dir1/dir2/dir3/node_modules/fake-module3/ts.ts
25-
//// /*module3*/
25+
////
2626

27-
const kinds = ["import_as", "import_equals", "require"];
28-
29-
for (const kind of kinds) {
30-
goTo.marker(kind + "0");
31-
verify.completionListIsEmpty();
32-
33-
goTo.marker(kind + "1");
34-
verify.completionListIsEmpty();
35-
}
27+
verify.completions({ at: test.markerNames(), are: [], isNewIdentifierLocation: true });

tests/cases/fourslash/completionForStringLiteralNonrelativeImport11.ts

+12-14
Original file line numberDiff line numberDiff line change
@@ -21,18 +21,16 @@
2121
// @Filename: node_modules/module-from-node/index.ts
2222
//// /*module1*/
2323

24-
25-
2624
const kinds = ["import_as", "import_equals", "require"];
27-
28-
for (const kind of kinds) {
29-
goTo.marker(kind + "0");
30-
31-
verify.completionListContains("module");
32-
verify.not.completionListItemsCountIsGreaterThan(1);
33-
34-
goTo.marker(kind + "1");
35-
36-
verify.completionListContains("index");
37-
verify.not.completionListItemsCountIsGreaterThan(1);
38-
}
25+
verify.completions(
26+
{
27+
at: kinds.map(k => `${k}0`),
28+
are: "module",
29+
isNewIdentifierLocation: true,
30+
},
31+
{
32+
at: kinds.map(k => `${k}1`),
33+
are: "index",
34+
isNewIdentifierLocation: true,
35+
},
36+
)

tests/cases/fourslash/completionForStringLiteralNonrelativeImport12.ts

+5-11
Original file line numberDiff line numberDiff line change
@@ -15,14 +15,8 @@
1515
//// "peerDependencies": { "peer-module": "latest" }
1616
//// }
1717

18-
const kinds = ["import_as", "import_equals", "require"];
19-
20-
for (const kind of kinds) {
21-
goTo.marker(kind + "0");
22-
23-
verify.completionListContains("module");
24-
verify.completionListContains("dev-module");
25-
verify.completionListContains("optional-module");
26-
verify.completionListContains("peer-module");
27-
verify.not.completionListItemsCountIsGreaterThan(4);
28-
}
18+
verify.completions({
19+
at: test.markerNames(),
20+
are: ["module", "dev-module", "peer-module", "optional-module"],
21+
isNewIdentifierLocation: true,
22+
});

tests/cases/fourslash/completionForStringLiteralNonrelativeImport4.ts

+8-13
Original file line numberDiff line numberDiff line change
@@ -10,25 +10,20 @@
1010
// @Filename: package.json
1111
//// { "dependencies": { "fake-module": "latest" } }
1212
// @Filename: node_modules/fake-module/ts.ts
13-
//// /*module1*/
13+
////
1414

1515
// @Filename: dir1/package.json
1616
//// { "dependencies": { "fake-module2": "latest" } }
1717
// @Filename: dir1/node_modules/fake-module2/index.ts
18-
//// /*module2*/
18+
////
1919

2020
// @Filename: dir1/dir2/dir3/package.json
2121
//// { "dependencies": { "fake-module3": "latest" } }
2222
// @Filename: dir1/dir2/dir3/node_modules/fake-module3/ts.ts
23-
//// /*module3*/
23+
////
2424

25-
const kinds = ["import_as", "import_equals", "require"];
26-
27-
for (const kind of kinds) {
28-
goTo.marker(kind + "0");
29-
30-
verify.completionListContains("fake-module");
31-
verify.completionListContains("fake-module2");
32-
verify.completionListContains("fake-module3");
33-
verify.not.completionListItemsCountIsGreaterThan(3);
34-
}
25+
verify.completions({
26+
at: test.markerNames(),
27+
are: ["fake-module3", "fake-module2", "fake-module"],
28+
isNewIdentifierLocation: true,
29+
});

tests/cases/fourslash/completionForStringLiteralNonrelativeImport5.ts

+13-19
Original file line numberDiff line numberDiff line change
@@ -16,24 +16,18 @@
1616

1717
// @Filename: ambientModules.d.ts
1818
//// declare module "ambientModule" {}
19-
//// declare module "otherAmbientModule" {} /*dummy0*/
19+
//// declare module "otherAmbientModule" {}
2020

2121
// @Filename: ambientModules2.d.ts
22-
//// declare module "otherOtherAmbientModule" {} /*dummy1*/
23-
24-
const kinds = ["import_as", "import_equals", "require"];
25-
26-
for (const kind of kinds) {
27-
goTo.marker(kind + "0");
28-
29-
verify.completionListContains("ambientModule");
30-
verify.completionListContains("otherAmbientModule");
31-
verify.completionListContains("otherOtherAmbientModule");
32-
verify.not.completionListItemsCountIsGreaterThan(3);
33-
34-
goTo.marker(kind + "1");
35-
36-
verify.completionListContains("ambientModule");
37-
verify.not.completionListItemsCountIsGreaterThan(1);
38-
}
39-
22+
//// declare module "otherOtherAmbientModule" {}
23+
24+
verify.completions({
25+
at: test.markerNames().filter(k => k.endsWith("0")),
26+
are: ["ambientModule", "otherAmbientModule", "otherOtherAmbientModule"],
27+
isNewIdentifierLocation: true,
28+
});
29+
verify.completions({
30+
at: test.markerNames().filter(k => !k.endsWith("0")),
31+
are: "ambientModule",
32+
isNewIdentifierLocation: true,
33+
});

tests/cases/fourslash/completionForStringLiteralNonrelativeImport7.ts

+6-12
Original file line numberDiff line numberDiff line change
@@ -15,16 +15,10 @@
1515
// @Filename: package.json
1616
//// { "dependencies": { "module-from-node": "latest" } }
1717
// @Filename: node_modules/module-from-node/index.ts
18-
//// /*module1*/
18+
////
1919

20-
21-
22-
const kinds = ["import_as", "import_equals", "require"];
23-
24-
for (const kind of kinds) {
25-
goTo.marker(kind + "0");
26-
27-
verify.completionListContains("module");
28-
verify.completionListContains("module-from-node");
29-
verify.not.completionListItemsCountIsGreaterThan(2);
30-
}
20+
verify.completions({
21+
at: test.markerNames(),
22+
are: ["module", "module-from-node"],
23+
isNewIdentifierLocation: true,
24+
});

0 commit comments

Comments
 (0)