From 9b05f240aed28b92a8e49366d4cc1ae174e30704 Mon Sep 17 00:00:00 2001 From: Pranav K Date: Mon, 15 Jul 2019 19:38:11 -0700 Subject: [PATCH] Fixup desktop tests again \n\nCommit migrated from https://github.com/dotnet/aspnetcore-tooling/commit/bd5a57c0e81532658210c9f1ff2fb07759dd1f99 --- .../IntegrationTests/BuildIntegrationTest.cs | 16 +++++ .../BuildIntegrationTest22NetFx.cs | 71 ++++++++++++++----- .../BuildIntegrationTestLegacy.cs | 17 +++-- .../PublishIntegrationTest.cs | 23 ++++++ 4 files changed, 101 insertions(+), 26 deletions(-) diff --git a/src/Razor/Microsoft.NET.Sdk.Razor/test/IntegrationTests/BuildIntegrationTest.cs b/src/Razor/Microsoft.NET.Sdk.Razor/test/IntegrationTests/BuildIntegrationTest.cs index ae6eb18969..839f7da92b 100644 --- a/src/Razor/Microsoft.NET.Sdk.Razor/test/IntegrationTests/BuildIntegrationTest.cs +++ b/src/Razor/Microsoft.NET.Sdk.Razor/test/IntegrationTests/BuildIntegrationTest.cs @@ -259,6 +259,22 @@ namespace Microsoft.AspNetCore.Razor.Design.IntegrationTests Assert.FileCountEquals(result, 0, Path.Combine(PublishOutputPath, "refs"), "*.dll"); } + [Fact] + [InitializeTestProject("SimpleMvc")] + public async Task Build_WithPreserveCompilationReferencesEnabled_ProducesRefsDirectory() + { + // This simulates the behavior of 3.0 with RuntimeCompilation enabled + AddProjectFileContent(@" + + true + "); + + var result = await DotnetMSBuild("Build"); + + // Verify no refs folder is produced + Assert.FileExists(result, OutputPath, "refs", "mscorlib.dll"); + } + [Fact] [InitializeTestProject("ClassLibrary")] public async Task Build_CodeGensAssemblyInfoUsingValuesFromProject() diff --git a/src/Razor/Microsoft.NET.Sdk.Razor/test/IntegrationTests/BuildIntegrationTest22NetFx.cs b/src/Razor/Microsoft.NET.Sdk.Razor/test/IntegrationTests/BuildIntegrationTest22NetFx.cs index 1afad21f83..0e95335b42 100644 --- a/src/Razor/Microsoft.NET.Sdk.Razor/test/IntegrationTests/BuildIntegrationTest22NetFx.cs +++ b/src/Razor/Microsoft.NET.Sdk.Razor/test/IntegrationTests/BuildIntegrationTest22NetFx.cs @@ -1,6 +1,7 @@ // Copyright (c) .NET Foundation. All rights reserved. // Licensed under the Apache License, Version 2.0. See License.txt in the project root for license information. +using System; using System.IO; using System.Threading.Tasks; using Microsoft.AspNetCore.Testing.xunit; @@ -8,33 +9,69 @@ using Xunit; namespace Microsoft.AspNetCore.Razor.Design.IntegrationTests { - [OSSkipCondition(OperatingSystems.Linux | OperatingSystems.MacOSX)] - public class BuildIntegrationTest22NetFx : BuildIntegrationTestLegacy + public class BuildIntegrationTest22NetFx : + MSBuildIntegrationTestBase, + IClassFixture { + private const string TestProjectName = "SimpleMvc22NetFx"; + public BuildIntegrationTest22NetFx(LegacyBuildServerTestFixture buildServer) : base(buildServer) { } - public override string TestProjectName => "SimpleMvc22NetFx"; - public override string TargetFramework => "net461"; - public override string OutputFileName => $"{TestProjectName}.exe"; + public string OutputFileName => $"{TestProjectName}.exe"; - [Fact] - public override async Task BuildingProject_CopyToOutputDirectoryFiles() + [ConditionalFact] + [OSSkipCondition(OperatingSystems.Linux | OperatingSystems.MacOSX)] + [InitializeTestProject(TestProjectName)] + public async Task BuildingProject_CopyToOutputDirectoryFiles() { - using (CreateTestProject()) - { - // Build - var result = await DotnetMSBuild("Build"); + TargetFramework = "net461"; - Assert.BuildPassed(result); - // No cshtml files should be in the build output directory - Assert.FileCountEquals(result, 0, Path.Combine(OutputPath, "Views"), "*.cshtml"); + // Build + var result = await DotnetMSBuild("Build"); - // refs are required for runtime compilation in desktop targeting projects. - Assert.FileCountEquals(result, 97, Path.Combine(OutputPath, "refs"), "*.dll"); - } + Assert.BuildPassed(result); + // No cshtml files should be in the build output directory + Assert.FileCountEquals(result, 0, Path.Combine(OutputPath, "Views"), "*.cshtml"); + + // refs are required for runtime compilation in desktop targeting projects. + Assert.FileCountEquals(result, 97, Path.Combine(OutputPath, "refs"), "*.dll"); + } + + [ConditionalFact] + [OSSkipCondition(OperatingSystems.Linux | OperatingSystems.MacOSX)] + [InitializeTestProject(TestProjectName)] + public async Task PublishingProject_CopyToOutputDirectoryFiles() + { + TargetFramework = "net461"; + + // Build + var result = await DotnetMSBuild("Publish"); + + Assert.BuildPassed(result); + // No cshtml files should be in the build output directory + Assert.FileCountEquals(result, 0, Path.Combine(PublishOutputPath, "Views"), "*.cshtml"); + + // refs shouldn't be produced by default + Assert.FileCountEquals(result, 0, Path.Combine(PublishOutputPath, "refs"), "*.dll"); + } + + [ConditionalFact] + [OSSkipCondition(OperatingSystems.Linux | OperatingSystems.MacOSX)] + [InitializeTestProject(TestProjectName)] + public async Task PublishingProject_CopyToOutputDirectoryFiles_WithCopyRefAssembliesToPublishDirectory() + { + TargetFramework = "net461"; + + // Build + var result = await DotnetMSBuild("Publish", "/p:CopyRefAssembliesToPublishDirectory=true"); + + Assert.BuildPassed(result); + + // refs should be present if CopyRefAssembliesToPublishDirectory is set. + Assert.FileExists(result, PublishOutputPath, "refs", "System.Threading.Tasks.Extensions.dll"); } } } diff --git a/src/Razor/Microsoft.NET.Sdk.Razor/test/IntegrationTests/BuildIntegrationTestLegacy.cs b/src/Razor/Microsoft.NET.Sdk.Razor/test/IntegrationTests/BuildIntegrationTestLegacy.cs index 51b65c384e..2c8cf9e865 100644 --- a/src/Razor/Microsoft.NET.Sdk.Razor/test/IntegrationTests/BuildIntegrationTestLegacy.cs +++ b/src/Razor/Microsoft.NET.Sdk.Razor/test/IntegrationTests/BuildIntegrationTestLegacy.cs @@ -4,7 +4,6 @@ using System; using System.IO; using System.Threading.Tasks; -using Microsoft.AspNetCore.Testing.xunit; using Xunit; namespace Microsoft.AspNetCore.Razor.Design.IntegrationTests @@ -30,7 +29,7 @@ namespace Microsoft.AspNetCore.Razor.Design.IntegrationTests return new Disposable(); } - [ConditionalFact] + [Fact] public virtual async Task Building_Project() { using (CreateTestProject()) @@ -55,7 +54,7 @@ namespace Microsoft.AspNetCore.Razor.Design.IntegrationTests } } - [ConditionalFact] + [Fact] public virtual async Task BuildingProject_CopyToOutputDirectoryFiles() { using (CreateTestProject()) @@ -72,7 +71,7 @@ namespace Microsoft.AspNetCore.Razor.Design.IntegrationTests } } - [ConditionalFact] + [Fact] public virtual async Task Publish_Project() { using (CreateTestProject()) @@ -92,7 +91,7 @@ namespace Microsoft.AspNetCore.Razor.Design.IntegrationTests } } - [ConditionalFact] + [Fact] public virtual async Task Publish_NoopsWithMvcRazorCompileOnPublish_False() { using (CreateTestProject()) @@ -109,7 +108,7 @@ namespace Microsoft.AspNetCore.Razor.Design.IntegrationTests } } - [ConditionalFact] // This will use the old precompilation tool, RazorSDK shouldn't get involved. + [Fact] // This will use the old precompilation tool, RazorSDK shouldn't get involved. public virtual async Task Build_WithMvcRazorCompileOnPublish_Noops() { using (CreateTestProject()) @@ -125,7 +124,7 @@ namespace Microsoft.AspNetCore.Razor.Design.IntegrationTests } } - [ConditionalFact] + [Fact] public virtual async Task Build_DoesNotAddRelatedAssemblyPart_IfToolSetIsNotRazorSdk() { using (CreateTestProject()) @@ -140,7 +139,7 @@ namespace Microsoft.AspNetCore.Razor.Design.IntegrationTests } } - [ConditionalFact] + [Fact] public virtual async Task Build_DoesNotPrintsWarnings_IfProjectFileContainsRazorFiles() { using (CreateTestProject()) @@ -153,7 +152,7 @@ namespace Microsoft.AspNetCore.Razor.Design.IntegrationTests } } - [ConditionalFact] + [Fact] public virtual async Task Publish_IncludesRefAssemblies_WhenCopyRefAssembliesToPublishDirectoryIsSet() { using (CreateTestProject()) diff --git a/src/Razor/Microsoft.NET.Sdk.Razor/test/IntegrationTests/PublishIntegrationTest.cs b/src/Razor/Microsoft.NET.Sdk.Razor/test/IntegrationTests/PublishIntegrationTest.cs index 7befbf9f6c..cf5387538e 100644 --- a/src/Razor/Microsoft.NET.Sdk.Razor/test/IntegrationTests/PublishIntegrationTest.cs +++ b/src/Razor/Microsoft.NET.Sdk.Razor/test/IntegrationTests/PublishIntegrationTest.cs @@ -248,6 +248,29 @@ namespace Microsoft.AspNetCore.Razor.Design.IntegrationTests Assert.FileCountEquals(result, 8, Path.Combine(PublishOutputPath, "Views"), "*.cshtml"); } + [Fact] + [InitializeTestProject("SimpleMvc")] + public async Task Publish_WithPreserveCompilationReferencesSetInProjectFile_CopiesRefs() + { + // This simulates the behavior of 3.0 with RuntimeCompilation enabled + AddProjectFileContent(@" + + true + "); + + var result = await DotnetMSBuild("Publish"); + + Assert.BuildPassed(result); + + Assert.FileExists(result, PublishOutputPath, "SimpleMvc.dll"); + Assert.FileExists(result, PublishOutputPath, "SimpleMvc.pdb"); + Assert.FileExists(result, PublishOutputPath, "SimpleMvc.Views.dll"); + Assert.FileExists(result, PublishOutputPath, "SimpleMvc.Views.pdb"); + + // By default refs and .cshtml files will not be copied on publish + Assert.FileExists(result, PublishOutputPath, "refs", "mscorlib.dll"); + } + [Fact] // Tests old MvcPrecompilation behavior that we support for compat. [InitializeTestProject("SimpleMvc")] public async Task Publish_MvcRazorExcludeFilesFromPublish_False_CopiesFiles()