mirror of
https://github.com/microsoft/vscode.git
synced 2026-04-18 07:47:23 +01:00
141 lines
4.4 KiB
TypeScript
141 lines
4.4 KiB
TypeScript
/*---------------------------------------------------------------------------------------------
|
|
* Copyright (c) Microsoft Corporation. All rights reserved.
|
|
* Licensed under the MIT License. See License.txt in the project root for license information.
|
|
*--------------------------------------------------------------------------------------------*/
|
|
|
|
import * as assert from 'assert';
|
|
import * as paths from 'vs/base/common/paths';
|
|
import * as platform from 'vs/base/common/platform';
|
|
import { IRawAdapter, IAdapterExecutable, IConfigurationManager } from 'vs/workbench/parts/debug/common/debug';
|
|
import { Adapter } from 'vs/workbench/parts/debug/node/debugAdapter';
|
|
import { TestConfigurationService } from 'vs/platform/configuration/test/common/testConfigurationService';
|
|
import uri from 'vs/base/common/uri';
|
|
import { TPromise } from 'vs/base/common/winjs.base';
|
|
|
|
|
|
suite('Debug - Adapter', () => {
|
|
let adapter: Adapter;
|
|
const extensionFolderPath = 'a/b/c/';
|
|
const rawAdapter = {
|
|
type: 'mock',
|
|
label: 'Mock Debug',
|
|
enableBreakpointsFor: { 'languageIds': ['markdown'] },
|
|
program: './out/mock/mockDebug.js',
|
|
args: ['arg1', 'arg2'],
|
|
configurationAttributes: {
|
|
launch: {
|
|
required: ['program'],
|
|
properties: {
|
|
program: {
|
|
'type': 'string',
|
|
'description': 'Workspace relative path to a text file.',
|
|
'default': 'readme.md'
|
|
}
|
|
}
|
|
}
|
|
},
|
|
variables: null,
|
|
initialConfigurations: [
|
|
{
|
|
name: 'Mock-Debug',
|
|
type: 'mock',
|
|
request: 'launch',
|
|
program: 'readme.md'
|
|
}
|
|
]
|
|
};
|
|
const configurationManager = {
|
|
debugAdapterExecutable(folderUri: uri | undefined, type: string): TPromise<IAdapterExecutable | undefined> {
|
|
return TPromise.as(undefined);
|
|
}
|
|
};
|
|
|
|
setup(() => {
|
|
adapter = new Adapter(<IConfigurationManager>configurationManager, rawAdapter, { extensionFolderPath, id: 'adapter', name: 'myAdapter', version: '1.0.0', publisher: 'vscode', isBuiltin: false, engines: null },
|
|
new TestConfigurationService(), null);
|
|
});
|
|
|
|
teardown(() => {
|
|
adapter = null;
|
|
});
|
|
|
|
test('attributes', () => {
|
|
assert.equal(adapter.type, rawAdapter.type);
|
|
assert.equal(adapter.label, rawAdapter.label);
|
|
|
|
return adapter.getAdapterExecutable(undefined, false).then(details => {
|
|
assert.equal(details.command, paths.join(extensionFolderPath, rawAdapter.program));
|
|
assert.deepEqual(details.args, rawAdapter.args);
|
|
});
|
|
});
|
|
|
|
test('schema attributes', () => {
|
|
const schemaAttribute = adapter.getSchemaAttributes()[0];
|
|
assert.notDeepEqual(schemaAttribute, rawAdapter.configurationAttributes);
|
|
Object.keys(rawAdapter.configurationAttributes.launch).forEach(key => {
|
|
assert.deepEqual(schemaAttribute[key], rawAdapter.configurationAttributes.launch[key]);
|
|
});
|
|
|
|
assert.equal(schemaAttribute['additionalProperties'], false);
|
|
assert.equal(!!schemaAttribute['properties']['request'], true);
|
|
assert.equal(!!schemaAttribute['properties']['name'], true);
|
|
assert.equal(!!schemaAttribute['properties']['type'], true);
|
|
assert.equal(!!schemaAttribute['properties']['preLaunchTask'], true);
|
|
});
|
|
|
|
test('merge', () => {
|
|
|
|
const da: IRawAdapter = {
|
|
type: 'mock',
|
|
win: {
|
|
runtime: 'winRuntime'
|
|
},
|
|
linux: {
|
|
runtime: 'linuxRuntime'
|
|
},
|
|
osx: {
|
|
runtime: 'osxRuntime'
|
|
},
|
|
runtimeArgs: ['first arg'],
|
|
program: 'mockprogram',
|
|
args: ['arg']
|
|
};
|
|
|
|
adapter.merge(da, {
|
|
name: 'my name',
|
|
id: 'my_id',
|
|
version: '1.0',
|
|
publisher: 'mockPublisher',
|
|
isBuiltin: true,
|
|
extensionFolderPath: 'a/b/c/d',
|
|
engines: null
|
|
});
|
|
|
|
return adapter.getAdapterExecutable(undefined, false).then(details => {
|
|
assert.equal(details.command, platform.isLinux ? da.linux.runtime : platform.isMacintosh ? da.osx.runtime : da.win.runtime);
|
|
assert.deepEqual(details.args, da.runtimeArgs.concat(['a/b/c/d/mockprogram'].concat(da.args)));
|
|
});
|
|
});
|
|
|
|
test('initial config file content', () => {
|
|
|
|
const expected = ['{',
|
|
' // Use IntelliSense to learn about possible attributes.',
|
|
' // Hover to view descriptions of existing attributes.',
|
|
' // For more information, visit: https://go.microsoft.com/fwlink/?linkid=830387',
|
|
' "version": "0.2.0",',
|
|
' "configurations": [',
|
|
' {',
|
|
' "name": "Mock-Debug",',
|
|
' "type": "mock",',
|
|
' "request": "launch",',
|
|
' "program": "readme.md"',
|
|
' }',
|
|
' ]',
|
|
'}'].join('\n');
|
|
|
|
return adapter.getInitialConfigurationContent().then(content => {
|
|
assert.equal(content, expected);
|
|
}, err => assert.fail());
|
|
});
|
|
}); |