mirror of
https://github.com/ckaczor/azuredatastudio.git
synced 2026-02-10 10:12:34 -05:00
159 lines
6.3 KiB
TypeScript
159 lines
6.3 KiB
TypeScript
/*---------------------------------------------------------------------------------------------
|
|
* Copyright (c) Microsoft Corporation. All rights reserved.
|
|
* Licensed under the Source EULA. See License.txt in the project root for license information.
|
|
*--------------------------------------------------------------------------------------------*/
|
|
|
|
import { join } from 'vs/base/common/path';
|
|
import * as resources from 'vs/base/common/resources';
|
|
import { URI } from 'vs/base/common/uri';
|
|
import { Event, Emitter } from 'vs/base/common/event';
|
|
import { IConfigurationService } from 'vs/platform/configuration/common/configuration';
|
|
import { IWorkspaceContextService, IWorkspace as IWorkbenchWorkspace, WorkbenchState, IWorkspaceFolder, IWorkspaceFoldersChangeEvent, Workspace } from 'vs/platform/workspace/common/workspace';
|
|
import { TestWorkspace } from 'vs/platform/workspace/test/common/testWorkspace';
|
|
import { IWorkspaceIdentifier, ISingleFolderWorkspaceIdentifier, isSingleFolderWorkspaceIdentifier } from 'vs/platform/workspaces/common/workspaces';
|
|
import { ITextResourcePropertiesService } from 'vs/editor/common/services/textResourceConfigurationService';
|
|
import { isLinux, isMacintosh } from 'vs/base/common/platform';
|
|
import { InMemoryStorageService, IWillSaveStateEvent } from 'vs/platform/storage/common/storage';
|
|
import { WorkingCopyService, IWorkingCopy } from 'vs/workbench/services/workingCopy/common/workingCopyService';
|
|
import { NullExtensionService } from 'vs/workbench/services/extensions/common/extensions';
|
|
import { IWorkingCopyFileService, IWorkingCopyFileOperationParticipant, WorkingCopyFileEvent } from 'vs/workbench/services/workingCopy/common/workingCopyFileService';
|
|
import { IDisposable, Disposable } from 'vs/base/common/lifecycle';
|
|
import { FileOperation, IFileStatWithMetadata } from 'vs/platform/files/common/files';
|
|
|
|
export class TestTextResourcePropertiesService implements ITextResourcePropertiesService {
|
|
|
|
declare readonly _serviceBrand: undefined;
|
|
|
|
constructor(
|
|
@IConfigurationService private readonly configurationService: IConfigurationService,
|
|
) {
|
|
}
|
|
|
|
getEOL(resource: URI, language?: string): string {
|
|
const eol = this.configurationService.getValue<string>('files.eol', { overrideIdentifier: language, resource });
|
|
if (eol && eol !== 'auto') {
|
|
return eol;
|
|
}
|
|
return (isLinux || isMacintosh) ? '\n' : '\r\n';
|
|
}
|
|
}
|
|
|
|
export class TestContextService implements IWorkspaceContextService {
|
|
|
|
declare readonly _serviceBrand: undefined;
|
|
|
|
private workspace: Workspace;
|
|
private options: object;
|
|
|
|
private readonly _onDidChangeWorkspaceName: Emitter<void>;
|
|
get onDidChangeWorkspaceName(): Event<void> { return this._onDidChangeWorkspaceName.event; }
|
|
|
|
private readonly _onDidChangeWorkspaceFolders: Emitter<IWorkspaceFoldersChangeEvent>;
|
|
get onDidChangeWorkspaceFolders(): Event<IWorkspaceFoldersChangeEvent> { return this._onDidChangeWorkspaceFolders.event; }
|
|
|
|
private readonly _onDidChangeWorkbenchState: Emitter<WorkbenchState>;
|
|
get onDidChangeWorkbenchState(): Event<WorkbenchState> { return this._onDidChangeWorkbenchState.event; }
|
|
|
|
constructor(workspace = TestWorkspace, options = null) {
|
|
this.workspace = workspace;
|
|
this.options = options || Object.create(null);
|
|
this._onDidChangeWorkspaceName = new Emitter<void>();
|
|
this._onDidChangeWorkspaceFolders = new Emitter<IWorkspaceFoldersChangeEvent>();
|
|
this._onDidChangeWorkbenchState = new Emitter<WorkbenchState>();
|
|
}
|
|
|
|
getFolders(): IWorkspaceFolder[] {
|
|
return this.workspace ? this.workspace.folders : [];
|
|
}
|
|
|
|
getWorkbenchState(): WorkbenchState {
|
|
if (this.workspace.configuration) {
|
|
return WorkbenchState.WORKSPACE;
|
|
}
|
|
|
|
if (this.workspace.folders.length) {
|
|
return WorkbenchState.FOLDER;
|
|
}
|
|
|
|
return WorkbenchState.EMPTY;
|
|
}
|
|
|
|
getCompleteWorkspace(): Promise<IWorkbenchWorkspace> {
|
|
return Promise.resolve(this.getWorkspace());
|
|
}
|
|
|
|
getWorkspace(): IWorkbenchWorkspace {
|
|
return this.workspace;
|
|
}
|
|
|
|
getWorkspaceFolder(resource: URI): IWorkspaceFolder | null {
|
|
return this.workspace.getFolder(resource);
|
|
}
|
|
|
|
setWorkspace(workspace: any): void {
|
|
this.workspace = workspace;
|
|
}
|
|
|
|
getOptions() {
|
|
return this.options;
|
|
}
|
|
|
|
updateOptions() { }
|
|
|
|
isInsideWorkspace(resource: URI): boolean {
|
|
if (resource && this.workspace) {
|
|
return resources.isEqualOrParent(resource, this.workspace.folders[0].uri);
|
|
}
|
|
|
|
return false;
|
|
}
|
|
|
|
toResource(workspaceRelativePath: string): URI {
|
|
return URI.file(join('C:\\', workspaceRelativePath));
|
|
}
|
|
|
|
isCurrentWorkspace(workspaceIdentifier: ISingleFolderWorkspaceIdentifier | IWorkspaceIdentifier): boolean {
|
|
return isSingleFolderWorkspaceIdentifier(workspaceIdentifier) && resources.isEqual(this.workspace.folders[0].uri, workspaceIdentifier);
|
|
}
|
|
}
|
|
|
|
export class TestStorageService extends InMemoryStorageService {
|
|
readonly _onWillSaveState = this._register(new Emitter<IWillSaveStateEvent>());
|
|
readonly onWillSaveState = this._onWillSaveState.event;
|
|
}
|
|
|
|
export class TestWorkingCopyService extends WorkingCopyService { }
|
|
|
|
export class TestWorkingCopyFileService implements IWorkingCopyFileService {
|
|
|
|
declare readonly _serviceBrand: undefined;
|
|
|
|
onWillRunWorkingCopyFileOperation: Event<WorkingCopyFileEvent> = Event.None;
|
|
onDidFailWorkingCopyFileOperation: Event<WorkingCopyFileEvent> = Event.None;
|
|
onDidRunWorkingCopyFileOperation: Event<WorkingCopyFileEvent> = Event.None;
|
|
|
|
addFileOperationParticipant(participant: IWorkingCopyFileOperationParticipant): IDisposable { return Disposable.None; }
|
|
|
|
async runFileOperationParticipants(target: URI, source: URI | undefined, operation: FileOperation): Promise<void> { }
|
|
|
|
async delete(resource: URI, options?: { useTrash?: boolean | undefined; recursive?: boolean | undefined; } | undefined): Promise<void> { }
|
|
|
|
registerWorkingCopyProvider(provider: (resourceOrFolder: URI) => IWorkingCopy[]): IDisposable { return Disposable.None; }
|
|
|
|
getDirty(resource: URI): IWorkingCopy[] { return []; }
|
|
|
|
move(source: URI, target: URI, overwrite?: boolean | undefined): Promise<IFileStatWithMetadata> { throw new Error('Method not implemented.'); }
|
|
|
|
copy(source: URI, target: URI, overwrite?: boolean | undefined): Promise<IFileStatWithMetadata> { throw new Error('Method not implemented.'); }
|
|
}
|
|
|
|
export function mock<T>(): Ctor<T> {
|
|
return function () { } as any;
|
|
}
|
|
|
|
export interface Ctor<T> {
|
|
new(): T;
|
|
}
|
|
|
|
export class TestExtensionService extends NullExtensionService { }
|