Fix schema compare project test cleanup (#1746)

* cleanup .sqlproj in finally

* unique folder per test run

* fix path
This commit is contained in:
Kim Santiago
2022-11-04 10:33:25 -07:00
committed by GitHub
parent 1aae1d81f2
commit acf3e92e83
2 changed files with 68 additions and 41 deletions

View File

@@ -171,10 +171,13 @@ WITH VALUES
SqlTestDb sourceDb = await SqlTestDb.CreateNewAsync(TestServerType.OnPrem, false, null, SourceScript, "SchemaCompareSource"); SqlTestDb sourceDb = await SqlTestDb.CreateNewAsync(TestServerType.OnPrem, false, null, SourceScript, "SchemaCompareSource");
SqlTestDb targetDb = await SqlTestDb.CreateNewAsync(TestServerType.OnPrem, false, null, TargetScript, "SchemaCompareTarget"); SqlTestDb targetDb = await SqlTestDb.CreateNewAsync(TestServerType.OnPrem, false, null, TargetScript, "SchemaCompareTarget");
string? sourceProjectPath = null;
string? targetProjectPath = null;
try try
{ {
string sourceProjectPath = SchemaCompareTestUtils.CreateProject(sourceDb, "SourceProject"); sourceProjectPath = SchemaCompareTestUtils.CreateProject(sourceDb, "SourceProject");
string targetProjectPath = SchemaCompareTestUtils.CreateProject(targetDb, "TargetProject"); targetProjectPath = SchemaCompareTestUtils.CreateProject(targetDb, "TargetProject");
string[] sourceScripts = SchemaCompareTestUtils.GetProjectScripts(sourceProjectPath); string[] sourceScripts = SchemaCompareTestUtils.GetProjectScripts(sourceProjectPath);
string[] targetScripts = SchemaCompareTestUtils.GetProjectScripts(targetProjectPath); string[] targetScripts = SchemaCompareTestUtils.GetProjectScripts(targetProjectPath);
@@ -190,15 +193,15 @@ WITH VALUES
SchemaCompareOperation schemaCompareOperation = new(schemaCompareParams, null, null); SchemaCompareOperation schemaCompareOperation = new(schemaCompareParams, null, null);
ValidateSchemaCompareWithExcludeIncludeResults(schemaCompareOperation); ValidateSchemaCompareWithExcludeIncludeResults(schemaCompareOperation);
// cleanup
SchemaCompareTestUtils.VerifyAndCleanup(sourceProjectPath);
SchemaCompareTestUtils.VerifyAndCleanup(targetProjectPath);
} }
finally finally
{ {
sourceDb.Cleanup(); sourceDb.Cleanup();
targetDb.Cleanup(); targetDb.Cleanup();
// cleanup
SchemaCompareTestUtils.VerifyAndCleanup(sourceProjectPath);
SchemaCompareTestUtils.VerifyAndCleanup(targetProjectPath);
} }
} }
@@ -254,9 +257,11 @@ WITH VALUES
SqlTestDb sourceDb = await SqlTestDb.CreateNewAsync(TestServerType.OnPrem, false, null, SourceScript, "SchemaCompareSource"); SqlTestDb sourceDb = await SqlTestDb.CreateNewAsync(TestServerType.OnPrem, false, null, SourceScript, "SchemaCompareSource");
SqlTestDb targetDb = await SqlTestDb.CreateNewAsync(TestServerType.OnPrem, false, null, TargetScript, "SchemaCompareTarget"); SqlTestDb targetDb = await SqlTestDb.CreateNewAsync(TestServerType.OnPrem, false, null, TargetScript, "SchemaCompareTarget");
string? targetProjectPath = null;
try try
{ {
string targetProjectPath = SchemaCompareTestUtils.CreateProject(targetDb, "TargetProject"); targetProjectPath = SchemaCompareTestUtils.CreateProject(targetDb, "TargetProject");
string[] targetScripts = SchemaCompareTestUtils.GetProjectScripts(targetProjectPath); string[] targetScripts = SchemaCompareTestUtils.GetProjectScripts(targetProjectPath);
SchemaCompareEndpointInfo sourceInfo = CreateTestEndpoint(SchemaCompareEndpointType.Database, sourceDb.DatabaseName); SchemaCompareEndpointInfo sourceInfo = CreateTestEndpoint(SchemaCompareEndpointType.Database, sourceDb.DatabaseName);
@@ -270,14 +275,14 @@ WITH VALUES
SchemaCompareOperation schemaCompareOperation = new(schemaCompareParams, result.ConnectionInfo, null); SchemaCompareOperation schemaCompareOperation = new(schemaCompareParams, result.ConnectionInfo, null);
ValidateSchemaCompareWithExcludeIncludeResults(schemaCompareOperation); ValidateSchemaCompareWithExcludeIncludeResults(schemaCompareOperation);
// cleanup
SchemaCompareTestUtils.VerifyAndCleanup(targetProjectPath);
} }
finally finally
{ {
sourceDb.Cleanup(); sourceDb.Cleanup();
targetDb.Cleanup(); targetDb.Cleanup();
// cleanup
SchemaCompareTestUtils.VerifyAndCleanup(targetProjectPath);
} }
} }
@@ -325,11 +330,15 @@ WITH VALUES
// create dacpacs from databases // create dacpacs from databases
SqlTestDb sourceDb = await SqlTestDb.CreateNewAsync(TestServerType.OnPrem, false, null, SourceScript, "SchemaCompareSource"); SqlTestDb sourceDb = await SqlTestDb.CreateNewAsync(TestServerType.OnPrem, false, null, SourceScript, "SchemaCompareSource");
SqlTestDb targetDb = await SqlTestDb.CreateNewAsync(TestServerType.OnPrem, false, null, TargetScript, "SchemaCompareTarget"); SqlTestDb targetDb = await SqlTestDb.CreateNewAsync(TestServerType.OnPrem, false, null, TargetScript, "SchemaCompareTarget");
string? sourceDacpacFilePath = null;
string? targetProjectPath = null;
try try
{ {
string sourceDacpacFilePath = SchemaCompareTestUtils.CreateDacpac(sourceDb); sourceDacpacFilePath = SchemaCompareTestUtils.CreateDacpac(sourceDb);
string targetProjectPath = SchemaCompareTestUtils.CreateProject(targetDb, "TargetProject"); targetProjectPath = SchemaCompareTestUtils.CreateProject(targetDb, "TargetProject");
string[] targetScripts = SchemaCompareTestUtils.GetProjectScripts(targetProjectPath); string[] targetScripts = SchemaCompareTestUtils.GetProjectScripts(targetProjectPath);
SchemaCompareEndpointInfo sourceInfo = CreateTestEndpoint(SchemaCompareEndpointType.Dacpac, sourceDacpacFilePath); SchemaCompareEndpointInfo sourceInfo = CreateTestEndpoint(SchemaCompareEndpointType.Dacpac, sourceDacpacFilePath);
@@ -344,14 +353,15 @@ WITH VALUES
SchemaCompareOperation schemaCompareOperation = new(schemaCompareParams, null, null); SchemaCompareOperation schemaCompareOperation = new(schemaCompareParams, null, null);
ValidateSchemaCompareWithExcludeIncludeResults(schemaCompareOperation); ValidateSchemaCompareWithExcludeIncludeResults(schemaCompareOperation);
// cleanup
SchemaCompareTestUtils.VerifyAndCleanup(sourceDacpacFilePath);
SchemaCompareTestUtils.VerifyAndCleanup(targetProjectPath);
} }
finally finally
{ {
sourceDb.Cleanup(); sourceDb.Cleanup();
targetDb.Cleanup(); targetDb.Cleanup();
// cleanup
SchemaCompareTestUtils.VerifyAndCleanup(sourceDacpacFilePath);
SchemaCompareTestUtils.VerifyAndCleanup(targetProjectPath);
} }
} }
@@ -464,9 +474,11 @@ WITH VALUES
SqlTestDb sourceDb = await SqlTestDb.CreateNewAsync(TestServerType.OnPrem, false, null, SourceScript, "SchemaCompareSource"); SqlTestDb sourceDb = await SqlTestDb.CreateNewAsync(TestServerType.OnPrem, false, null, SourceScript, "SchemaCompareSource");
SqlTestDb targetDb = await SqlTestDb.CreateNewAsync(TestServerType.OnPrem, false, null, TargetScript, "SchemaCompareTarget"); SqlTestDb targetDb = await SqlTestDb.CreateNewAsync(TestServerType.OnPrem, false, null, TargetScript, "SchemaCompareTarget");
string? sourceProjectPath = null;
try try
{ {
string sourceProjectPath = SchemaCompareTestUtils.CreateProject(sourceDb, "SourceProject"); sourceProjectPath = SchemaCompareTestUtils.CreateProject(sourceDb, "SourceProject");
string[] sourceScripts = SchemaCompareTestUtils.GetProjectScripts(sourceProjectPath); string[] sourceScripts = SchemaCompareTestUtils.GetProjectScripts(sourceProjectPath);
SchemaCompareEndpointInfo sourceInfo = new(); SchemaCompareEndpointInfo sourceInfo = new();
@@ -495,14 +507,14 @@ WITH VALUES
}; };
ValidateSchemaCompareScriptGenerationWithExcludeIncludeResults(schemaCompareOperation, generateScriptParams); ValidateSchemaCompareScriptGenerationWithExcludeIncludeResults(schemaCompareOperation, generateScriptParams);
// cleanup
SchemaCompareTestUtils.VerifyAndCleanup(sourceProjectPath);
} }
finally finally
{ {
sourceDb.Cleanup(); sourceDb.Cleanup();
targetDb.Cleanup(); targetDb.Cleanup();
// cleanup
SchemaCompareTestUtils.VerifyAndCleanup(sourceProjectPath);
} }
} }
@@ -588,9 +600,11 @@ WITH VALUES
SqlTestDb sourceDb = await SqlTestDb.CreateNewAsync(TestServerType.OnPrem, false, null, SourceScript, "SchemaCompareSource"); SqlTestDb sourceDb = await SqlTestDb.CreateNewAsync(TestServerType.OnPrem, false, null, SourceScript, "SchemaCompareSource");
SqlTestDb targetDb = await SqlTestDb.CreateNewAsync(TestServerType.OnPrem, false, null, null, "SchemaCompareTarget"); SqlTestDb targetDb = await SqlTestDb.CreateNewAsync(TestServerType.OnPrem, false, null, null, "SchemaCompareTarget");
string? sourceProjectPath = null;
try try
{ {
string sourceProjectPath = SchemaCompareTestUtils.CreateProject(sourceDb, "SourceProject"); sourceProjectPath = SchemaCompareTestUtils.CreateProject(sourceDb, "SourceProject");
string[] sourceScripts = SchemaCompareTestUtils.GetProjectScripts(sourceProjectPath); string[] sourceScripts = SchemaCompareTestUtils.GetProjectScripts(sourceProjectPath);
SchemaCompareEndpointInfo sourceInfo = CreateTestEndpoint(SchemaCompareEndpointType.Project, Path.Combine(sourceProjectPath, "SourceProject.sqlproj"), sourceScripts); SchemaCompareEndpointInfo sourceInfo = CreateTestEndpoint(SchemaCompareEndpointType.Project, Path.Combine(sourceProjectPath, "SourceProject.sqlproj"), sourceScripts);
@@ -633,14 +647,14 @@ WITH VALUES
Assert.True(schemaCompareOperation.ComparisonResult.IsValid); Assert.True(schemaCompareOperation.ComparisonResult.IsValid);
Assert.True(schemaCompareOperation.ComparisonResult.IsEqual); Assert.True(schemaCompareOperation.ComparisonResult.IsEqual);
Assert.That(schemaCompareOperation.ComparisonResult.Differences, Is.Empty); Assert.That(schemaCompareOperation.ComparisonResult.Differences, Is.Empty);
// cleanup
SchemaCompareTestUtils.VerifyAndCleanup(sourceProjectPath);
} }
finally finally
{ {
sourceDb.Cleanup(); sourceDb.Cleanup();
targetDb.Cleanup(); targetDb.Cleanup();
// cleanup
SchemaCompareTestUtils.VerifyAndCleanup(sourceProjectPath);
} }
} }
@@ -723,11 +737,14 @@ WITH VALUES
string folderPath = Path.Combine(Environment.GetFolderPath(Environment.SpecialFolder.LocalApplicationData), "SchemaCompareTest"); string folderPath = Path.Combine(Environment.GetFolderPath(Environment.SpecialFolder.LocalApplicationData), "SchemaCompareTest");
Directory.CreateDirectory(folderPath); Directory.CreateDirectory(folderPath);
string? sourceDacpacFilePath = null;
string? targetProjectPath = null;
try try
{ {
string sourceDacpacFilePath = SchemaCompareTestUtils.CreateDacpac(sourceDb); sourceDacpacFilePath = SchemaCompareTestUtils.CreateDacpac(sourceDb);
string targetProjectPath = SchemaCompareTestUtils.CreateProject(targetDb, "TargetProject"); targetProjectPath = SchemaCompareTestUtils.CreateProject(targetDb, "TargetProject");
string[] targetScripts = SchemaCompareTestUtils.GetProjectScripts(targetProjectPath); string[] targetScripts = SchemaCompareTestUtils.GetProjectScripts(targetProjectPath);
SchemaCompareEndpointInfo sourceInfo = CreateTestEndpoint(SchemaCompareEndpointType.Dacpac, sourceDacpacFilePath); SchemaCompareEndpointInfo sourceInfo = CreateTestEndpoint(SchemaCompareEndpointType.Dacpac, sourceDacpacFilePath);
@@ -778,15 +795,15 @@ WITH VALUES
Assert.True(schemaCompareOperation.ComparisonResult.IsValid); Assert.True(schemaCompareOperation.ComparisonResult.IsValid);
Assert.True(schemaCompareOperation.ComparisonResult.IsEqual); Assert.True(schemaCompareOperation.ComparisonResult.IsEqual);
Assert.That(schemaCompareOperation.ComparisonResult.Differences, Is.Empty); Assert.That(schemaCompareOperation.ComparisonResult.Differences, Is.Empty);
// cleanup
SchemaCompareTestUtils.VerifyAndCleanup(sourceDacpacFilePath);
SchemaCompareTestUtils.VerifyAndCleanup(targetProjectPath);
} }
finally finally
{ {
sourceDb.Cleanup(); sourceDb.Cleanup();
targetDb.Cleanup(); targetDb.Cleanup();
// cleanup
SchemaCompareTestUtils.VerifyAndCleanup(sourceDacpacFilePath);
SchemaCompareTestUtils.VerifyAndCleanup(targetProjectPath);
} }
} }
@@ -801,10 +818,12 @@ WITH VALUES
SqlTestDb sourceDb = await SqlTestDb.CreateNewAsync(TestServerType.OnPrem, false, null, SourceScript, "SchemaCompareSource"); SqlTestDb sourceDb = await SqlTestDb.CreateNewAsync(TestServerType.OnPrem, false, null, SourceScript, "SchemaCompareSource");
SqlTestDb targetDb = await SqlTestDb.CreateNewAsync(TestServerType.OnPrem, false, null, null, "SchemaCompareTarget"); SqlTestDb targetDb = await SqlTestDb.CreateNewAsync(TestServerType.OnPrem, false, null, null, "SchemaCompareTarget");
string? targetProjectPath = null;
try try
{ {
string targetProjectPath = SchemaCompareTestUtils.CreateProject(targetDb, "TargetProject"); targetProjectPath = SchemaCompareTestUtils.CreateProject(targetDb, "TargetProject");
string[] targetScripts = SchemaCompareTestUtils.GetProjectScripts(targetProjectPath); string[] targetScripts = SchemaCompareTestUtils.GetProjectScripts(targetProjectPath);
SchemaCompareEndpointInfo sourceInfo = CreateTestEndpoint(SchemaCompareEndpointType.Database, sourceDb.DatabaseName); SchemaCompareEndpointInfo sourceInfo = CreateTestEndpoint(SchemaCompareEndpointType.Database, sourceDb.DatabaseName);
@@ -855,14 +874,14 @@ WITH VALUES
Assert.True(schemaCompareOperation.ComparisonResult.IsValid); Assert.True(schemaCompareOperation.ComparisonResult.IsValid);
Assert.True(schemaCompareOperation.ComparisonResult.IsEqual); Assert.True(schemaCompareOperation.ComparisonResult.IsEqual);
Assert.That(schemaCompareOperation.ComparisonResult.Differences, Is.Empty); Assert.That(schemaCompareOperation.ComparisonResult.Differences, Is.Empty);
// cleanup
SchemaCompareTestUtils.VerifyAndCleanup(targetProjectPath);
} }
finally finally
{ {
sourceDb.Cleanup(); sourceDb.Cleanup();
targetDb.Cleanup(); targetDb.Cleanup();
// cleanup
SchemaCompareTestUtils.VerifyAndCleanup(targetProjectPath);
} }
} }
@@ -875,11 +894,14 @@ WITH VALUES
SqlTestDb sourceDb = await SqlTestDb.CreateNewAsync(TestServerType.OnPrem, false, null, SourceScript, "SchemaCompareSource"); SqlTestDb sourceDb = await SqlTestDb.CreateNewAsync(TestServerType.OnPrem, false, null, SourceScript, "SchemaCompareSource");
SqlTestDb targetDb = await SqlTestDb.CreateNewAsync(TestServerType.OnPrem, false, null, null, "SchemaCompareTarget"); SqlTestDb targetDb = await SqlTestDb.CreateNewAsync(TestServerType.OnPrem, false, null, null, "SchemaCompareTarget");
string? sourceProjectPath = null;
string? targetProjectPath = null;
try try
{ {
string sourceProjectPath = SchemaCompareTestUtils.CreateProject(sourceDb, "SourceProject"); sourceProjectPath = SchemaCompareTestUtils.CreateProject(sourceDb, "SourceProject");
string[] sourceScripts = SchemaCompareTestUtils.GetProjectScripts(sourceProjectPath); string[] sourceScripts = SchemaCompareTestUtils.GetProjectScripts(sourceProjectPath);
string targetProjectPath = SchemaCompareTestUtils.CreateProject(targetDb, "TargetProject"); targetProjectPath = SchemaCompareTestUtils.CreateProject(targetDb, "TargetProject");
string[] targetScripts = SchemaCompareTestUtils.GetProjectScripts(targetProjectPath); string[] targetScripts = SchemaCompareTestUtils.GetProjectScripts(targetProjectPath);
SchemaCompareEndpointInfo sourceInfo = CreateTestEndpoint(SchemaCompareEndpointType.Project, Path.Combine(sourceProjectPath, "SourceProject.sqlproj"), sourceScripts); SchemaCompareEndpointInfo sourceInfo = CreateTestEndpoint(SchemaCompareEndpointType.Project, Path.Combine(sourceProjectPath, "SourceProject.sqlproj"), sourceScripts);
@@ -930,15 +952,15 @@ WITH VALUES
Assert.True(schemaCompareOperation.ComparisonResult.IsValid); Assert.True(schemaCompareOperation.ComparisonResult.IsValid);
Assert.True(schemaCompareOperation.ComparisonResult.IsEqual); Assert.True(schemaCompareOperation.ComparisonResult.IsEqual);
Assert.That(schemaCompareOperation.ComparisonResult.Differences, Is.Empty); Assert.That(schemaCompareOperation.ComparisonResult.Differences, Is.Empty);
// cleanup
SchemaCompareTestUtils.VerifyAndCleanup(sourceProjectPath);
SchemaCompareTestUtils.VerifyAndCleanup(targetProjectPath);
} }
finally finally
{ {
sourceDb.Cleanup(); sourceDb.Cleanup();
targetDb.Cleanup(); targetDb.Cleanup();
// cleanup
SchemaCompareTestUtils.VerifyAndCleanup(sourceProjectPath);
SchemaCompareTestUtils.VerifyAndCleanup(targetProjectPath);
} }
} }

View File

@@ -24,8 +24,13 @@ namespace Microsoft.SqlTools.ServiceLayer.IntegrationTests.SchemaCompare
{ {
private static string sqlProjectsFolder = Path.Combine("..", "..", "..", "SchemaCompare", "SqlProjects"); private static string sqlProjectsFolder = Path.Combine("..", "..", "..", "SchemaCompare", "SqlProjects");
internal static void VerifyAndCleanup(string path) internal static void VerifyAndCleanup(string? path)
{ {
if (path == null)
{
return;
}
// verify it was created... // verify it was created...
Assert.True(File.Exists(path) || Directory.Exists(path), $"File or directory {path} was expected to exist but did not"); Assert.True(File.Exists(path) || Directory.Exists(path), $"File or directory {path} was expected to exist but did not");
@@ -98,7 +103,7 @@ namespace Microsoft.SqlTools.ServiceLayer.IntegrationTests.SchemaCompare
/// <returns>Full path to the .sqlproj</returns> /// <returns>Full path to the .sqlproj</returns>
internal static string CreateSqlProj(string projectName) internal static string CreateSqlProj(string projectName)
{ {
string folderPath = Path.Combine(Environment.GetFolderPath(Environment.SpecialFolder.LocalApplicationData), "SchemaCompareTest", projectName); string folderPath = Path.Combine(Environment.GetFolderPath(Environment.SpecialFolder.LocalApplicationData), "SchemaCompareTest", $"{TestContext.CurrentContext?.Test?.Name}_{projectName}_{DateTime.Now.Ticks.ToString()}");
Directory.CreateDirectory(folderPath); Directory.CreateDirectory(folderPath);
string sqlprojFilePath = Path.Combine(folderPath, projectName + ".sqlproj"); string sqlprojFilePath = Path.Combine(folderPath, projectName + ".sqlproj");
File.Copy(Path.Combine(sqlProjectsFolder, "emptyTemplate.sqlproj"), sqlprojFilePath); File.Copy(Path.Combine(sqlProjectsFolder, "emptyTemplate.sqlproj"), sqlprojFilePath);