Skip to content

Commit 91eaa91

Browse files
committed
Split out generator into its own project.
1 parent b2b8b5d commit 91eaa91

32 files changed

+248
-107
lines changed

.vscode/launch.json

Lines changed: 26 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -153,6 +153,31 @@
153153
],
154154
"preLaunchTask": "buildDev"
155155
},
156+
{
157+
"name": "Launch slnWithGenerator Workspace Tests",
158+
"type": "extensionHost",
159+
"request": "launch",
160+
"runtimeExecutable": "${execPath}",
161+
"args": [
162+
"--disable-extensions",
163+
"${workspaceRoot}/test/integrationTests/testAssets/slnWithGenerator",
164+
"--extensionDevelopmentPath=${workspaceRoot}",
165+
"--extensionTestsPath=${workspaceRoot}/out/test/integrationTests"
166+
],
167+
"env": {
168+
"CODE_WORKSPACE_ROOT": "${workspaceRoot}",
169+
"CODE_TESTS_PATH": "${workspaceRoot}/out/test/integrationTests",
170+
"CODE_TESTS_WORKSPACE": "${workspaceRoot}/test/integrationTests/testAssets/slnWithGenerator",
171+
"CODE_EXTENSIONS_PATH": "${workspaceRoot}",
172+
"OSVC_SUITE": "slnWithGenerator"
173+
},
174+
"stopOnEntry": false,
175+
"sourceMaps": true,
176+
"outFiles": [
177+
"${workspaceRoot}/dist/*.js"
178+
],
179+
"preLaunchTask": "buildDev"
180+
},
156181
{
157182
"type": "node",
158183
"request": "launch",
@@ -169,4 +194,4 @@
169194
"cwd": "${workspaceFolder}"
170195
}
171196
]
172-
}
197+
}

test/integrationTests/advisor.integration.test.ts

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -7,7 +7,7 @@ import * as vscode from 'vscode';
77

88
import { expect } from 'chai';
99
import * as path from 'path';
10-
import { activateCSharpExtension, isRazorWorkspace } from './integrationHelpers';
10+
import { activateCSharpExtension, isRazorWorkspace, isSlnWithGenerator } from './integrationHelpers';
1111
import testAssetWorkspace from './testAssets/testAssetWorkspace';
1212

1313
import { Advisor } from '../../src/features/diagnosticsProvider';
@@ -26,7 +26,7 @@ suite(`Advisor ${testAssetWorkspace.description}`, function () {
2626

2727
suiteSetup(async function () {
2828
// These tests don't run on the BasicRazorApp2_1 solution
29-
if (isRazorWorkspace(vscode.workspace)) {
29+
if (isRazorWorkspace(vscode.workspace) || isSlnWithGenerator(vscode.workspace)) {
3030
this.skip();
3131
}
3232

@@ -84,4 +84,4 @@ suite(`Advisor ${testAssetWorkspace.description}`, function () {
8484

8585
expect(advisor.shouldValidateFiles()).to.be.true;
8686
});
87-
});
87+
});

test/integrationTests/codeActionRename.integration.test.ts

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -6,7 +6,7 @@
66
import * as vscode from 'vscode';
77

88
import { should, expect } from 'chai';
9-
import { activateCSharpExtension, isRazorWorkspace } from './integrationHelpers';
9+
import { activateCSharpExtension, isRazorWorkspace, isSlnWithGenerator } from './integrationHelpers';
1010
import testAssetWorkspace from './testAssets/testAssetWorkspace';
1111
import * as path from 'path';
1212
import { assertWithPoll } from './poll';
@@ -22,7 +22,7 @@ suite(`Code Action Rename ${testAssetWorkspace.description}`, function () {
2222
should();
2323

2424
// These tests don't run on the BasicRazorApp2_1 solution
25-
if (isRazorWorkspace(vscode.workspace)) {
25+
if (isRazorWorkspace(vscode.workspace) || isSlnWithGenerator(vscode.workspace)) {
2626
this.skip();
2727
}
2828

@@ -51,4 +51,4 @@ suite(`Code Action Rename ${testAssetWorkspace.description}`, function () {
5151

5252
await assertWithPoll(() => { }, 15 * 1000, 500, _ => expect(vscode.window.activeTextEditor.document.fileName).contains("C.cs"));
5353
});
54-
});
54+
});

test/integrationTests/codeLensProvider.integration.test.ts

Lines changed: 7 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -7,7 +7,7 @@ import * as vscode from 'vscode';
77
import * as path from 'path';
88

99
import { should, expect } from 'chai';
10-
import { activateCSharpExtension } from './integrationHelpers';
10+
import { activateCSharpExtension, isSlnWithCsproj, isSlnWithGenerator } from './integrationHelpers';
1111
import testAssetWorkspace from './testAssets/testAssetWorkspace';
1212

1313
const chai = require('chai');
@@ -18,6 +18,10 @@ suite(`CodeLensProvider: ${testAssetWorkspace.description}`, function () {
1818
let fileUri: vscode.Uri;
1919

2020
suiteSetup(async function () {
21+
if (isSlnWithGenerator(vscode.workspace)) {
22+
this.skip();
23+
}
24+
2125
should();
2226
await activateCSharpExtension();
2327
await testAssetWorkspace.restore();
@@ -67,7 +71,7 @@ suite(`CodeLensProvider options: ${testAssetWorkspace.description}`, function ()
6771
should();
6872

6973
// These tests only run on the slnWithCsproj solution
70-
if (vscode.workspace.workspaceFolders[0].uri.fsPath.split(path.sep).pop() !== 'slnWithCsproj') {
74+
if (!isSlnWithCsproj(vscode.workspace)) {
7175
this.skip();
7276
}
7377
else {
@@ -132,4 +136,4 @@ suite(`CodeLensProvider options: ${testAssetWorkspace.description}`, function ()
132136

133137
async function GetCodeLenses(fileUri: vscode.Uri, resolvedItemCount?: number) {
134138
return <vscode.CodeLens[]>await vscode.commands.executeCommand("vscode.executeCodeLensProvider", fileUri, resolvedItemCount);
135-
}
139+
}

test/integrationTests/completionProvider.integration.test.ts

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -8,14 +8,14 @@ import * as vscode from 'vscode';
88
import testAssetWorkspace from "./testAssets/testAssetWorkspace";
99
import * as path from "path";
1010
import { expect } from "chai";
11-
import { activateCSharpExtension, isRazorWorkspace } from "./integrationHelpers";
11+
import { activateCSharpExtension, isRazorWorkspace, isSlnWithGenerator } from "./integrationHelpers";
1212

1313
suite(`${OmniSharpCompletionProvider.name}: Returns the completion items`, () => {
1414
let fileUri: vscode.Uri;
1515

1616
suiteSetup(async function () {
1717
// These tests don't run on the BasicRazorApp2_1 solution
18-
if (isRazorWorkspace(vscode.workspace)) {
18+
if (isRazorWorkspace(vscode.workspace) || isSlnWithGenerator(vscode.workspace)) {
1919
this.skip();
2020
}
2121

test/integrationTests/definitionProvider.test.ts

Lines changed: 2 additions & 45 deletions
Original file line numberDiff line numberDiff line change
@@ -8,15 +8,14 @@ import CSharpDefinitionProvider from "../../src/features/definitionProvider";
88
import * as path from "path";
99
import testAssetWorkspace from "./testAssets/testAssetWorkspace";
1010
import { expect } from "chai";
11-
import { activateCSharpExtension, isRazorWorkspace, isSlnWithCsproj, restartOmniSharpServer } from './integrationHelpers';
12-
import { assertWithPoll } from "./poll";
11+
import { activateCSharpExtension, isRazorWorkspace, isSlnWithGenerator, restartOmniSharpServer } from './integrationHelpers';
1312

1413
suite(`${CSharpDefinitionProvider.name}: ${testAssetWorkspace.description}`, () => {
1514
let fileUri: vscode.Uri;
1615

1716
suiteSetup(async function () {
1817
// These tests don't run on the BasicRazorApp2_1 solution
19-
if (isRazorWorkspace(vscode.workspace)) {
18+
if (isRazorWorkspace(vscode.workspace) || isSlnWithGenerator(vscode.workspace)) {
2019
this.skip();
2120
}
2221

@@ -60,48 +59,6 @@ suite(`${CSharpDefinitionProvider.name}: ${testAssetWorkspace.description}`, ()
6059
expect(definitionList[1].uri.path).to.contain("definition.cs");
6160
});
6261

63-
test("Generated file returns definitions and adds source", async () => {
64-
if (!isSlnWithCsproj(vscode.workspace)) {
65-
return;
66-
}
67-
68-
const projectDirectory = testAssetWorkspace.projects[0].projectDirectoryPath;
69-
const generatorTriggerUri = vscode.Uri.file(path.join(projectDirectory, 'GeneratorTrigger.cs'));
70-
const textStart = new vscode.Position(11, 41);
71-
await vscode.commands.executeCommand('vscode.open', generatorTriggerUri);
72-
73-
// // We need to do a full build in order to get the source generator built and ready to run, or tests will fail
74-
// await vscode.commands.executeCommand("dotnet.generateAssets", 0);
75-
// await sleep(100);
76-
// const tasks = await vscode.tasks.fetchTasks();
77-
// const task = (tasks).filter(task => task.name === 'build')[0];
78-
// expect(task).to.not.be.undefined;
79-
// await vscode.tasks.executeTask(task);
80-
// await restartOmniSharpServer();
81-
82-
const definitionList = <vscode.Location[]>(await vscode.commands.executeCommand("vscode.executeDefinitionProvider", generatorTriggerUri, textStart));
83-
expect(definitionList.length).to.be.equal(1);
84-
expect(definitionList[0]).to.exist;
85-
expect(definitionList[0].uri.path).to.contain("GeneratedCode.cs");
86-
87-
const generatedCodeUri = definitionList[0].uri;
88-
let generatedCodeDocument = await vscode.workspace.openTextDocument(generatedCodeUri);
89-
expect(generatedCodeDocument.getText()).contains("Hello world!");
90-
expect(generatedCodeDocument.getText()).does.not.contain("Goodbye");
91-
92-
await vscode.commands.executeCommand('vscode.open', generatorTriggerUri);
93-
const textEdit = new vscode.WorkspaceEdit();
94-
textEdit.replace(generatorTriggerUri, new vscode.Range(new vscode.Position(9, 27), new vscode.Position(9, 38)), "Goodbye");
95-
expect(await vscode.workspace.applyEdit(textEdit)).to.be.true;
96-
97-
await vscode.commands.executeCommand('vscode.open', generatedCodeUri);
98-
await assertWithPoll(() => { }, 15 * 1000, 500, _ => {
99-
const documentText = vscode.window.activeTextEditor.document.getText();
100-
expect(documentText).does.not.contain("Hello world!");
101-
expect(documentText).contains("Goodbye");
102-
});
103-
});
104-
10562
suiteTeardown(async () => {
10663
await testAssetWorkspace.cleanupWorkspace();
10764
});

test/integrationTests/diagnostics.integration.test.ts

Lines changed: 5 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -7,7 +7,7 @@ import * as vscode from 'vscode';
77
import * as path from 'path';
88

99
import { should, expect } from 'chai';
10-
import { activateCSharpExtension, isRazorWorkspace, restartOmniSharpServer } from './integrationHelpers';
10+
import { activateCSharpExtension, isRazorWorkspace, isSlnWithGenerator, restartOmniSharpServer } from './integrationHelpers';
1111
import testAssetWorkspace from './testAssets/testAssetWorkspace';
1212
import { poll, assertWithPoll, pollDoesNotHappen } from './poll';
1313

@@ -29,6 +29,10 @@ suite(`DiagnosticProvider: ${testAssetWorkspace.description}`, function () {
2929
suiteSetup(async function () {
3030
should();
3131

32+
if (isSlnWithGenerator(vscode.workspace)) {
33+
this.skip();
34+
}
35+
3236
const activation = await activateCSharpExtension();
3337
await testAssetWorkspace.restoreAndWait(activation);
3438

test/integrationTests/documentSymbolProvider.integration.test.ts

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -7,7 +7,7 @@ import * as vscode from 'vscode';
77
import * as path from 'path';
88

99
import { should, expect } from 'chai';
10-
import { activateCSharpExtension, isRazorWorkspace } from './integrationHelpers';
10+
import * as integrationHelpers from './integrationHelpers';
1111
import testAssetWorkspace from './testAssets/testAssetWorkspace';
1212

1313
const chai = require('chai');
@@ -21,11 +21,11 @@ suite(`DocumentSymbolProvider: ${testAssetWorkspace.description}`, function () {
2121
should();
2222

2323
// These tests don't run on the BasicRazorApp2_1 solution
24-
if (isRazorWorkspace(vscode.workspace)) {
24+
if (integrationHelpers.isRazorWorkspace(vscode.workspace) || integrationHelpers.isSlnWithGenerator(vscode.workspace)) {
2525
this.skip();
2626
}
2727

28-
await activateCSharpExtension();
28+
await integrationHelpers.activateCSharpExtension();
2929
await testAssetWorkspace.restore();
3030

3131
let fileName = 'documentSymbols.cs';
@@ -55,4 +55,4 @@ suite(`DocumentSymbolProvider: ${testAssetWorkspace.description}`, function () {
5555

5656
async function GetDocumentSymbols(fileUri: vscode.Uri) {
5757
return <vscode.SymbolInformation[]>await vscode.commands.executeCommand("vscode.executeDocumentSymbolProvider", fileUri);
58-
}
58+
}

test/integrationTests/documentationCommentAutoFormatting.integration.test.ts

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -6,7 +6,7 @@
66
import { expect, should } from 'chai';
77
import * as vscode from 'vscode';
88
import * as path from 'path';
9-
import { isRazorWorkspace } from './integrationHelpers';
9+
import { isRazorWorkspace, isSlnWithGenerator } from './integrationHelpers';
1010
import testAssetWorkspace from './testAssets/testAssetWorkspace';
1111

1212
const onTypeFormatProviderCommand = 'vscode.executeFormatOnTypeProvider';
@@ -25,7 +25,7 @@ suite(`Documentation Comment Auto Formatting: ${testAssetWorkspace.description}`
2525
suiteSetup(async function () {
2626
should();
2727

28-
if (isRazorWorkspace(vscode.workspace)) {
28+
if (isRazorWorkspace(vscode.workspace) || isSlnWithGenerator(vscode.workspace)) {
2929
// The format-on-type provider does not run for razor files.
3030
this.skip();
3131
}

test/integrationTests/hoverProvider.integration.test.ts

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -7,7 +7,7 @@ import * as vscode from 'vscode';
77
import * as path from 'path';
88

99
import { should, expect } from 'chai';
10-
import { activateCSharpExtension, isRazorWorkspace } from './integrationHelpers';
10+
import { activateCSharpExtension, isRazorWorkspace, isSlnWithGenerator } from './integrationHelpers';
1111
import testAssetWorkspace from './testAssets/testAssetWorkspace';
1212

1313
export type Test = 'a' | 'b' | ['c', any];
@@ -21,7 +21,7 @@ suite(`Hover Provider: ${testAssetWorkspace.description}`, function () {
2121
should();
2222

2323
// These tests don't run on the BasicRazorApp2_1 solution
24-
if (isRazorWorkspace(vscode.workspace)) {
24+
if (isRazorWorkspace(vscode.workspace) || isSlnWithGenerator(vscode.workspace)) {
2525
this.skip();
2626
}
2727

0 commit comments

Comments
 (0)