mirror of
https://github.com/microsoft/vscode.git
synced 2026-05-15 21:01:05 +01:00
#134909 queue writes and fix tests
This commit is contained in:
@@ -66,7 +66,7 @@ export class UserConfigurationFileService implements IUserConfigurationFileServi
|
||||
if (edit) {
|
||||
content = content.substring(0, edit.offset) + edit.content + content.substring(edit.offset + edit.length);
|
||||
try {
|
||||
await this.write(VSBuffer.fromString(content), { etag, mtime });
|
||||
await this.fileService.writeFile(this.environmentService.settingsResource, VSBuffer.fromString(content), { etag, mtime });
|
||||
} catch (error) {
|
||||
if ((<FileOperationError>error).fileOperationResult === FileOperationResult.FILE_MODIFIED_SINCE) {
|
||||
throw new Error(UserConfigurationErrorCode.ERROR_FILE_MODIFIED_SINCE);
|
||||
@@ -76,7 +76,10 @@ export class UserConfigurationFileService implements IUserConfigurationFileServi
|
||||
}
|
||||
|
||||
async write(content: VSBuffer, options?: IWriteFileOptions): Promise<void> {
|
||||
await this.fileService.writeFile(this.environmentService.settingsResource, content, options);
|
||||
// queue up writes to prevent race conditions
|
||||
return this.queue.queue(async () => {
|
||||
await this.fileService.writeFile(this.environmentService.settingsResource, content, options);
|
||||
});
|
||||
}
|
||||
|
||||
private getEdits({ value, path }: IJSONValue, modelContent: string, formattingOptions: FormattingOptions): Edit[] {
|
||||
|
||||
@@ -16,6 +16,7 @@ import { generateUuid } from 'vs/base/common/uuid';
|
||||
import { IHeaders, IRequestContext, IRequestOptions } from 'vs/base/parts/request/common/request';
|
||||
import { IConfigurationService } from 'vs/platform/configuration/common/configuration';
|
||||
import { ConfigurationService } from 'vs/platform/configuration/common/configurationService';
|
||||
import { IUserConfigurationFileService, UserConfigurationFileService } from 'vs/platform/configuration/common/userConfigurationFileService';
|
||||
import { IEnvironmentService } from 'vs/platform/environment/common/environment';
|
||||
import { GlobalExtensionEnablementService } from 'vs/platform/extensionManagement/common/extensionEnablementService';
|
||||
import { DidUninstallExtensionEvent, IExtensionGalleryService, IExtensionManagementService, IGlobalExtensionEnablementService, InstallExtensionResult } from 'vs/platform/extensionManagement/common/extensionManagement';
|
||||
@@ -88,6 +89,7 @@ export class UserDataSyncClient extends Disposable {
|
||||
const configurationService = this._register(new ConfigurationService(environmentService.settingsResource, fileService));
|
||||
await configurationService.initialize();
|
||||
this.instantiationService.stub(IConfigurationService, configurationService);
|
||||
this.instantiationService.stub(IUserConfigurationFileService, this.instantiationService.createInstance(UserConfigurationFileService));
|
||||
|
||||
this.instantiationService.stub(IRequestService, this.testServer);
|
||||
|
||||
|
||||
Reference in New Issue
Block a user