From dc8d703c25bb7e3d02d2637f35736631c501f617 Mon Sep 17 00:00:00 2001 From: Sakshi Sharma <57200045+SakshiS-harma@users.noreply.github.com> Date: Wed, 24 Aug 2022 09:50:22 -0700 Subject: [PATCH] Open Scmp file in Schema Compare extension (#20435) * Open Scmp file in Schema Compare extension * Address comments and fix failing test * Addressed comment --- extensions/schema-compare/package.json | 15 +++++++++++++++ extensions/schema-compare/package.nls.json | 3 ++- extensions/schema-compare/src/extension.ts | 1 + .../schema-compare/src/schemaCompareMainWindow.ts | 13 +++++++++++++ .../schema-compare/src/test/schemaCompare.test.ts | 2 +- 5 files changed, 32 insertions(+), 2 deletions(-) diff --git a/extensions/schema-compare/package.json b/extensions/schema-compare/package.json index 6ab5c859bd..5939aa3952 100644 --- a/extensions/schema-compare/package.json +++ b/extensions/schema-compare/package.json @@ -42,6 +42,10 @@ { "command": "schemaCompare.runComparison", "title": "%schemaCompare.runComparison%" + }, + { + "command": "schemaCompare.openInScmp", + "title": "%schemaCompare.openInScmp%" } ], "languages": [ @@ -91,6 +95,17 @@ { "command": "schemaCompare.runComparison", "when": "false" + }, + { + "command": "schemaCompare.openInScmp", + "when": "false" + } + ], + "explorer/context": [ + { + "command": "schemaCompare.openInScmp", + "when": "resourceExtname == .scmp", + "group": "navigation" } ] } diff --git a/extensions/schema-compare/package.nls.json b/extensions/schema-compare/package.nls.json index ea32f47db0..9e1107ef66 100644 --- a/extensions/schema-compare/package.nls.json +++ b/extensions/schema-compare/package.nls.json @@ -2,5 +2,6 @@ "displayName": "SQL Server Schema Compare", "description": "SQL Server Schema Compare for Azure Data Studio supports comparing the schemas of databases and dacpacs.", "schemaCompare.start": "Schema Compare", - "schemaCompare.runComparison": "Run Schema Comparison" + "schemaCompare.runComparison": "Run Schema Comparison", + "schemaCompare.openInScmp": "Open in Schema Compare" } diff --git a/extensions/schema-compare/src/extension.ts b/extensions/schema-compare/src/extension.ts index ba733d93be..55913eef55 100644 --- a/extensions/schema-compare/src/extension.ts +++ b/extensions/schema-compare/src/extension.ts @@ -10,6 +10,7 @@ import { SchemaCompareMainWindow } from './schemaCompareMainWindow'; export async function activate(extensionContext: vscode.ExtensionContext): Promise { vscode.commands.registerCommand('schemaCompare.start', async (sourceContext: any, targetContext: any = undefined, comparisonResult: any = undefined) => { await new SchemaCompareMainWindow(undefined, extensionContext, undefined).start(sourceContext, targetContext, comparisonResult); }); vscode.commands.registerCommand('schemaCompare.runComparison', async (source: mssql.SchemaCompareEndpointInfo | undefined, target: mssql.SchemaCompareEndpointInfo | undefined, runComparison: boolean = false, comparisonResult: mssql.SchemaCompareResult | undefined) => { await new SchemaCompareMainWindow(undefined, extensionContext, undefined).launch(source, target, runComparison, comparisonResult); }); + vscode.commands.registerCommand('schemaCompare.openInScmp', async (fileUri: vscode.Uri) => { await new SchemaCompareMainWindow(undefined, extensionContext, undefined).openScmpFile(fileUri); }); } export function deactivate(): void { diff --git a/extensions/schema-compare/src/schemaCompareMainWindow.ts b/extensions/schema-compare/src/schemaCompareMainWindow.ts index 9346052d3f..f535307524 100644 --- a/extensions/schema-compare/src/schemaCompareMainWindow.ts +++ b/extensions/schema-compare/src/schemaCompareMainWindow.ts @@ -1089,6 +1089,19 @@ export class SchemaCompareMainWindow { } let fileUri = fileUris[0]; + this.openScmpFile(fileUri, true); + } + + /** + * Primary functional entrypoint for opening the schema comparison window with the scmp file Uri provided. + * @param fileUri .scmp file URI to open Schema Compare extension with + * @param callFromWithinSC is the call from openScmp? False by default, since it is one of the direct entry points. + */ + public async openScmpFile(fileUri: vscode.Uri, callFromWithinSC: boolean = false): Promise { + if (!callFromWithinSC) { + //Instantiate and open schema compare window if called from "Open in Schema Compare" + await this.launch(undefined, undefined, false, undefined); + } const service = await this.getService(); let startTime = Date.now(); const result = await service.schemaCompareOpenScmp(fileUri.fsPath); diff --git a/extensions/schema-compare/src/test/schemaCompare.test.ts b/extensions/schema-compare/src/test/schemaCompare.test.ts index a2f11e37ca..e79b1f36ca 100644 --- a/extensions/schema-compare/src/test/schemaCompare.test.ts +++ b/extensions/schema-compare/src/test/schemaCompare.test.ts @@ -169,7 +169,7 @@ describe('SchemaCompareMainWindow.results @DacFx@', function (): void { schemaCompareResult.sourceEndpointInfo = setDacpacEndpointInfo(mocksource); schemaCompareResult.targetEndpointInfo = setDacpacEndpointInfo(mocktarget); - await schemaCompareResult.openScmp(); + await schemaCompareResult.openScmpFile(files[0], true); should(showErrorMessageSpy.calledOnce).be.true(); should.equal(showErrorMessageSpy.getCall(0).args[0], loc.openScmpErrorMessage('error1'));