Adopt createServices utility (#153370)

This commit is contained in:
Alexandru Dima 2022-06-27 22:33:05 +02:00 committed by GitHub
parent 0bf49bba30
commit b78a8cef3d
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23
3 changed files with 23 additions and 47 deletions

View file

@ -15,9 +15,7 @@ import { LineTokens } from 'vs/editor/common/tokens/lineTokens';
import { LanguageIdCodec } from 'vs/editor/common/services/languagesRegistry';
import { ISingleEditOperation } from 'vs/editor/common/core/editOperation';
import { DisposableStore } from 'vs/base/common/lifecycle';
import { ServiceCollection } from 'vs/platform/instantiation/common/serviceCollection';
import { ILanguageConfigurationService, LanguageConfigurationService } from 'vs/editor/common/languages/languageConfigurationRegistry';
import { SyncDescriptor } from 'vs/platform/instantiation/common/descriptors';
suite('TokensStore', () => {
@ -222,9 +220,9 @@ suite('TokensStore', () => {
test('issue #147944: Language id "vs.editor.nullLanguage" is not configured nor known', () => {
const disposables = new DisposableStore();
const instantiationService = createModelServices(disposables, new ServiceCollection([
ILanguageConfigurationService, new SyncDescriptor(LanguageConfigurationService)
]));
const instantiationService = createModelServices(disposables, [
[ILanguageConfigurationService, LanguageConfigurationService]
]);
const model = instantiateTextModel(instantiationService, '--[[\n\n]]');
model.tokenization.setSemanticTokens([
SparseMultilineTokens.create(1, new Uint32Array([

View file

@ -37,7 +37,6 @@ import { LanguageFeatureDebounceService } from 'vs/editor/common/services/langua
import { runWithFakedTimers } from 'vs/base/test/common/timeTravelScheduler';
import { LanguageFeaturesService } from 'vs/editor/common/services/languageFeaturesService';
import { ILanguageFeaturesService } from 'vs/editor/common/services/languageFeatures';
import { ServiceCollection } from 'vs/platform/instantiation/common/serviceCollection';
import { IConfigurationService } from 'vs/platform/configuration/common/configuration';
import { TestInstantiationService } from 'vs/platform/instantiation/test/common/instantiationServiceMock';
@ -55,11 +54,9 @@ suite('ModelService', () => {
configService.setUserConfiguration('files', { 'eol': '\n' });
configService.setUserConfiguration('files', { 'eol': '\r\n' }, URI.file(platform.isWindows ? 'c:\\myroot' : '/myroot'));
const serviceCollection = new ServiceCollection([
IConfigurationService, configService
instantiationService = createModelServices(disposables, [
[IConfigurationService, configService]
]);
instantiationService = createModelServices(disposables, serviceCollection);
modelService = instantiationService.get(IModelService);
});

View file

@ -3,7 +3,7 @@
* Licensed under the MIT License. See License.txt in the project root for license information.
*--------------------------------------------------------------------------------------------*/
import { DisposableStore, IDisposable, toDisposable } from 'vs/base/common/lifecycle';
import { DisposableStore, IDisposable } from 'vs/base/common/lifecycle';
import { URI } from 'vs/base/common/uri';
import { BracketPairColorizationOptions, DefaultEndOfLine, ITextBufferFactory, ITextModelCreationOptions } from 'vs/editor/common/model';
import { TextModel } from 'vs/editor/common/model/textModel';
@ -16,9 +16,7 @@ import { IConfigurationService } from 'vs/platform/configuration/common/configur
import { TestConfigurationService } from 'vs/platform/configuration/test/common/testConfigurationService';
import { IDialogService } from 'vs/platform/dialogs/common/dialogs';
import { TestDialogService } from 'vs/platform/dialogs/test/common/testDialogService';
import { SyncDescriptor } from 'vs/platform/instantiation/common/descriptors';
import { IInstantiationService, ServiceIdentifier } from 'vs/platform/instantiation/common/instantiation';
import { ServiceCollection } from 'vs/platform/instantiation/common/serviceCollection';
import { IInstantiationService } from 'vs/platform/instantiation/common/instantiation';
import { ILogService, NullLogService } from 'vs/platform/log/common/log';
import { INotificationService } from 'vs/platform/notification/common/notification';
import { TestNotificationService } from 'vs/platform/notification/test/common/testNotificationService';
@ -29,7 +27,7 @@ import { UndoRedoService } from 'vs/platform/undoRedo/common/undoRedoService';
import { TestTextResourcePropertiesService } from 'vs/editor/test/common/services/testTextResourcePropertiesService';
import { IModelService } from 'vs/editor/common/services/model';
import { ModelService } from 'vs/editor/common/services/modelService';
import { TestInstantiationService } from 'vs/platform/instantiation/test/common/instantiationServiceMock';
import { createServices, ServiceIdCtorPair, TestInstantiationService } from 'vs/platform/instantiation/test/common/instantiationServiceMock';
import { PLAINTEXT_LANGUAGE_ID } from 'vs/editor/common/languages/modesRegistry';
import { ILanguageFeatureDebounceService, LanguageFeatureDebounceService } from 'vs/editor/common/services/languageFeatureDebounce';
import { ILanguageFeaturesService } from 'vs/editor/common/services/languageFeatures';
@ -87,36 +85,19 @@ export function instantiateTextModel(instantiationService: IInstantiationService
return instantiationService.createInstance(TestTextModel, text, languageId || PLAINTEXT_LANGUAGE_ID, options, uri);
}
export function createModelServices(disposables: DisposableStore, services: ServiceCollection = new ServiceCollection()): TestInstantiationService {
const serviceIdentifiers: ServiceIdentifier<any>[] = [];
const define = <T>(id: ServiceIdentifier<T>, ctor: new (...args: any[]) => T) => {
if (!services.has(id)) {
services.set(id, new SyncDescriptor(ctor));
}
serviceIdentifiers.push(id);
};
define(INotificationService, TestNotificationService);
define(IDialogService, TestDialogService);
define(IUndoRedoService, UndoRedoService);
define(ILanguageService, LanguageService);
define(ILanguageConfigurationService, TestLanguageConfigurationService);
define(IConfigurationService, TestConfigurationService);
define(ITextResourcePropertiesService, TestTextResourcePropertiesService);
define(IThemeService, TestThemeService);
define(ILogService, NullLogService);
define(ILanguageFeatureDebounceService, LanguageFeatureDebounceService);
define(ILanguageFeaturesService, LanguageFeaturesService);
define(IModelService, ModelService);
const instantiationService = new TestInstantiationService(services, true);
disposables.add(toDisposable(() => {
for (const id of serviceIdentifiers) {
const instanceOrDescriptor = services.get(id);
if (typeof instanceOrDescriptor.dispose === 'function') {
instanceOrDescriptor.dispose();
}
}
}));
return instantiationService;
export function createModelServices(disposables: DisposableStore, services: ServiceIdCtorPair<any>[] = []): TestInstantiationService {
return createServices(disposables, services.concat([
[INotificationService, TestNotificationService],
[IDialogService, TestDialogService],
[IUndoRedoService, UndoRedoService],
[ILanguageService, LanguageService],
[ILanguageConfigurationService, TestLanguageConfigurationService],
[IConfigurationService, TestConfigurationService],
[ITextResourcePropertiesService, TestTextResourcePropertiesService],
[IThemeService, TestThemeService],
[ILogService, NullLogService],
[ILanguageFeatureDebounceService, LanguageFeatureDebounceService],
[ILanguageFeaturesService, LanguageFeaturesService],
[IModelService, ModelService],
]));
}