Skip to content

Commit a9efe52

Browse files
authored
Move fourslash test utils into imported package (#1473)
1 parent cb8428d commit a9efe52

File tree

754 files changed

+17148
-29861
lines changed

Some content is hidden

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

754 files changed

+17148
-29861
lines changed

internal/fourslash/_scripts/convertFourslash.mts

Lines changed: 41 additions & 27 deletions
Original file line numberDiff line numberDiff line change
@@ -35,7 +35,6 @@ export function main() {
3535
fs.rmSync(outputDir, { recursive: true, force: true });
3636
fs.mkdirSync(outputDir, { recursive: true });
3737

38-
generateHelperFile();
3938
parseTypeScriptFiles(getFailingTests(), stradaFourslashPath);
4039
console.log(unparsedFiles.join("\n"));
4140
const gofmt = which.sync("go");
@@ -317,25 +316,25 @@ function parseVerifyCompletionsArgs(args: readonly ts.Expression[]): VerifyCompl
317316
}
318317

319318
const completionConstants = new Map([
320-
["completion.globals", "completionGlobals"],
321-
["completion.globalTypes", "completionGlobalTypes"],
322-
["completion.classElementKeywords", "completionClassElementKeywords"],
323-
["completion.classElementInJsKeywords", "completionClassElementInJSKeywords"],
324-
["completion.constructorParameterKeywords", "completionConstructorParameterKeywords"],
325-
["completion.functionMembersWithPrototype", "completionFunctionMembersWithPrototype"],
326-
["completion.functionMembers", "completionFunctionMembers"],
327-
["completion.typeKeywords", "completionTypeKeywords"],
328-
["completion.undefinedVarEntry", "completionUndefinedVarItem"],
329-
["completion.typeAssertionKeywords", "completionTypeAssertionKeywords"],
319+
["completion.globals", "CompletionGlobals"],
320+
["completion.globalTypes", "CompletionGlobalTypes"],
321+
["completion.classElementKeywords", "CompletionClassElementKeywords"],
322+
["completion.classElementInJsKeywords", "CompletionClassElementInJSKeywords"],
323+
["completion.constructorParameterKeywords", "CompletionConstructorParameterKeywords"],
324+
["completion.functionMembersWithPrototype", "CompletionFunctionMembersWithPrototype"],
325+
["completion.functionMembers", "CompletionFunctionMembers"],
326+
["completion.typeKeywords", "CompletionTypeKeywords"],
327+
["completion.undefinedVarEntry", "CompletionUndefinedVarItem"],
328+
["completion.typeAssertionKeywords", "CompletionTypeAssertionKeywords"],
330329
]);
331330

332331
const completionPlus = new Map([
333-
["completion.globalsPlus", "completionGlobalsPlus"],
334-
["completion.globalTypesPlus", "completionGlobalTypesPlus"],
335-
["completion.functionMembersPlus", "completionFunctionMembersPlus"],
336-
["completion.functionMembersWithPrototypePlus", "completionFunctionMembersWithPrototypePlus"],
337-
["completion.globalsInJsPlus", "completionGlobalsInJSPlus"],
338-
["completion.typeKeywordsPlus", "completionTypeKeywordsPlus"],
332+
["completion.globalsPlus", "CompletionGlobalsPlus"],
333+
["completion.globalTypesPlus", "CompletionGlobalTypesPlus"],
334+
["completion.functionMembersPlus", "CompletionFunctionMembersPlus"],
335+
["completion.functionMembersWithPrototypePlus", "CompletionFunctionMembersWithPrototypePlus"],
336+
["completion.globalsInJsPlus", "CompletionGlobalsInJSPlus"],
337+
["completion.typeKeywordsPlus", "CompletionTypeKeywordsPlus"],
339338
]);
340339

341340
function parseVerifyCompletionArg(arg: ts.Expression): VerifyCompletionsCmd | undefined {
@@ -558,7 +557,7 @@ function parseExpectedCompletionItem(expr: ts.Expression): string | undefined {
558557
if (!result) {
559558
return undefined;
560559
}
561-
itemProps.push(`SortText: ptrTo(string(${result})),`);
560+
itemProps.push(`SortText: PtrTo(string(${result})),`);
562561
if (result === "ls.SortTextOptionalMember") {
563562
isOptional = true;
564563
}
@@ -586,15 +585,15 @@ function parseExpectedCompletionItem(expr: ts.Expression): string | undefined {
586585
break;
587586
case "isRecommended":
588587
if (init.kind === ts.SyntaxKind.TrueKeyword) {
589-
itemProps.push(`Preselect: ptrTo(true),`);
588+
itemProps.push(`Preselect: PtrTo(true),`);
590589
}
591590
break;
592591
case "kind":
593592
const kind = parseKind(init);
594593
if (!kind) {
595594
return undefined;
596595
}
597-
itemProps.push(`Kind: ptrTo(${kind}),`);
596+
itemProps.push(`Kind: PtrTo(${kind}),`);
598597
break;
599598
case "kindModifiers":
600599
const modifiers = parseKindModifiers(init);
@@ -605,7 +604,7 @@ function parseExpectedCompletionItem(expr: ts.Expression): string | undefined {
605604
break;
606605
case "text":
607606
if (ts.isStringLiteralLike(init)) {
608-
itemProps.push(`Detail: ptrTo(${getGoStringLiteral(init.text)}),`);
607+
itemProps.push(`Detail: PtrTo(${getGoStringLiteral(init.text)}),`);
609608
}
610609
else {
611610
console.error(`Expected string literal for text, got ${init.getText()}`);
@@ -645,8 +644,8 @@ function parseExpectedCompletionItem(expr: ts.Expression): string | undefined {
645644
filterText ??= name;
646645
name += "?";
647646
}
648-
if (filterText) itemProps.unshift(`FilterText: ptrTo(${getGoStringLiteral(filterText)}),`);
649-
if (insertText) itemProps.unshift(`InsertText: ptrTo(${getGoStringLiteral(insertText)}),`);
647+
if (filterText) itemProps.unshift(`FilterText: PtrTo(${getGoStringLiteral(filterText)}),`);
648+
if (insertText) itemProps.unshift(`InsertText: PtrTo(${getGoStringLiteral(insertText)}),`);
650649
itemProps.unshift(`Label: ${getGoStringLiteral(name!)},`);
651650
return `&lsproto.CompletionItem{\n${itemProps.join("\n")}}`;
652651
}
@@ -875,12 +874,12 @@ function generateVerifyCompletions({ marker, args, isNewIdentifierLocation }: Ve
875874
if (args?.exact) expected.push(`Exact: ${args.exact},`);
876875
if (args?.unsorted) expected.push(`Unsorted: ${args.unsorted},`);
877876
// !!! isIncomplete
878-
const commitCharacters = isNewIdentifierLocation ? "[]string{}" : "defaultCommitCharacters";
877+
const commitCharacters = isNewIdentifierLocation ? "[]string{}" : "DefaultCommitCharacters";
879878
expectedList = `&fourslash.CompletionsExpectedList{
880879
IsIncomplete: false,
881880
ItemDefaults: &fourslash.CompletionsExpectedItemDefaults{
882881
CommitCharacters: &${commitCharacters},
883-
EditRange: ignored,
882+
EditRange: Ignored,
884883
},
885884
Items: &fourslash.CompletionsExpectedItems{
886885
${expected.join("\n")}
@@ -945,6 +944,9 @@ function generateGoTest(failingTests: Set<string>, test: GoTest): string {
945944
if (commands.includes("lsproto.")) {
946945
imports.push(`"github.com/microsoft/typescript-go/internal/lsp/lsproto"`);
947946
}
947+
if (usesHelper(commands)) {
948+
imports.push(`. "github.com/microsoft/typescript-go/internal/fourslash/tests/util"`);
949+
}
948950
imports.push(`"github.com/microsoft/typescript-go/internal/testutil"`);
949951
const template = `package fourslash_test
950952
@@ -965,8 +967,20 @@ func Test${testName}(t *testing.T) {
965967
return template;
966968
}
967969

968-
function generateHelperFile() {
969-
fs.copyFileSync(helperFilePath, path.join(outputDir, "util_test.go"));
970+
function usesHelper(goTxt: string): boolean {
971+
for (const [_, constant] of completionConstants) {
972+
if (goTxt.includes(constant)) {
973+
return true;
974+
}
975+
}
976+
for (const [_, constant] of completionPlus) {
977+
if (goTxt.includes(constant)) {
978+
return true;
979+
}
980+
}
981+
return goTxt.includes("Ignored")
982+
|| goTxt.includes("DefaultCommitCharacters")
983+
|| goTxt.includes("PtrTo");
970984
}
971985

972986
if (url.fileURLToPath(import.meta.url) == process.argv[1]) {

internal/fourslash/tests/basicBackspace_test.go

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -4,6 +4,7 @@ import (
44
"testing"
55

66
"github.com/microsoft/typescript-go/internal/fourslash"
7+
. "github.com/microsoft/typescript-go/internal/fourslash/tests/util"
78
"github.com/microsoft/typescript-go/internal/testutil"
89
)
910

@@ -21,7 +22,7 @@ p./*a*/`
2122
f.VerifyCompletions(t, "a", &fourslash.CompletionsExpectedList{
2223
IsIncomplete: false,
2324
ItemDefaults: &fourslash.CompletionsExpectedItemDefaults{
24-
CommitCharacters: &defaultCommitCharacters,
25+
CommitCharacters: &DefaultCommitCharacters,
2526
},
2627
Items: &fourslash.CompletionsExpectedItems{
2728
Includes: []fourslash.CompletionsExpectedItem{"y"},
@@ -32,7 +33,7 @@ p./*a*/`
3233
f.VerifyCompletions(t, "a", &fourslash.CompletionsExpectedList{
3334
IsIncomplete: false,
3435
ItemDefaults: &fourslash.CompletionsExpectedItemDefaults{
35-
CommitCharacters: &defaultCommitCharacters,
36+
CommitCharacters: &DefaultCommitCharacters,
3637
},
3738
Items: &fourslash.CompletionsExpectedItems{
3839
Excludes: []string{"y"},

internal/fourslash/tests/basicClassElementKeywords_test.go

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -4,6 +4,7 @@ import (
44
"testing"
55

66
"github.com/microsoft/typescript-go/internal/fourslash"
7+
. "github.com/microsoft/typescript-go/internal/fourslash/tests/util"
78
"github.com/microsoft/typescript-go/internal/testutil"
89
)
910

@@ -20,7 +21,7 @@ func TestBasicClassElementKeywords(t *testing.T) {
2021
CommitCharacters: &[]string{},
2122
},
2223
Items: &fourslash.CompletionsExpectedItems{
23-
Exact: completionClassElementKeywords,
24+
Exact: CompletionClassElementKeywords,
2425
},
2526
})
2627
}

internal/fourslash/tests/basicEdit_test.go

Lines changed: 4 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -4,6 +4,7 @@ import (
44
"testing"
55

66
"github.com/microsoft/typescript-go/internal/fourslash"
7+
. "github.com/microsoft/typescript-go/internal/fourslash/tests/util"
78
"github.com/microsoft/typescript-go/internal/ls"
89
"github.com/microsoft/typescript-go/internal/lsp/lsproto"
910
"github.com/microsoft/typescript-go/internal/testutil"
@@ -26,14 +27,14 @@ p/*a*/`
2627
f.VerifyCompletions(t, nil, &fourslash.CompletionsExpectedList{
2728
IsIncomplete: false,
2829
ItemDefaults: &fourslash.CompletionsExpectedItemDefaults{
29-
CommitCharacters: &defaultCommitCharacters,
30+
CommitCharacters: &DefaultCommitCharacters,
3031
},
3132
Items: &fourslash.CompletionsExpectedItems{
3233
Exact: []fourslash.CompletionsExpectedItem{
3334
&lsproto.CompletionItem{
3435
Label: "x",
35-
Kind: ptrTo(lsproto.CompletionItemKindField),
36-
SortText: ptrTo(string(ls.SortTextLocationPriority)),
36+
Kind: PtrTo(lsproto.CompletionItemKindField),
37+
SortText: PtrTo(string(ls.SortTextLocationPriority)),
3738
},
3839
"y",
3940
},

internal/fourslash/tests/basicGlobalCompletions_test.go

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -4,6 +4,7 @@ import (
44
"testing"
55

66
"github.com/microsoft/typescript-go/internal/fourslash"
7+
. "github.com/microsoft/typescript-go/internal/fourslash/tests/util"
78
"github.com/microsoft/typescript-go/internal/testutil"
89
)
910

@@ -15,10 +16,10 @@ func TestBasicGlobalCompletions(t *testing.T) {
1516
f.VerifyCompletions(t, "1", &fourslash.CompletionsExpectedList{
1617
IsIncomplete: false,
1718
ItemDefaults: &fourslash.CompletionsExpectedItemDefaults{
18-
CommitCharacters: &defaultCommitCharacters,
19+
CommitCharacters: &DefaultCommitCharacters,
1920
},
2021
Items: &fourslash.CompletionsExpectedItems{
21-
Exact: completionGlobals,
22+
Exact: CompletionGlobals,
2223
},
2324
})
2425
}

internal/fourslash/tests/basicInterfaceMembers_test.go

Lines changed: 4 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -4,6 +4,7 @@ import (
44
"testing"
55

66
"github.com/microsoft/typescript-go/internal/fourslash"
7+
. "github.com/microsoft/typescript-go/internal/fourslash/tests/util"
78
"github.com/microsoft/typescript-go/internal/ls"
89
"github.com/microsoft/typescript-go/internal/lsp/lsproto"
910
"github.com/microsoft/typescript-go/internal/testutil"
@@ -23,14 +24,14 @@ p./*a*/`
2324
f.VerifyCompletions(t, "a", &fourslash.CompletionsExpectedList{
2425
IsIncomplete: false,
2526
ItemDefaults: &fourslash.CompletionsExpectedItemDefaults{
26-
CommitCharacters: &defaultCommitCharacters,
27+
CommitCharacters: &DefaultCommitCharacters,
2728
},
2829
Items: &fourslash.CompletionsExpectedItems{
2930
Exact: []fourslash.CompletionsExpectedItem{
3031
&lsproto.CompletionItem{
3132
Label: "x",
32-
Kind: ptrTo(lsproto.CompletionItemKindField),
33-
SortText: ptrTo(string(ls.SortTextLocationPriority)),
33+
Kind: PtrTo(lsproto.CompletionItemKindField),
34+
SortText: PtrTo(string(ls.SortTextLocationPriority)),
3435
},
3536
"y",
3637
},

internal/fourslash/tests/basicMultifileCompletions_test.go

Lines changed: 4 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -4,6 +4,7 @@ import (
44
"testing"
55

66
"github.com/microsoft/typescript-go/internal/fourslash"
7+
. "github.com/microsoft/typescript-go/internal/fourslash/tests/util"
78
"github.com/microsoft/typescript-go/internal/ls"
89
"github.com/microsoft/typescript-go/internal/lsp/lsproto"
910
"github.com/microsoft/typescript-go/internal/testutil"
@@ -22,14 +23,14 @@ const test = foo./*1*/`
2223
f.VerifyCompletions(t, "1", &fourslash.CompletionsExpectedList{
2324
IsIncomplete: false,
2425
ItemDefaults: &fourslash.CompletionsExpectedItemDefaults{
25-
CommitCharacters: &defaultCommitCharacters,
26+
CommitCharacters: &DefaultCommitCharacters,
2627
},
2728
Items: &fourslash.CompletionsExpectedItems{
2829
Includes: []fourslash.CompletionsExpectedItem{
2930
&lsproto.CompletionItem{
3031
Label: "bar",
31-
Kind: ptrTo(lsproto.CompletionItemKindField),
32-
SortText: ptrTo(string(ls.SortTextLocationPriority)),
32+
Kind: PtrTo(lsproto.CompletionItemKindField),
33+
SortText: PtrTo(string(ls.SortTextLocationPriority)),
3334
},
3435
},
3536
},

internal/fourslash/tests/basicReplaceLine_test.go

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -4,6 +4,7 @@ import (
44
"testing"
55

66
"github.com/microsoft/typescript-go/internal/fourslash"
7+
. "github.com/microsoft/typescript-go/internal/fourslash/tests/util"
78
"github.com/microsoft/typescript-go/internal/testutil"
89
)
910

@@ -21,7 +22,7 @@ p./*a*/`
2122
f.VerifyCompletions(t, "a", &fourslash.CompletionsExpectedList{
2223
IsIncomplete: false,
2324
ItemDefaults: &fourslash.CompletionsExpectedItemDefaults{
24-
CommitCharacters: &defaultCommitCharacters,
25+
CommitCharacters: &DefaultCommitCharacters,
2526
},
2627
Items: &fourslash.CompletionsExpectedItems{
2728
Includes: []fourslash.CompletionsExpectedItem{"y"},
@@ -31,7 +32,7 @@ p./*a*/`
3132
f.VerifyCompletions(t, "a", &fourslash.CompletionsExpectedList{
3233
IsIncomplete: false,
3334
ItemDefaults: &fourslash.CompletionsExpectedItemDefaults{
34-
CommitCharacters: &defaultCommitCharacters,
35+
CommitCharacters: &DefaultCommitCharacters,
3536
},
3637
Items: &fourslash.CompletionsExpectedItems{
3738
Excludes: []string{"y"},

internal/fourslash/tests/completionAfterCallExpression_test.go

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -4,6 +4,7 @@ import (
44
"testing"
55

66
"github.com/microsoft/typescript-go/internal/fourslash"
7+
. "github.com/microsoft/typescript-go/internal/fourslash/tests/util"
78
"github.com/microsoft/typescript-go/internal/testutil"
89
)
910

@@ -17,8 +18,8 @@ func TestCompletionAfterCallExpression(t *testing.T) {
1718
f.VerifyCompletions(t, "", &fourslash.CompletionsExpectedList{
1819
IsIncomplete: false,
1920
ItemDefaults: &fourslash.CompletionsExpectedItemDefaults{
20-
CommitCharacters: &defaultCommitCharacters,
21-
EditRange: ignored,
21+
CommitCharacters: &DefaultCommitCharacters,
22+
EditRange: Ignored,
2223
},
2324
Items: &fourslash.CompletionsExpectedItems{
2425
Includes: []fourslash.CompletionsExpectedItem{

internal/fourslash/tests/completionDetailSignature_test.go

Lines changed: 5 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -4,6 +4,7 @@ import (
44
"testing"
55

66
"github.com/microsoft/typescript-go/internal/fourslash"
7+
. "github.com/microsoft/typescript-go/internal/fourslash/tests/util"
78
"github.com/microsoft/typescript-go/internal/ls"
89
"github.com/microsoft/typescript-go/internal/lsp/lsproto"
910
"github.com/microsoft/typescript-go/internal/testutil"
@@ -25,15 +26,15 @@ function foo(x: any): any {
2526
f.VerifyCompletions(t, "a", &fourslash.CompletionsExpectedList{
2627
IsIncomplete: false,
2728
ItemDefaults: &fourslash.CompletionsExpectedItemDefaults{
28-
CommitCharacters: &defaultCommitCharacters,
29+
CommitCharacters: &DefaultCommitCharacters,
2930
},
3031
Items: &fourslash.CompletionsExpectedItems{
3132
Includes: []fourslash.CompletionsExpectedItem{
3233
&lsproto.CompletionItem{
3334
Label: "foo",
34-
Kind: ptrTo(lsproto.CompletionItemKindFunction),
35-
SortText: ptrTo(string(ls.SortTextLocationPriority)),
36-
Detail: ptrTo("function foo(x: string): string\nfunction foo(x: number): number"),
35+
Kind: PtrTo(lsproto.CompletionItemKindFunction),
36+
SortText: PtrTo(string(ls.SortTextLocationPriority)),
37+
Detail: PtrTo("function foo(x: string): string\nfunction foo(x: number): number"),
3738
},
3839
},
3940
},

0 commit comments

Comments
 (0)