add signed verification test

This commit is contained in:
Bryan Thornbury 2016-10-04 16:48:14 -07:00
parent 3149af8941
commit bf5404373f

View file

@ -16,6 +16,7 @@ using Microsoft.DotNet.Cli;
using Microsoft.DotNet.Tools.Migrate; using Microsoft.DotNet.Tools.Migrate;
using Build3Command = Microsoft.DotNet.Tools.Test.Utilities.Build3Command; using Build3Command = Microsoft.DotNet.Tools.Test.Utilities.Build3Command;
using BuildCommand = Microsoft.DotNet.Tools.Test.Utilities.BuildCommand; using BuildCommand = Microsoft.DotNet.Tools.Test.Utilities.BuildCommand;
using System.Runtime.Loader;
namespace Microsoft.DotNet.Migration.Tests namespace Microsoft.DotNet.Migration.Tests
{ {
@ -26,7 +27,6 @@ namespace Microsoft.DotNet.Migration.Tests
// https://github.com/dotnet/sdk/issues/73 [InlineData("TestAppWithLibrary/TestApp", false)] // https://github.com/dotnet/sdk/issues/73 [InlineData("TestAppWithLibrary/TestApp", false)]
[InlineData("TestAppWithRuntimeOptions")] [InlineData("TestAppWithRuntimeOptions")]
[InlineData("TestAppWithContents")] [InlineData("TestAppWithContents")]
[InlineData("TestAppWithSigning")]
public void It_migrates_apps(string projectName) public void It_migrates_apps(string projectName)
{ {
var projectDirectory = TestAssetsManager.CreateTestInstance(projectName, callingMethod: "i").WithLockFiles().Path; var projectDirectory = TestAssetsManager.CreateTestInstance(projectName, callingMethod: "i").WithLockFiles().Path;
@ -45,6 +45,25 @@ namespace Microsoft.DotNet.Migration.Tests
VerifyAllMSBuildOutputsRunnable(projectDirectory); VerifyAllMSBuildOutputsRunnable(projectDirectory);
} }
public void It_migrates_signed_apps(string projectName)
{
var projectDirectory = TestAssetsManager.CreateTestInstance("TestAppWithSigning", callingMethod: "i").WithLockFiles().Path;
CleanBinObj(projectDirectory);
var outputComparisonData = BuildProjectJsonMigrateBuildMSBuild(projectDirectory, projectName);
var outputsIdentical =
outputComparisonData.ProjectJsonBuildOutputs.SetEquals(outputComparisonData.MSBuildBuildOutputs);
if (!outputsIdentical)
{
OutputDiagnostics(outputComparisonData);
}
outputsIdentical.Should().BeTrue();
VerifyAllMSBuildOutputsRunnable(projectDirectory);
VerifyAllMSBuildOutputsAreSigned(projectDirectory);
}
[Fact] [Fact]
public void It_migrates_dotnet_new_console_with_identical_outputs() public void It_migrates_dotnet_new_console_with_identical_outputs()
{ {
@ -238,6 +257,21 @@ namespace Microsoft.DotNet.Migration.Tests
} }
} }
private void VerifyAllMSBuildOutputsAreSigned(string projectDirectory)
{
var dllFileName = Path.GetFileName(projectDirectory) + ".dll";
var runnableDlls = Directory.EnumerateFiles(Path.Combine(projectDirectory, "bin"), dllFileName,
SearchOption.AllDirectories);
foreach (var dll in runnableDlls)
{
var assemblyName = AssemblyLoadContext.GetAssemblyName(dll);
var token = assemblyName.GetPublicKeyToken();
token.Should().NotBeNullOrEmpty();
}
}
private MigratedBuildComparisonData BuildProjectJsonMigrateBuildMSBuild(string projectDirectory, string projectName=null) private MigratedBuildComparisonData BuildProjectJsonMigrateBuildMSBuild(string projectDirectory, string projectName=null)
{ {
BuildProjectJson(projectDirectory); BuildProjectJson(projectDirectory);