From 19935552b19120751a6b16e50ea942f65f3423af Mon Sep 17 00:00:00 2001 From: Benjin Dubishar Date: Tue, 7 Feb 2023 19:06:13 -0800 Subject: [PATCH] Adds support for checking and updating cross-compatibility for SQL Projects (#1847) * Adding cross-platform check and update * Checkpoint * checkpoint * Updating for latest nuget package * Correctly typing the result object --- Packages.props | 4 +- ...rver.DacFx.Projects.161.8056.0-alpha.nupkg | Bin 48817 -> 0 bytes ...rver.DacFx.Projects.161.8086.0-alpha.nupkg | Bin 0 -> 52560 bytes .../Projects/GetCrossPlatformCompatibility.cs | 28 +++++ .../Projects/UpdateProjectForCrossPlatform.cs | 15 +++ .../SqlProjects/SqlProjectsService.cs | 110 ++++++++++++++---- ...Tools.ServiceLayer.IntegrationTests.csproj | 3 + .../SqlProjects/Inputs/SSDTProject.sqlproj | 67 +++++++++++ .../SqlProjects/SqlProjectsServiceTests.cs | 52 +++++++-- 9 files changed, 249 insertions(+), 30 deletions(-) delete mode 100644 bin/nuget/Microsoft.SqlServer.DacFx.Projects.161.8056.0-alpha.nupkg create mode 100644 bin/nuget/Microsoft.SqlServer.DacFx.Projects.161.8086.0-alpha.nupkg create mode 100644 src/Microsoft.SqlTools.ServiceLayer/SqlProjects/Contracts/Projects/GetCrossPlatformCompatibility.cs create mode 100644 src/Microsoft.SqlTools.ServiceLayer/SqlProjects/Contracts/Projects/UpdateProjectForCrossPlatform.cs create mode 100644 test/Microsoft.SqlTools.ServiceLayer.IntegrationTests/SqlProjects/Inputs/SSDTProject.sqlproj diff --git a/Packages.props b/Packages.props index 9b8c20d4..da22294c 100644 --- a/Packages.props +++ b/Packages.props @@ -20,8 +20,8 @@ - - + + diff --git a/bin/nuget/Microsoft.SqlServer.DacFx.Projects.161.8056.0-alpha.nupkg b/bin/nuget/Microsoft.SqlServer.DacFx.Projects.161.8056.0-alpha.nupkg deleted file mode 100644 index 467c2e00c134b0409c3e2213012c6f1d7b44be8e..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 48817 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

c&SxG|C*988rJdi$`)JIUP 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
bqe1Tq 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 literal 0 HcmV?d00001 diff --git a/src/Microsoft.SqlTools.ServiceLayer/SqlProjects/Contracts/Projects/GetCrossPlatformCompatibility.cs b/src/Microsoft.SqlTools.ServiceLayer/SqlProjects/Contracts/Projects/GetCrossPlatformCompatibility.cs new file mode 100644 index 00000000..cd6bbdd4 --- /dev/null +++ b/src/Microsoft.SqlTools.ServiceLayer/SqlProjects/Contracts/Projects/GetCrossPlatformCompatibility.cs @@ -0,0 +1,28 @@ +// +// Copyright (c) Microsoft. All rights reserved. +// Licensed under the MIT license. See LICENSE file in the project root for full license information. +// + +#nullable disable + +using Microsoft.SqlTools.Hosting.Protocol.Contracts; +using Microsoft.SqlTools.ServiceLayer.Utility; + +namespace Microsoft.SqlTools.ServiceLayer.SqlProjects.Contracts +{ + public class GetCrossPlatformCompatiblityRequest + { + public static readonly RequestType Type = RequestType.Create("sqlProjects/getCrossPlatformCompatibility"); + } + + ///

+ /// Result containing whether the project is cross-platform compatible + /// + public class GetCrossPlatformCompatiblityResult : ResultStatus + { + /// + /// Whether the project is cross-platform compatible + /// + public bool IsCrossPlatformCompatible { get; set; } + } +} diff --git a/src/Microsoft.SqlTools.ServiceLayer/SqlProjects/Contracts/Projects/UpdateProjectForCrossPlatform.cs b/src/Microsoft.SqlTools.ServiceLayer/SqlProjects/Contracts/Projects/UpdateProjectForCrossPlatform.cs new file mode 100644 index 00000000..2d43c692 --- /dev/null +++ b/src/Microsoft.SqlTools.ServiceLayer/SqlProjects/Contracts/Projects/UpdateProjectForCrossPlatform.cs @@ -0,0 +1,15 @@ +// +// Copyright (c) Microsoft. All rights reserved. +// Licensed under the MIT license. See LICENSE file in the project root for full license information. +// + +using Microsoft.SqlTools.Hosting.Protocol.Contracts; +using Microsoft.SqlTools.ServiceLayer.Utility; + +namespace Microsoft.SqlTools.ServiceLayer.SqlProjects.Contracts +{ + public class UpdateProjectForCrossPlatformRequest + { + public static readonly RequestType Type = RequestType.Create("sqlProjects/updateProjectForCrossPlatform"); + } +} diff --git a/src/Microsoft.SqlTools.ServiceLayer/SqlProjects/SqlProjectsService.cs b/src/Microsoft.SqlTools.ServiceLayer/SqlProjects/SqlProjectsService.cs index 0d8b212f..091fb90b 100644 --- a/src/Microsoft.SqlTools.ServiceLayer/SqlProjects/SqlProjectsService.cs +++ b/src/Microsoft.SqlTools.ServiceLayer/SqlProjects/SqlProjectsService.cs @@ -44,6 +44,8 @@ namespace Microsoft.SqlTools.ServiceLayer.SqlProjects serviceHost.SetRequestHandler(OpenSqlProjectRequest.Type, HandleOpenSqlProjectRequest, isParallelProcessingSupported: true); serviceHost.SetRequestHandler(CloseSqlProjectRequest.Type, HandleCloseSqlProjectRequest, isParallelProcessingSupported: true); serviceHost.SetRequestHandler(NewSqlProjectRequest.Type, HandleNewSqlProjectRequest, isParallelProcessingSupported: true); + serviceHost.SetRequestHandler(GetCrossPlatformCompatiblityRequest.Type, HandleGetCrossPlatformCompatibilityRequest, isParallelProcessingSupported: true); + serviceHost.SetRequestHandler(UpdateProjectForCrossPlatformRequest.Type, HandleUpdateProjectForCrossPlatformRequest, isParallelProcessingSupported: false); // SQL object script functions serviceHost.SetRequestHandler(AddSqlObjectScriptRequest.Type, HandleAddSqlObjectScriptRequest, isParallelProcessingSupported: false); @@ -78,12 +80,29 @@ namespace Microsoft.SqlTools.ServiceLayer.SqlProjects { await RunWithErrorHandling(async () => { - await SqlProject.CreateProjectAsync(requestParams.ProjectUri, requestParams.SqlProjectType, requestParams.DatabaseSchemaProvider); + await SqlProject.CreateProjectAsync(requestParams.ProjectUri, new CreateSqlProjectParams() { ProjectType = requestParams.SqlProjectType, DspVersion = requestParams.DatabaseSchemaProvider }); GetProject(requestParams.ProjectUri); // load into the cache - }, requestContext); } + internal async Task HandleGetCrossPlatformCompatibilityRequest(SqlProjectParams requestParams, RequestContext requestContext) + { + await RunWithErrorHandling(() => + { + return new GetCrossPlatformCompatiblityResult() + { + Success = true, + ErrorMessage = null, + IsCrossPlatformCompatible = GetProject(requestParams.ProjectUri).CrossPlatformCompatible + }; + }, requestContext); + } + + internal async Task HandleUpdateProjectForCrossPlatformRequest(SqlProjectParams requestParams, RequestContext requestContext) + { + await RunWithErrorHandling(() => GetProject(requestParams.ProjectUri).UpdateForCrossPlatform(), requestContext); + } + #endregion #region SQL object script functions @@ -119,25 +138,33 @@ namespace Microsoft.SqlTools.ServiceLayer.SqlProjects internal async Task HandleAddDacpacReferenceRequest(AddDacpacReferenceParams requestParams, RequestContext requestContext) { - await RunWithErrorHandling(() => GetProject(requestParams.ProjectUri).DatabaseReferences.Add( - new DacpacReference( - requestParams.DacpacPath, - requestParams.SuppressMissingDependencies, - requestParams.DatabaseVariable, - requestParams.ServerVariable)), - requestContext); + await RunWithErrorHandling(() => + { + SqlProject project = GetProject(requestParams.ProjectUri); + + project.DatabaseReferences.Add( + new DacpacReference( + requestParams.DacpacPath, + requestParams.SuppressMissingDependencies, + project.SqlCmdVariables.Get(requestParams.DatabaseVariable), + project.SqlCmdVariables.Get(requestParams.ServerVariable))); + }, requestContext); } internal async Task HandleAddSqlProjectReferenceRequest(AddSqlProjectReferenceParams requestParams, RequestContext requestContext) { - await RunWithErrorHandling(() => GetProject(requestParams.ProjectUri).DatabaseReferences.Add( - new SqlProjectReference( - requestParams.ProjectPath, - requestParams.ProjectGuid, - requestParams.SuppressMissingDependencies, - requestParams.DatabaseVariable, - requestParams.ServerVariable)), - requestContext); + await RunWithErrorHandling(() => + { + SqlProject project = GetProject(requestParams.ProjectUri); + + project.DatabaseReferences.Add( + new SqlProjectReference( + requestParams.ProjectPath, + requestParams.ProjectGuid, + requestParams.SuppressMissingDependencies, + project.SqlCmdVariables.Get(requestParams.DatabaseVariable), + project.SqlCmdVariables.Get(requestParams.ServerVariable))); + }, requestContext); } internal async Task HandleDeleteDatabaseReferenceRequest(DeleteDatabaseReferenceParams requestParams, RequestContext requestContext) @@ -189,26 +216,67 @@ namespace Microsoft.SqlTools.ServiceLayer.SqlProjects #region Helper methods + /// + /// Synchronous action with standard ResultStatus + /// + /// + /// + /// private async Task RunWithErrorHandling(Action action, RequestContext requestContext) { await RunWithErrorHandling(async () => await Task.Run(action), requestContext); } + /// + /// Asynchronous action with standard ResultStatus + /// + /// + /// + /// private async Task RunWithErrorHandling(Func action, RequestContext requestContext) { - try + await RunWithErrorHandling(async () => { await action(); - await requestContext.SendResult(new ResultStatus() + return new ResultStatus() { Success = true, ErrorMessage = null - }); + }; + }, requestContext); + } + + + /// + /// Synchronous action with custom result + /// + /// + /// + /// + /// + private async Task RunWithErrorHandling(Func action, RequestContext requestContext) where T : ResultStatus, new() + { + await RunWithErrorHandling(async () => await Task.Run(action), requestContext); + } + + /// + /// Asynchronous action with custom result + /// + /// + /// + /// + /// + private async Task RunWithErrorHandling(Func> action, RequestContext requestContext) where T : ResultStatus, new() + { + try + { + T result = await action(); + await requestContext.SendResult(result); } catch (Exception ex) { - await requestContext.SendResult(new ResultStatus() + await requestContext.SendResult(new T() { Success = false, ErrorMessage = ex.Message diff --git a/test/Microsoft.SqlTools.ServiceLayer.IntegrationTests/Microsoft.SqlTools.ServiceLayer.IntegrationTests.csproj b/test/Microsoft.SqlTools.ServiceLayer.IntegrationTests/Microsoft.SqlTools.ServiceLayer.IntegrationTests.csproj index 7eb7a671..edb2fd7d 100644 --- a/test/Microsoft.SqlTools.ServiceLayer.IntegrationTests/Microsoft.SqlTools.ServiceLayer.IntegrationTests.csproj +++ b/test/Microsoft.SqlTools.ServiceLayer.IntegrationTests/Microsoft.SqlTools.ServiceLayer.IntegrationTests.csproj @@ -57,5 +57,8 @@ + + PreserveNewest + diff --git a/test/Microsoft.SqlTools.ServiceLayer.IntegrationTests/SqlProjects/Inputs/SSDTProject.sqlproj b/test/Microsoft.SqlTools.ServiceLayer.IntegrationTests/SqlProjects/Inputs/SSDTProject.sqlproj new file mode 100644 index 00000000..818fb5d1 --- /dev/null +++ b/test/Microsoft.SqlTools.ServiceLayer.IntegrationTests/SqlProjects/Inputs/SSDTProject.sqlproj @@ -0,0 +1,67 @@ + + + + Debug + AnyCPU + TestProjectLegacyNetFramework + 2.0 + 4.1 + {BA5EBA11-C0DE-5EA7-ACED-BABB1E70A575} + Microsoft.Data.Tools.Schema.Sql.Sql150DatabaseSchemaProvider + Database + + + TestProjectLegacyNetFramework + TestProjectLegacyNetFramework + 1033, CI + BySchemaAndSchemaType + True + v4.7.2 + CS + Properties + False + True + True + + + bin\Release\ + $(MSBuildProjectName).sql + False + pdbonly + true + false + true + prompt + 4 + + + bin\Debug\ + $(MSBuildProjectName).sql + false + true + full + false + true + true + prompt + 4 + + + 11.0 + + True + 11.0 + + + + + + + + + $(DacPacRootPath)\Extensions\Microsoft\SQLDB\Extensions\SqlServer\150\SqlSchemas\master.dacpac + False + master + + + \ No newline at end of file diff --git a/test/Microsoft.SqlTools.ServiceLayer.IntegrationTests/SqlProjects/SqlProjectsServiceTests.cs b/test/Microsoft.SqlTools.ServiceLayer.IntegrationTests/SqlProjects/SqlProjectsServiceTests.cs index 18e1e89d..5a90c422 100644 --- a/test/Microsoft.SqlTools.ServiceLayer.IntegrationTests/SqlProjects/SqlProjectsServiceTests.cs +++ b/test/Microsoft.SqlTools.ServiceLayer.IntegrationTests/SqlProjects/SqlProjectsServiceTests.cs @@ -3,8 +3,6 @@ // Licensed under the MIT license. See LICENSE file in the project root for full license information. // -#nullable disable - using System; using System.IO; using System.Linq; @@ -192,7 +190,7 @@ namespace Microsoft.SqlTools.ServiceLayer.IntegrationTests.SqlProjects Assert.AreEqual(1, service.Projects[projectUri].DatabaseReferences.Count, "Database references after adding system db reference"); SystemDatabaseReference systemDbRef = (SystemDatabaseReference)service.Projects[projectUri].DatabaseReferences.First(x => x is SystemDatabaseReference); Assert.AreEqual(SystemDatabase.MSDB, systemDbRef.SystemDb, "Referenced system DB"); - Assert.AreEqual("$(EmEssDeeBee)", systemDbRef.DatabaseVariable); + Assert.AreEqual("$(EmEssDeeBee)", systemDbRef.DatabaseVariableLiteralName); Assert.IsFalse(systemDbRef.SuppressMissingDependencies, nameof(systemDbRef.SuppressMissingDependencies)); // Validate adding a dacpac reference @@ -212,8 +210,8 @@ namespace Microsoft.SqlTools.ServiceLayer.IntegrationTests.SqlProjects Assert.AreEqual(2, service.Projects[projectUri].DatabaseReferences.Count, "Database references after adding dacpac reference"); DacpacReference dacpacRef = (DacpacReference)service.Projects[projectUri].DatabaseReferences.First(x => x is DacpacReference); Assert.AreEqual(FileUtils.NormalizePath(mockReferencePath, PlatformID.Win32NT), dacpacRef.DacpacPath, "Referenced dacpac"); - Assert.AreEqual(databaseVar.Name, dacpacRef.DatabaseVariable); - Assert.AreEqual(serverVar.Name, dacpacRef.ServerVariable); + Assert.AreEqual(databaseVar.Name, dacpacRef.DatabaseVariable.VarName); + Assert.AreEqual(serverVar.Name, dacpacRef.ServerVariable.VarName); Assert.IsFalse(dacpacRef.SuppressMissingDependencies, nameof(dacpacRef.SuppressMissingDependencies)); // Validate adding a project reference @@ -235,8 +233,8 @@ namespace Microsoft.SqlTools.ServiceLayer.IntegrationTests.SqlProjects SqlProjectReference projectRef = (SqlProjectReference)service.Projects[projectUri].DatabaseReferences.First(x => x is SqlProjectReference); Assert.AreEqual(mockReferencePath, projectRef.ProjectPath, "Referenced project"); Assert.AreEqual(TEST_GUID, projectRef.ProjectGuid, "Referenced project GUID"); - Assert.AreEqual(databaseVar.Name, projectRef.DatabaseVariable); - Assert.AreEqual(serverVar.Name, projectRef.ServerVariable); + Assert.AreEqual(databaseVar.Name, projectRef.DatabaseVariable.VarName); + Assert.AreEqual(serverVar.Name, projectRef.ServerVariable.VarName); Assert.IsFalse(projectRef.SuppressMissingDependencies, nameof(projectRef.SuppressMissingDependencies)); // Validate deleting a reference @@ -337,6 +335,46 @@ namespace Microsoft.SqlTools.ServiceLayer.IntegrationTests.SqlProjects requestMock.AssertSuccess(nameof(service.HandleDeleteSqlCmdVariableRequest)); Assert.AreEqual(0, service.Projects[projectUri].SqlCmdVariables.Count, "Number of SQLCMD variables after deletion not as expected"); } + + [Test] + public async Task TestCrossPlatformUpdates() + { + string inputProjectPath = Path.Join(Path.GetDirectoryName(typeof(SqlProjectsServiceTests).Assembly.Location), "SqlProjects", "Inputs", "SSDTProject.sqlproj"); + string projectPath = Path.Join(TestContext.CurrentContext.GetTestWorkingFolder(), "SSDTProject.sqlproj"); + + Directory.CreateDirectory(Path.GetDirectoryName(projectPath)!); + File.Copy(inputProjectPath, projectPath); + SqlProjectsService service = new(); + + /// Validate that the cross-platform status can be fetched + MockRequest getRequestMock = new(); + await service.HandleGetCrossPlatformCompatibilityRequest(new SqlProjectParams() + { + ProjectUri = projectPath + }, getRequestMock.Object); + + getRequestMock.AssertSuccess(nameof(service.HandleGetCrossPlatformCompatibilityRequest)); + Assert.IsFalse(getRequestMock.Result.IsCrossPlatformCompatible, "Input file should not be cross-platform compatible before conversion"); + + // Validate that the project can be updated + MockRequest updateRequestMock = new(); + await service.HandleUpdateProjectForCrossPlatformRequest(new SqlProjectParams() + { + ProjectUri = projectPath, + }, updateRequestMock.Object); + + updateRequestMock.AssertSuccess(nameof(service.HandleUpdateProjectForCrossPlatformRequest)); + + // Validate that the cross-platform status has changed + getRequestMock = new(); + await service.HandleGetCrossPlatformCompatibilityRequest(new SqlProjectParams() + { + ProjectUri = projectPath + }, getRequestMock.Object); + + getRequestMock.AssertSuccess(nameof(service.HandleGetCrossPlatformCompatibilityRequest)); + Assert.IsTrue(((GetCrossPlatformCompatiblityResult)getRequestMock.Result).IsCrossPlatformCompatible, "Input file should be cross-platform compatible after conversion"); + } } internal static class SqlProjectsExtensions