Skip to content

Commit 2e1ee60

Browse files
author
Piotr Puszkiewicz
authored
Merge pull request #1834 from TheRealPiotrP/dev/piotrp/testInfra
Integration Test Infrastructure
2 parents dc32557 + 10cbfef commit 2e1ee60

32 files changed

+446
-68
lines changed

.gitignore

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -9,3 +9,6 @@ out
99
install.*
1010

1111
*.vsix
12+
13+
obj/
14+
bin/

.travis.yml

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -14,9 +14,12 @@ addons:
1414
apt:
1515
sources:
1616
- ubuntu-toolchain-r-test
17+
- sourceline: 'deb https://packages.microsoft.com/repos/microsoft-ubuntu-trusty-prod trusty main'
18+
key_url: 'https://packages.microsoft.com/keys/microsoft.asc'
1719
packages:
1820
- g++-4.9
1921
- libsecret-1-dev
22+
- dotnet-sdk-2.0.2
2023

2124
install:
2225
- npm install

.vscode/launch.json

Lines changed: 38 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -16,16 +16,51 @@
1616
]
1717
},
1818
{
19-
"name": "Launch Tests",
19+
"name": "Launch Unit Tests",
2020
"type": "extensionHost",
2121
"request": "launch",
2222
"runtimeExecutable": "${execPath}",
23-
"args": ["--extensionDevelopmentPath=${workspaceRoot}", "--extensionTestsPath=${workspaceRoot}/out/test" ],
23+
"args": [
24+
"--extensionDevelopmentPath=${workspaceRoot}",
25+
"--extensionTestsPath=${workspaceRoot}/out/test/unitTests"
26+
],
27+
"stopOnEntry": false,
28+
"sourceMaps": true,
29+
"outFiles": [
30+
"${workspaceRoot}/out/test/**/*.js"
31+
]
32+
},
33+
{
34+
"name": "Launch singleCsproj Workspace Tests",
35+
"type": "extensionHost",
36+
"request": "launch",
37+
"runtimeExecutable": "${execPath}",
38+
"args": [
39+
"${workspaceRoot}/test/integrationTests/testAssets/singleCsproj",
40+
"--extensionDevelopmentPath=${workspaceRoot}",
41+
"--extensionTestsPath=${workspaceRoot}/out/test/integrationTests"
42+
],
43+
"stopOnEntry": false,
44+
"sourceMaps": true,
45+
"outFiles": [
46+
"${workspaceRoot}/out/test/**/*.js"
47+
]
48+
},
49+
{
50+
"name": "Launch slnWithCsproj Workspace Tests",
51+
"type": "extensionHost",
52+
"request": "launch",
53+
"runtimeExecutable": "${execPath}",
54+
"args": [
55+
"${workspaceRoot}/test/integrationTests/testAssets/slnWithCsproj",
56+
"--extensionDevelopmentPath=${workspaceRoot}",
57+
"--extensionTestsPath=${workspaceRoot}/out/test/integrationTests"
58+
],
2459
"stopOnEntry": false,
2560
"sourceMaps": true,
2661
"outFiles": [
2762
"${workspaceRoot}/out/test/**/*.js"
2863
]
2964
}
3065
]
31-
}
66+
}

package.json

Lines changed: 13 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -26,7 +26,13 @@
2626
"vscode:prepublish": "tsc -p ./",
2727
"compile": "tsc -p ./ && gulp tslint",
2828
"watch": "tsc -watch -p ./",
29-
"test": "node ./node_modules/vscode/bin/test",
29+
"test": "npm-run-all test:unit test:integration",
30+
"test:unit": "cross-env CODE_TESTS_PATH=./out/test/unitTests npm run test:runInVsCode",
31+
"test:integration": "npm-run-all test:integration:*",
32+
"test:integration:singleCsproj": "cross-env OSVC_SUITE=singleCsproj npm run test:runSuiteInVsCode",
33+
"test:integration:slnWithCsproj": "cross-env OSVC_SUITE=slnWithCsproj npm run test:runSuiteInVsCode",
34+
"test:runSuiteInVsCode": "cross-env CODE_TESTS_PATH=./out/test/integrationTests CODE_TESTS_WORKSPACE=./test/integrationTests/testAssets/$OSVC_SUITE npm run test:runInVsCode",
35+
"test:runInVsCode": "node ./test/runVsCodeTestsWithAbsolutePaths.js",
3036
"postinstall": "node ./node_modules/vscode/bin/install"
3137
},
3238
"dependencies": {
@@ -46,18 +52,24 @@
4652
},
4753
"devDependencies": {
4854
"@types/chai": "^3.4.34",
55+
"@types/chai-arrays": "^1.0.2",
4956
"@types/fs-extra": "4.0.3",
5057
"@types/mkdirp": "^0.3.29",
5158
"@types/mocha": "^2.2.32",
5259
"@types/node": "^6.0.40",
5360
"@types/semver": "^5.3.30",
5461
"@types/tmp": "0.0.32",
62+
"async-file": "^2.0.2",
5563
"chai": "^3.5.0",
64+
"chai-arrays": "^2.0.0",
65+
"chai-fs": "^1.0.0",
66+
"cross-env": "^5.1.1",
5667
"del": "^2.0.2",
5768
"gulp": "^3.9.1",
5869
"gulp-mocha": "^2.1.3",
5970
"gulp-tslint": "^4.3.0",
6071
"mocha": "^2.3.3",
72+
"npm-run-all": "^4.1.1",
6173
"plist": "^2.0.1",
6274
"tslint": "^3.15.1",
6375
"tslint-microsoft-contrib": "^2.0.12",

src/configurationProvider.ts

Lines changed: 7 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -3,15 +3,17 @@
33
* Licensed under the MIT License. See License.txt in the project root for license information.
44
*--------------------------------------------------------------------------------------------*/
55

6-
import * as vscode from 'vscode';
76
import * as fs from 'fs-extra';
87
import * as path from 'path';
9-
import { parse } from 'jsonc-parser';
10-
import { OmniSharpServer } from './omnisharp/server';
118
import * as serverUtils from './omnisharp/utils';
9+
import * as vscode from 'vscode';
10+
11+
import { AssetGenerator, addTasksJsonIfNecessary, createAttachConfiguration, createLaunchConfiguration, createWebLaunchConfiguration } from './assets';
12+
13+
import { OmniSharpServer } from './omnisharp/server';
1214
import { containsDotNetCoreProjects } from './omnisharp/protocol';
13-
import { AssetGenerator, addTasksJsonIfNecessary, createLaunchConfiguration, createAttachConfiguration, createWebLaunchConfiguration } from './assets';
1415
import { isSubfolderOf } from './common';
16+
import { parse } from 'jsonc-parser';
1517

1618
export class CSharpConfigurationProvider implements vscode.DebugConfigurationProvider {
1719
private server: OmniSharpServer;
@@ -101,7 +103,7 @@ export class CSharpConfigurationProvider implements vscode.DebugConfigurationPro
101103
/**
102104
* Try to add all missing attributes to the debug configuration being launched.
103105
*/
104-
resolveDebugConfiguration(folder: vscode.WorkspaceFolder | undefined, config: vscode.DebugConfiguration, token?: vscode.CancellationToken): vscode.ProviderResult<vscode.DebugConfiguration> {
106+
resolveDebugConfiguration(folder: vscode.WorkspaceFolder | undefined, config: vscode.DebugConfiguration, token?: vscode.CancellationToken): vscode.ProviderResult<vscode.DebugConfiguration> {
105107
// vsdbg does the error checking
106108
return config;
107109
}

src/features/definitionMetadataDocumentProvider.ts

Lines changed: 7 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,10 @@
1-
import { workspace, Uri, TextDocument, Disposable, TextDocumentContentProvider} from 'vscode';
1+
/*---------------------------------------------------------------------------------------------
2+
* Copyright (c) Microsoft Corporation. All rights reserved.
3+
* Licensed under the MIT License. See License.txt in the project root for license information.
4+
*--------------------------------------------------------------------------------------------*/
5+
6+
import { Disposable, TextDocument, TextDocumentContentProvider, Uri, workspace } from 'vscode';
7+
28
import { MetadataResponse } from '../omnisharp/protocol';
39

410
export default class DefinitionMetadataDocumentProvider implements TextDocumentContentProvider, Disposable {

src/omnisharp/extension.ts

Lines changed: 17 additions & 16 deletions
Original file line numberDiff line numberDiff line change
@@ -3,34 +3,35 @@
33
* Licensed under the MIT License. See License.txt in the project root for license information.
44
*--------------------------------------------------------------------------------------------*/
55

6+
import * as utils from './utils';
67
import * as vscode from 'vscode';
7-
import TelemetryReporter from 'vscode-extension-telemetry';
88

9-
import DefinitionProvider from '../features/definitionProvider';
10-
import ImplementationProvider from '../features/implementationProvider';
9+
import { AddAssetResult, addAssetsIfNecessary } from '../assets';
10+
import reportDiagnostics, { Advisor } from '../features/diagnosticsProvider';
11+
import { safeLength, sum } from '../common';
12+
13+
import { CSharpConfigurationProvider } from '../configurationProvider';
14+
import CodeActionProvider from '../features/codeActionProvider';
1115
import CodeLensProvider from '../features/codeLensProvider';
16+
import CompletionItemProvider from '../features/completionItemProvider';
1217
import DefinitionMetadataDocumentProvider from '../features/definitionMetadataDocumentProvider';
18+
import DefinitionProvider from '../features/definitionProvider';
1319
import DocumentHighlightProvider from '../features/documentHighlightProvider';
1420
import DocumentSymbolProvider from '../features/documentSymbolProvider';
15-
import CodeActionProvider from '../features/codeActionProvider';
16-
import ReferenceProvider from '../features/referenceProvider';
21+
import FormatProvider from '../features/formattingEditProvider';
1722
import HoverProvider from '../features/hoverProvider';
23+
import ImplementationProvider from '../features/implementationProvider';
24+
import { OmniSharpServer } from './server';
25+
import { Options } from './options';
26+
import ReferenceProvider from '../features/referenceProvider';
1827
import RenameProvider from '../features/renameProvider';
19-
import FormatProvider from '../features/formattingEditProvider';
20-
import CompletionItemProvider from '../features/completionItemProvider';
21-
import WorkspaceSymbolProvider from '../features/workspaceSymbolProvider';
22-
import reportDiagnostics, { Advisor } from '../features/diagnosticsProvider';
2328
import SignatureHelpProvider from '../features/signatureHelpProvider';
29+
import TelemetryReporter from 'vscode-extension-telemetry';
2430
import TestManager from '../features/dotnetTest';
25-
import registerCommands from '../features/commands';
31+
import WorkspaceSymbolProvider from '../features/workspaceSymbolProvider';
2632
import forwardChanges from '../features/changeForwarding';
33+
import registerCommands from '../features/commands';
2734
import reportStatus from '../features/status';
28-
import { OmniSharpServer } from './server';
29-
import { Options } from './options';
30-
import { addAssetsIfNecessary, AddAssetResult } from '../assets';
31-
import { sum, safeLength } from '../common';
32-
import * as utils from './utils';
33-
import { CSharpConfigurationProvider } from '../configurationProvider';
3435

3536
export function activate(context: vscode.ExtensionContext, reporter: TelemetryReporter, channel: vscode.OutputChannel) {
3637
const documentSelector: vscode.DocumentSelector = {

src/tools/GenerateOptionsSchema.ts

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,8 @@
1+
/*---------------------------------------------------------------------------------------------
2+
* Copyright (c) Microsoft Corporation. All rights reserved.
3+
* Licensed under the MIT License. See License.txt in the project root for license information.
4+
*--------------------------------------------------------------------------------------------*/
5+
16
import * as fs from 'fs';
27
import * as os from 'os';
38

src/tools/UpdatePackageDependencies.ts

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,11 @@
1+
/*---------------------------------------------------------------------------------------------
2+
* Copyright (c) Microsoft Corporation. All rights reserved.
3+
* Licensed under the MIT License. See License.txt in the project root for license information.
4+
*--------------------------------------------------------------------------------------------*/
5+
16
import * as fs from 'fs';
27
import * as os from 'os';
8+
39
import { Package } from '../packages';
410

511
interface PackageJSONFile

test/index.ts renamed to test/integrationTests/index.ts

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -19,6 +19,7 @@ var testRunner = require('vscode/lib/testrunner');
1919

2020
// You can directly control Mocha options by uncommenting the following lines
2121
// See https://github.com/mochajs/mocha/wiki/Using-mocha-programmatically#set-options for more info
22+
2223
testRunner.configure({
2324
timeout: 10000,
2425
ui: 'tdd', // the TDD UI is being used in extension.test.ts (suite, test, etc.)

0 commit comments

Comments
 (0)