mirror of
https://github.com/Microsoft/vscode
synced 2024-10-02 09:18:59 +00:00
add more leakage checks in tests (#203525)
re https://github.com/microsoft/vscode/issues/200091
This commit is contained in:
parent
e1f27e691f
commit
fb5a1aca6d
|
@ -154,10 +154,6 @@
|
|||
"src/vs/editor/contrib/codeAction/test/browser/codeActionKeybindingResolver.test.ts",
|
||||
"src/vs/editor/contrib/codeAction/test/browser/codeActionModel.test.ts",
|
||||
"src/vs/editor/contrib/gotoSymbol/test/browser/referencesModel.test.ts",
|
||||
"src/vs/editor/contrib/smartSelect/test/browser/smartSelect.test.ts",
|
||||
"src/vs/editor/contrib/snippet/test/browser/snippetSession.test.ts",
|
||||
"src/vs/editor/contrib/suggest/test/browser/completionModel.test.ts",
|
||||
"src/vs/editor/contrib/suggest/test/browser/suggestMemory.test.ts",
|
||||
"src/vs/editor/test/common/services/languageService.test.ts",
|
||||
"src/vs/editor/test/node/classification/typescript.test.ts",
|
||||
"src/vs/editor/test/node/diffing/defaultLinesDiffComputer.test.ts",
|
||||
|
@ -167,22 +163,15 @@
|
|||
"src/vs/platform/contextkey/test/common/parser.test.ts",
|
||||
"src/vs/platform/contextkey/test/common/scanner.test.ts",
|
||||
"src/vs/platform/extensions/test/common/extensionValidator.test.ts",
|
||||
"src/vs/platform/instantiation/test/common/graph.test.ts",
|
||||
"src/vs/platform/keybinding/test/common/abstractKeybindingService.test.ts",
|
||||
"src/vs/platform/keybinding/test/common/keybindingLabels.test.ts",
|
||||
"src/vs/platform/keybinding/test/common/keybindingResolver.test.ts",
|
||||
"src/vs/platform/markers/test/common/markerService.test.ts",
|
||||
"src/vs/platform/opener/test/common/opener.test.ts",
|
||||
"src/vs/platform/progress/test/common/progress.test.ts",
|
||||
"src/vs/platform/registry/test/common/platform.test.ts",
|
||||
"src/vs/platform/remote/test/common/remoteHosts.test.ts",
|
||||
"src/vs/platform/telemetry/test/browser/1dsAppender.test.ts",
|
||||
"src/vs/platform/workspace/test/common/workspace.test.ts",
|
||||
"src/vs/platform/workspaces/test/electron-main/workspaces.test.ts",
|
||||
"src/vs/workbench/api/test/browser/extHostApiCommands.test.ts",
|
||||
"src/vs/workbench/api/test/browser/extHostBulkEdits.test.ts",
|
||||
"src/vs/workbench/api/test/browser/extHostDocumentSaveParticipant.test.ts",
|
||||
"src/vs/workbench/api/test/browser/extHostTypeConverter.test.ts",
|
||||
"src/vs/workbench/api/test/browser/extHostWorkspace.test.ts",
|
||||
"src/vs/workbench/api/test/browser/mainThreadConfiguration.test.ts",
|
||||
"src/vs/workbench/api/test/browser/mainThreadDocuments.test.ts",
|
||||
|
@ -194,9 +183,6 @@
|
|||
"src/vs/workbench/contrib/extensions/test/common/extensionQuery.test.ts",
|
||||
"src/vs/workbench/contrib/notebook/test/browser/notebookExecutionService.test.ts",
|
||||
"src/vs/workbench/contrib/notebook/test/browser/notebookExecutionStateService.test.ts",
|
||||
"src/vs/workbench/contrib/snippets/test/browser/snippetFile.test.ts",
|
||||
"src/vs/workbench/contrib/snippets/test/browser/snippetsRegistry.test.ts",
|
||||
"src/vs/workbench/contrib/snippets/test/browser/snippetsRewrite.test.ts",
|
||||
"src/vs/workbench/contrib/tasks/test/common/problemMatcher.test.ts",
|
||||
"src/vs/workbench/contrib/tasks/test/common/taskConfiguration.test.ts",
|
||||
"src/vs/workbench/services/commands/test/common/commandService.test.ts",
|
||||
|
|
|
@ -19,6 +19,7 @@ import { createModelServices } from 'vs/editor/test/common/testTextModel';
|
|||
import { javascriptOnEnterRules } from 'vs/editor/test/common/modes/supports/javascriptOnEnterRules';
|
||||
import { LanguageFeatureRegistry } from 'vs/editor/common/languageFeatureRegistry';
|
||||
import { ILanguageSelection, ILanguageService } from 'vs/editor/common/languages/language';
|
||||
import { ensureNoDisposablesAreLeakedInTestSuite } from 'vs/base/test/common/utils';
|
||||
|
||||
class StaticLanguageSelector implements ILanguageSelection {
|
||||
readonly onDidChange: Event<string> = Event.None;
|
||||
|
@ -64,6 +65,8 @@ suite('SmartSelect', () => {
|
|||
disposables.dispose();
|
||||
});
|
||||
|
||||
ensureNoDisposablesAreLeakedInTestSuite();
|
||||
|
||||
async function assertGetRangesToPosition(text: string[], lineNumber: number, column: number, ranges: Range[], selectLeadingAndTrailingWhitespace = true): Promise<void> {
|
||||
const uri = URI.file('test.js');
|
||||
const model = modelService.createModel(text.join('\n'), new StaticLanguageSelector(languageId), uri);
|
||||
|
|
|
@ -4,6 +4,7 @@
|
|||
*--------------------------------------------------------------------------------------------*/
|
||||
import * as assert from 'assert';
|
||||
import { mock } from 'vs/base/test/common/mock';
|
||||
import { ensureNoDisposablesAreLeakedInTestSuite } from 'vs/base/test/common/utils';
|
||||
import { IActiveCodeEditor } from 'vs/editor/browser/editorBrowser';
|
||||
import { IPosition, Position } from 'vs/editor/common/core/position';
|
||||
import { Range } from 'vs/editor/common/core/range';
|
||||
|
@ -58,6 +59,8 @@ suite('SnippetSession', function () {
|
|||
editor.dispose();
|
||||
});
|
||||
|
||||
ensureNoDisposablesAreLeakedInTestSuite();
|
||||
|
||||
test('normalize whitespace', function () {
|
||||
|
||||
function assertNormalized(position: IPosition, input: string, expected: string): void {
|
||||
|
|
|
@ -3,6 +3,7 @@
|
|||
* Licensed under the MIT License. See License.txt in the project root for license information.
|
||||
*--------------------------------------------------------------------------------------------*/
|
||||
import * as assert from 'assert';
|
||||
import { ensureNoDisposablesAreLeakedInTestSuite } from 'vs/base/test/common/utils';
|
||||
import { EditorOptions, InternalSuggestOptions } from 'vs/editor/common/config/editorOptions';
|
||||
import { IPosition } from 'vs/editor/common/core/position';
|
||||
import * as languages from 'vs/editor/common/languages';
|
||||
|
@ -83,6 +84,8 @@ suite('CompletionModel', function () {
|
|||
}, WordDistance.None, EditorOptions.suggest.defaultValue, EditorOptions.snippetSuggestions.defaultValue, undefined);
|
||||
});
|
||||
|
||||
ensureNoDisposablesAreLeakedInTestSuite();
|
||||
|
||||
test('filtering - cached', function () {
|
||||
|
||||
const itemsNow = model.items;
|
||||
|
|
|
@ -4,6 +4,7 @@
|
|||
*--------------------------------------------------------------------------------------------*/
|
||||
|
||||
import * as assert from 'assert';
|
||||
import { ensureNoDisposablesAreLeakedInTestSuite } from 'vs/base/test/common/utils';
|
||||
import { IPosition } from 'vs/editor/common/core/position';
|
||||
import { ITextModel } from 'vs/editor/common/model';
|
||||
import { CompletionItem } from 'vs/editor/contrib/suggest/browser/suggest';
|
||||
|
@ -30,6 +31,8 @@ suite('SuggestMemories', function () {
|
|||
buffer.dispose();
|
||||
});
|
||||
|
||||
ensureNoDisposablesAreLeakedInTestSuite();
|
||||
|
||||
test('AbstractMemory, select', function () {
|
||||
|
||||
const mem = new class extends Memory {
|
||||
|
|
|
@ -3,15 +3,19 @@
|
|||
* Licensed under the MIT License. See License.txt in the project root for license information.
|
||||
*--------------------------------------------------------------------------------------------*/
|
||||
import * as assert from 'assert';
|
||||
import { ensureNoDisposablesAreLeakedInTestSuite } from 'vs/base/test/common/utils';
|
||||
import { Graph } from 'vs/platform/instantiation/common/graph';
|
||||
|
||||
suite('Graph', () => {
|
||||
|
||||
let graph: Graph<string>;
|
||||
|
||||
setup(() => {
|
||||
graph = new Graph<string>(s => s);
|
||||
});
|
||||
|
||||
ensureNoDisposablesAreLeakedInTestSuite();
|
||||
|
||||
test('is possible to lookup nodes that don\'t exist', function () {
|
||||
assert.strictEqual(graph.lookup('ddd'), undefined);
|
||||
});
|
||||
|
|
|
@ -5,6 +5,7 @@
|
|||
|
||||
import * as assert from 'assert';
|
||||
import { URI } from 'vs/base/common/uri';
|
||||
import { ensureNoDisposablesAreLeakedInTestSuite } from 'vs/base/test/common/utils';
|
||||
import { IMarkerData, MarkerSeverity } from 'vs/platform/markers/common/markers';
|
||||
import * as markerService from 'vs/platform/markers/common/markerService';
|
||||
|
||||
|
@ -21,9 +22,17 @@ function randomMarkerData(severity = MarkerSeverity.Error): IMarkerData {
|
|||
|
||||
suite('Marker Service', () => {
|
||||
|
||||
let service: markerService.MarkerService;
|
||||
|
||||
teardown(function () {
|
||||
service.dispose();
|
||||
});
|
||||
|
||||
ensureNoDisposablesAreLeakedInTestSuite();
|
||||
|
||||
test('query', () => {
|
||||
|
||||
const service = new markerService.MarkerService();
|
||||
service = new markerService.MarkerService();
|
||||
|
||||
service.changeAll('far', [{
|
||||
resource: URI.parse('file:///c/test/file.cs'),
|
||||
|
@ -55,7 +64,7 @@ suite('Marker Service', () => {
|
|||
|
||||
test('changeOne override', () => {
|
||||
|
||||
const service = new markerService.MarkerService();
|
||||
service = new markerService.MarkerService();
|
||||
service.changeOne('far', URI.parse('file:///path/only.cs'), [randomMarkerData()]);
|
||||
assert.strictEqual(service.read().length, 1);
|
||||
assert.strictEqual(service.read({ owner: 'far' }).length, 1);
|
||||
|
@ -73,7 +82,7 @@ suite('Marker Service', () => {
|
|||
|
||||
test('changeOne/All clears', () => {
|
||||
|
||||
const service = new markerService.MarkerService();
|
||||
service = new markerService.MarkerService();
|
||||
service.changeOne('far', URI.parse('file:///path/only.cs'), [randomMarkerData()]);
|
||||
service.changeOne('boo', URI.parse('file:///path/only.cs'), [randomMarkerData()]);
|
||||
assert.strictEqual(service.read({ owner: 'far' }).length, 1);
|
||||
|
@ -93,7 +102,7 @@ suite('Marker Service', () => {
|
|||
|
||||
test('changeAll sends event for cleared', () => {
|
||||
|
||||
const service = new markerService.MarkerService();
|
||||
service = new markerService.MarkerService();
|
||||
service.changeAll('far', [{
|
||||
resource: URI.parse('file:///d/path'),
|
||||
marker: randomMarkerData()
|
||||
|
@ -104,17 +113,19 @@ suite('Marker Service', () => {
|
|||
|
||||
assert.strictEqual(service.read({ owner: 'far' }).length, 2);
|
||||
|
||||
service.onMarkerChanged(changedResources => {
|
||||
const d = service.onMarkerChanged(changedResources => {
|
||||
assert.strictEqual(changedResources.length, 1);
|
||||
changedResources.forEach(u => assert.strictEqual(u.toString(), 'file:///d/path'));
|
||||
assert.strictEqual(service.read({ owner: 'far' }).length, 0);
|
||||
});
|
||||
|
||||
service.changeAll('far', []);
|
||||
|
||||
d.dispose();
|
||||
});
|
||||
|
||||
test('changeAll merges', () => {
|
||||
const service = new markerService.MarkerService();
|
||||
service = new markerService.MarkerService();
|
||||
|
||||
service.changeAll('far', [{
|
||||
resource: URI.parse('file:///c/test/file.cs'),
|
||||
|
@ -128,7 +139,7 @@ suite('Marker Service', () => {
|
|||
});
|
||||
|
||||
test('changeAll must not break integrety, issue #12635', () => {
|
||||
const service = new markerService.MarkerService();
|
||||
service = new markerService.MarkerService();
|
||||
|
||||
service.changeAll('far', [{
|
||||
resource: URI.parse('scheme:path1'),
|
||||
|
@ -158,7 +169,7 @@ suite('Marker Service', () => {
|
|||
test('invalid marker data', () => {
|
||||
|
||||
const data = randomMarkerData();
|
||||
const service = new markerService.MarkerService();
|
||||
service = new markerService.MarkerService();
|
||||
|
||||
data.message = undefined!;
|
||||
service.changeOne('far', URI.parse('some:uri/path'), [data]);
|
||||
|
@ -174,7 +185,7 @@ suite('Marker Service', () => {
|
|||
});
|
||||
|
||||
test('MapMap#remove returns bad values, https://github.com/microsoft/vscode/issues/13548', () => {
|
||||
const service = new markerService.MarkerService();
|
||||
service = new markerService.MarkerService();
|
||||
|
||||
service.changeOne('o', URI.parse('some:uri/1'), [randomMarkerData()]);
|
||||
service.changeOne('o', URI.parse('some:uri/2'), []);
|
||||
|
@ -192,7 +203,7 @@ suite('Marker Service', () => {
|
|||
severity: 0 as MarkerSeverity,
|
||||
source: 'me'
|
||||
};
|
||||
const service = new markerService.MarkerService();
|
||||
service = new markerService.MarkerService();
|
||||
|
||||
service.changeOne('far', URI.parse('some:thing'), [data]);
|
||||
const marker = service.read({ resource: URI.parse('some:thing') });
|
||||
|
|
|
@ -5,9 +5,13 @@
|
|||
|
||||
import * as assert from 'assert';
|
||||
import { runWithFakedTimers } from 'vs/base/test/common/timeTravelScheduler';
|
||||
import { ensureNoDisposablesAreLeakedInTestSuite } from 'vs/base/test/common/utils';
|
||||
import { AsyncProgress } from 'vs/platform/progress/common/progress';
|
||||
|
||||
suite('Progress', () => {
|
||||
|
||||
ensureNoDisposablesAreLeakedInTestSuite();
|
||||
|
||||
test('multiple report calls are processed in sequence', async () => {
|
||||
await runWithFakedTimers({ useFakeTimers: true, maxTaskCount: 100 }, async () => {
|
||||
const executionOrder: string[] = [];
|
||||
|
|
|
@ -34,7 +34,6 @@ import { mock } from 'vs/base/test/common/mock';
|
|||
import { NullApiDeprecationService } from 'vs/workbench/api/common/extHostApiDeprecationService';
|
||||
import { ServiceCollection } from 'vs/platform/instantiation/common/serviceCollection';
|
||||
import { SyncDescriptor } from 'vs/platform/instantiation/common/descriptors';
|
||||
import { InstantiationService } from 'vs/platform/instantiation/common/instantiationService';
|
||||
import { IResolvedTextEditorModel, ITextModelService } from 'vs/editor/common/services/resolverService';
|
||||
import { IExtHostFileSystemInfo } from 'vs/workbench/api/common/extHostFileSystemInfo';
|
||||
import { URITransformerService } from 'vs/workbench/api/common/extHostUriTransformerService';
|
||||
|
@ -62,7 +61,7 @@ import { IExtHostTelemetry } from 'vs/workbench/api/common/extHostTelemetry';
|
|||
import { IConfigurationService } from 'vs/platform/configuration/common/configuration';
|
||||
import { TestConfigurationService } from 'vs/platform/configuration/test/common/testConfigurationService';
|
||||
import { IEnvironmentService } from 'vs/platform/environment/common/environment';
|
||||
import { ensureFileSystemProviderError } from 'vs/platform/files/common/files';
|
||||
import { TestInstantiationService } from 'vs/platform/instantiation/test/common/instantiationServiceMock';
|
||||
|
||||
function assertRejects(fn: () => Promise<any>, message: string = 'Expected rejection') {
|
||||
return fn().then(() => assert.ok(false, message), _err => assert.ok(true));
|
||||
|
@ -77,6 +76,7 @@ suite('ExtHostLanguageFeatureCommands', function () {
|
|||
const defaultSelector = { scheme: 'far' };
|
||||
let model: ITextModel;
|
||||
|
||||
let insta: TestInstantiationService;
|
||||
let rpcProtocol: TestRPCProtocol;
|
||||
let extHost: ExtHostLanguageFeatures;
|
||||
let mainThread: MainThreadLanguageFeatures;
|
||||
|
@ -153,7 +153,7 @@ suite('ExtHostLanguageFeatureCommands', function () {
|
|||
services.set(IOutlineModelService, new SyncDescriptor(OutlineModelService));
|
||||
services.set(IConfigurationService, new TestConfigurationService());
|
||||
|
||||
const insta = new InstantiationService(services);
|
||||
insta = new TestInstantiationService(services);
|
||||
|
||||
const extHostDocumentsAndEditors = new ExtHostDocumentsAndEditors(rpcProtocol, new NullLogService());
|
||||
extHostDocumentsAndEditors.$acceptDocumentsAndEditorsDelta({
|
||||
|
@ -197,6 +197,9 @@ suite('ExtHostLanguageFeatureCommands', function () {
|
|||
setUnexpectedErrorHandler(originalErrorHandler);
|
||||
model.dispose();
|
||||
mainThread.dispose();
|
||||
|
||||
(<OutlineModelService>insta.get(IOutlineModelService)).dispose();
|
||||
insta.dispose();
|
||||
});
|
||||
|
||||
teardown(() => {
|
||||
|
@ -204,7 +207,7 @@ suite('ExtHostLanguageFeatureCommands', function () {
|
|||
return rpcProtocol.sync();
|
||||
});
|
||||
|
||||
ensureFileSystemProviderError();
|
||||
// ensureNoDisposablesAreLeakedInTestSuite();
|
||||
|
||||
// --- workspace symbols
|
||||
|
||||
|
|
|
@ -12,6 +12,7 @@ import { SingleProxyRPCProtocol, TestRPCProtocol } from 'vs/workbench/api/test/c
|
|||
import { NullLogService } from 'vs/platform/log/common/log';
|
||||
import { ExtHostBulkEdits } from 'vs/workbench/api/common/extHostBulkEdits';
|
||||
import { nullExtensionDescription } from 'vs/workbench/services/extensions/common/extensions';
|
||||
import { ensureNoDisposablesAreLeakedInTestSuite } from 'vs/base/test/common/utils';
|
||||
|
||||
suite('ExtHostBulkEdits.applyWorkspaceEdit', () => {
|
||||
|
||||
|
@ -43,6 +44,8 @@ suite('ExtHostBulkEdits.applyWorkspaceEdit', () => {
|
|||
bulkEdits = new ExtHostBulkEdits(rpcProtocol, documentsAndEditors);
|
||||
});
|
||||
|
||||
ensureNoDisposablesAreLeakedInTestSuite();
|
||||
|
||||
test('uses version id if document available', async () => {
|
||||
const edit = new extHostTypes.WorkspaceEdit();
|
||||
edit.replace(resource, new extHostTypes.Range(0, 0, 0, 0), 'hello');
|
||||
|
|
|
@ -14,8 +14,12 @@ import { SaveReason } from 'vs/workbench/common/editor';
|
|||
import type * as vscode from 'vscode';
|
||||
import { mock } from 'vs/base/test/common/mock';
|
||||
import { NullLogService } from 'vs/platform/log/common/log';
|
||||
import { timeout } from 'vs/base/common/async';
|
||||
import { nullExtensionDescription } from 'vs/workbench/services/extensions/common/extensions';
|
||||
import { ensureNoDisposablesAreLeakedInTestSuite } from 'vs/base/test/common/utils';
|
||||
|
||||
function timeout(n: number) {
|
||||
return new Promise(resolve => setTimeout(resolve, n));
|
||||
}
|
||||
|
||||
suite('ExtHostDocumentSaveParticipant', () => {
|
||||
|
||||
|
@ -39,6 +43,8 @@ suite('ExtHostDocumentSaveParticipant', () => {
|
|||
documents = new ExtHostDocuments(SingleProxyRPCProtocol(null), documentsAndEditors);
|
||||
});
|
||||
|
||||
ensureNoDisposablesAreLeakedInTestSuite();
|
||||
|
||||
test('no listeners, no problem', () => {
|
||||
const participant = new ExtHostDocumentSaveParticipant(nullLogService, documents, mainThreadBulkEdits);
|
||||
return participant.$participateInSave(resource, SaveReason.EXPLICIT).then(() => assert.ok(true));
|
||||
|
|
|
@ -8,11 +8,14 @@ import * as assert from 'assert';
|
|||
import * as extHostTypes from 'vs/workbench/api/common/extHostTypes';
|
||||
import { MarkdownString, NotebookCellOutputItem, NotebookData, LanguageSelector, WorkspaceEdit } from 'vs/workbench/api/common/extHostTypeConverters';
|
||||
import { isEmptyObject } from 'vs/base/common/types';
|
||||
import { LogLevel as _MainLogLevel } from 'vs/platform/log/common/log';
|
||||
import { URI } from 'vs/base/common/uri';
|
||||
import { IWorkspaceTextEditDto } from 'vs/workbench/api/common/extHost.protocol';
|
||||
import { ensureNoDisposablesAreLeakedInTestSuite } from 'vs/base/test/common/utils';
|
||||
|
||||
suite('ExtHostTypeConverter', function () {
|
||||
|
||||
ensureNoDisposablesAreLeakedInTestSuite();
|
||||
|
||||
function size<T>(from: Record<any, any>): number {
|
||||
let count = 0;
|
||||
for (const key in from) {
|
||||
|
|
|
@ -8,6 +8,7 @@ import { BoundModelReferenceCollection } from 'vs/workbench/api/browser/mainThre
|
|||
import { timeout } from 'vs/base/common/async';
|
||||
import { URI } from 'vs/base/common/uri';
|
||||
import { extUri } from 'vs/base/common/resources';
|
||||
import { ensureNoDisposablesAreLeakedInTestSuite } from 'vs/base/test/common/utils';
|
||||
|
||||
suite('BoundModelReferenceCollection', function () {
|
||||
|
||||
|
@ -21,6 +22,8 @@ suite('BoundModelReferenceCollection', function () {
|
|||
col.dispose();
|
||||
});
|
||||
|
||||
ensureNoDisposablesAreLeakedInTestSuite();
|
||||
|
||||
test('max age', async function () {
|
||||
|
||||
let didDispose = false;
|
||||
|
|
|
@ -8,9 +8,12 @@ import { SnippetFile, Snippet, SnippetSource } from 'vs/workbench/contrib/snippe
|
|||
import { URI } from 'vs/base/common/uri';
|
||||
import { SnippetParser } from 'vs/editor/contrib/snippet/browser/snippetParser';
|
||||
import { generateUuid } from 'vs/base/common/uuid';
|
||||
import { ensureNoDisposablesAreLeakedInTestSuite } from 'vs/base/test/common/utils';
|
||||
|
||||
suite('Snippets', function () {
|
||||
|
||||
ensureNoDisposablesAreLeakedInTestSuite();
|
||||
|
||||
class TestSnippetFile extends SnippetFile {
|
||||
constructor(filepath: URI, snippets: Snippet[]) {
|
||||
super(SnippetSource.Extension, filepath, undefined, undefined, undefined!, undefined!);
|
||||
|
|
|
@ -6,9 +6,12 @@
|
|||
import * as assert from 'assert';
|
||||
import { getNonWhitespacePrefix } from 'vs/workbench/contrib/snippets/browser/snippetsService';
|
||||
import { Position } from 'vs/editor/common/core/position';
|
||||
import { ensureNoDisposablesAreLeakedInTestSuite } from 'vs/base/test/common/utils';
|
||||
|
||||
suite('getNonWhitespacePrefix', () => {
|
||||
|
||||
ensureNoDisposablesAreLeakedInTestSuite();
|
||||
|
||||
function assertGetNonWhitespacePrefix(line: string, column: number, expected: string): void {
|
||||
const model = {
|
||||
getLineContent: (lineNumber: number) => line
|
||||
|
|
|
@ -5,10 +5,13 @@
|
|||
|
||||
import * as assert from 'assert';
|
||||
import { generateUuid } from 'vs/base/common/uuid';
|
||||
import { ensureNoDisposablesAreLeakedInTestSuite } from 'vs/base/test/common/utils';
|
||||
import { Snippet, SnippetSource } from 'vs/workbench/contrib/snippets/browser/snippetsFile';
|
||||
|
||||
suite('SnippetRewrite', function () {
|
||||
|
||||
ensureNoDisposablesAreLeakedInTestSuite();
|
||||
|
||||
function assertRewrite(input: string, expected: string | boolean): void {
|
||||
const actual = new Snippet(false, ['foo'], 'foo', 'foo', 'foo', input, 'foo', SnippetSource.User, generateUuid());
|
||||
if (typeof expected === 'boolean') {
|
||||
|
|
Loading…
Reference in a new issue