From 56ea6cc336d3eb2a879c214e93708ac7eb98a9ef Mon Sep 17 00:00:00 2001 From: Brennan Date: Thu, 1 Oct 2020 12:57:44 -0700 Subject: [PATCH 1/4] Enable test logging for ProjectTemplate tests --- src/ProjectTemplates/test/ProjectTemplates.Tests.csproj | 1 - 1 file changed, 1 deletion(-) diff --git a/src/ProjectTemplates/test/ProjectTemplates.Tests.csproj b/src/ProjectTemplates/test/ProjectTemplates.Tests.csproj index d0142cdf6eae..f37ad82a4522 100644 --- a/src/ProjectTemplates/test/ProjectTemplates.Tests.csproj +++ b/src/ProjectTemplates/test/ProjectTemplates.Tests.csproj @@ -21,7 +21,6 @@ TestTemplates\ $([MSBuild]::EnsureTrailingSlash('$(RepoRoot)'))obj\template-restore\ TemplateTests.props - false true From e454bc763f0d1e1f9c9496c761c6b73148355276 Mon Sep 17 00:00:00 2001 From: BrennanConroy Date: Thu, 1 Oct 2020 15:35:23 -0700 Subject: [PATCH 2/4] Add logging to templates --- .../Shared/TestOutputLogger.cs | 28 +++++++++++++++++++ src/ProjectTemplates/test/GrpcTemplateTest.cs | 2 +- src/ProjectTemplates/test/MvcTemplateTest.cs | 26 ++++++++++++++--- .../test/ProjectTemplates.Tests.csproj | 1 + 4 files changed, 52 insertions(+), 5 deletions(-) create mode 100644 src/ProjectTemplates/Shared/TestOutputLogger.cs diff --git a/src/ProjectTemplates/Shared/TestOutputLogger.cs b/src/ProjectTemplates/Shared/TestOutputLogger.cs new file mode 100644 index 000000000000..d239f9638f6c --- /dev/null +++ b/src/ProjectTemplates/Shared/TestOutputLogger.cs @@ -0,0 +1,28 @@ +// 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 Microsoft.Extensions.Logging; +using Xunit.Abstractions; + +namespace Templates.Test.Helpers +{ + internal class TestOutputLogger : ITestOutputHelper + { + private ILogger _logger; + + public TestOutputLogger(ILogger logger) + { + _logger = logger; + } + + public void WriteLine(string message) + { + _logger.LogInformation(message); + } + + public void WriteLine(string format, params object[] args) + { + _logger.LogInformation(string.Format(format, args)); + } + } +} diff --git a/src/ProjectTemplates/test/GrpcTemplateTest.cs b/src/ProjectTemplates/test/GrpcTemplateTest.cs index e2e68402225f..1029d2a7b1fc 100644 --- a/src/ProjectTemplates/test/GrpcTemplateTest.cs +++ b/src/ProjectTemplates/test/GrpcTemplateTest.cs @@ -34,7 +34,7 @@ public async Task GrpcTemplate() using var testLog = assemblyLog.StartTestLog(Output, nameof(GrpcTemplateTest), out var loggerFactory); var logger = loggerFactory.CreateLogger("TestLogger"); - Project = await ProjectFactory.GetOrCreateProject("grpc", Output); + Project = await ProjectFactory.GetOrCreateProject("grpc", new TestOutputLogger(logger)); var createResult = await Project.RunDotNetNewAsync("grpc"); Assert.True(0 == createResult.ExitCode, ErrorMessages.GetFailedProcessMessage("create/restore", Project, createResult)); diff --git a/src/ProjectTemplates/test/MvcTemplateTest.cs b/src/ProjectTemplates/test/MvcTemplateTest.cs index 9bbe8fdc836a..e909a547efce 100644 --- a/src/ProjectTemplates/test/MvcTemplateTest.cs +++ b/src/ProjectTemplates/test/MvcTemplateTest.cs @@ -5,8 +5,10 @@ using System.Collections.Generic; using System.IO; using System.Linq; +using System.Reflection; using System.Threading.Tasks; using Microsoft.AspNetCore.Testing; +using Microsoft.Extensions.Logging; using Templates.Test.Helpers; using Xunit; using Xunit.Abstractions; @@ -27,15 +29,31 @@ public MvcTemplateTest(ProjectFactoryFixture projectFactory, ITestOutputHelper o public ITestOutputHelper Output { get; } [Fact] - public async Task MvcTemplate_NoAuthFSharp() => await MvcTemplateCore(languageOverride: "F#"); + public async Task MvcTemplate_NoAuthFSharp() + { + // Setup AssemblyTestLog + var assemblyLog = AssemblyTestLog.Create(Assembly.GetExecutingAssembly(), baseDirectory: Project.ArtifactsLogDir); + using var testLog = assemblyLog.StartTestLog(Output, nameof(MvcTemplateTest), out var loggerFactory); + var logger = loggerFactory.CreateLogger("TestLogger"); + + await MvcTemplateCore(languageOverride: "F#", logger); + } [ConditionalFact] [SkipOnHelix("cert failure", Queues = "OSX.1014.Amd64;OSX.1014.Amd64.Open")] - public async Task MvcTemplate_NoAuthCSharp() => await MvcTemplateCore(languageOverride: null); + public async Task MvcTemplate_NoAuthCSharp() + { + // Setup AssemblyTestLog + var assemblyLog = AssemblyTestLog.Create(Assembly.GetExecutingAssembly(), baseDirectory: Project.ArtifactsLogDir); + using var testLog = assemblyLog.StartTestLog(Output, nameof(MvcTemplateTest), out var loggerFactory); + var logger = loggerFactory.CreateLogger("TestLogger"); + + await MvcTemplateCore(languageOverride: null, logger); + } - private async Task MvcTemplateCore(string languageOverride) + private async Task MvcTemplateCore(string languageOverride, ILogger logger) { - Project = await ProjectFactory.GetOrCreateProject("mvcnoauth" + (languageOverride == "F#" ? "fsharp" : "csharp"), Output); + Project = await ProjectFactory.GetOrCreateProject("mvcnoauth" + (languageOverride == "F#" ? "fsharp" : "csharp"), new TestOutputLogger(logger)); var createResult = await Project.RunDotNetNewAsync("mvc", language: languageOverride); Assert.True(0 == createResult.ExitCode, ErrorMessages.GetFailedProcessMessage("create/restore", Project, createResult)); diff --git a/src/ProjectTemplates/test/ProjectTemplates.Tests.csproj b/src/ProjectTemplates/test/ProjectTemplates.Tests.csproj index f37ad82a4522..d0142cdf6eae 100644 --- a/src/ProjectTemplates/test/ProjectTemplates.Tests.csproj +++ b/src/ProjectTemplates/test/ProjectTemplates.Tests.csproj @@ -21,6 +21,7 @@ TestTemplates\ $([MSBuild]::EnsureTrailingSlash('$(RepoRoot)'))obj\template-restore\ TemplateTests.props + false true From 29373317c60dbe27ece41aacedc58dce471ab411 Mon Sep 17 00:00:00 2001 From: BrennanConroy Date: Fri, 2 Oct 2020 13:19:59 -0700 Subject: [PATCH 3/4] some updates --- .../AssemblyInfo.AssemblyFixtures.cs | 2 +- ...soft.AspNetCore.Components.E2ETests.csproj | 2 - .../AssemblyInfo.AssemblyFixtures.cs | 8 +- .../BlazorTemplates.Tests.csproj | 13 +- .../Shared/ProjectFactoryFixture.cs | 2 +- .../Shared/TestOutputLogger.cs | 2 +- .../test/AssemblyInfo.AssemblyFixtures.cs | 7 +- src/ProjectTemplates/test/BaselineTest.cs | 6 +- .../test/ByteOrderMarkTest.cs | 8 +- .../test/EmptyWebTemplateTest.cs | 30 ++--- src/ProjectTemplates/test/GrpcTemplateTest.cs | 44 +++---- .../test/IdentityUIPackageTest.cs | 38 +++--- src/ProjectTemplates/test/MvcTemplateTest.cs | 124 ++++++++---------- .../test/ProjectTemplates.Tests.csproj | 8 +- .../test/RazorClassLibraryTemplateTest.cs | 36 +++-- .../test/RazorPagesTemplateTest.cs | 86 ++++++------ .../test/WebApiTemplateTest.cs | 52 ++++---- .../test/WorkerTemplateTest.cs | 29 ++-- .../AssemblyFixtureAttribute.cs | 17 --- ...TestCollectionRunnerWIthAssemblyFixture.cs | 48 ------- ...itTestAssemblyRunnerWithAssemblyFixture.cs | 82 ------------ ...estFrameworkExecutorWithAssemblyFixture.cs | 26 ---- .../XunitTestFrameworkWithAssemblyFixture.cs | 20 --- 23 files changed, 221 insertions(+), 469 deletions(-) delete mode 100644 src/Shared/E2ETesting/XUnitExtensions/AssemblyFixtureAttribute.cs delete mode 100644 src/Shared/E2ETesting/XUnitExtensions/XUnitTestCollectionRunnerWIthAssemblyFixture.cs delete mode 100644 src/Shared/E2ETesting/XUnitExtensions/XunitTestAssemblyRunnerWithAssemblyFixture.cs delete mode 100644 src/Shared/E2ETesting/XUnitExtensions/XunitTestFrameworkExecutorWithAssemblyFixture.cs delete mode 100644 src/Shared/E2ETesting/XUnitExtensions/XunitTestFrameworkWithAssemblyFixture.cs diff --git a/src/Components/test/E2ETest/Infrastructure/AssemblyInfo.AssemblyFixtures.cs b/src/Components/test/E2ETest/Infrastructure/AssemblyInfo.AssemblyFixtures.cs index 4f2868269a6b..d7e5921fef32 100644 --- a/src/Components/test/E2ETest/Infrastructure/AssemblyInfo.AssemblyFixtures.cs +++ b/src/Components/test/E2ETest/Infrastructure/AssemblyInfo.AssemblyFixtures.cs @@ -2,8 +2,8 @@ // Licensed under the Apache License, Version 2.0. See License.txt in the project root for license information. using Microsoft.AspNetCore.E2ETesting; +using Microsoft.AspNetCore.Testing; using Xunit; -[assembly: TestFramework("Microsoft.AspNetCore.E2ETesting.XunitTestFrameworkWithAssemblyFixture", "Microsoft.AspNetCore.Components.E2ETests")] [assembly: AssemblyFixture(typeof(SeleniumStandaloneServer))] [assembly: AssemblyFixture(typeof(SauceConnectServer))] diff --git a/src/Components/test/E2ETest/Microsoft.AspNetCore.Components.E2ETests.csproj b/src/Components/test/E2ETest/Microsoft.AspNetCore.Components.E2ETests.csproj index 266bd5d4fc7d..c727765672fa 100644 --- a/src/Components/test/E2ETest/Microsoft.AspNetCore.Components.E2ETests.csproj +++ b/src/Components/test/E2ETest/Microsoft.AspNetCore.Components.E2ETests.csproj @@ -19,8 +19,6 @@ - false - false diff --git a/src/ProjectTemplates/BlazorTemplates.Tests/AssemblyInfo.AssemblyFixtures.cs b/src/ProjectTemplates/BlazorTemplates.Tests/AssemblyInfo.AssemblyFixtures.cs index 57f163b513fd..b60a694a12d7 100644 --- a/src/ProjectTemplates/BlazorTemplates.Tests/AssemblyInfo.AssemblyFixtures.cs +++ b/src/ProjectTemplates/BlazorTemplates.Tests/AssemblyInfo.AssemblyFixtures.cs @@ -2,11 +2,9 @@ // Licensed under the Apache License, Version 2.0. See License.txt in the project root for license information. using Microsoft.AspNetCore.E2ETesting; +using Microsoft.AspNetCore.Testing; using Templates.Test.Helpers; -using Xunit; -[assembly: TestFramework("Microsoft.AspNetCore.E2ETesting.XunitTestFrameworkWithAssemblyFixture", "BlazorTemplates.Tests")] - -[assembly: Microsoft.AspNetCore.E2ETesting.AssemblyFixture(typeof(ProjectFactoryFixture))] -[assembly: Microsoft.AspNetCore.E2ETesting.AssemblyFixture(typeof(SeleniumStandaloneServer))] +[assembly: AssemblyFixture(typeof(ProjectFactoryFixture))] +[assembly: AssemblyFixture(typeof(SeleniumStandaloneServer))] diff --git a/src/ProjectTemplates/BlazorTemplates.Tests/BlazorTemplates.Tests.csproj b/src/ProjectTemplates/BlazorTemplates.Tests/BlazorTemplates.Tests.csproj index 2da0e11666ef..ba179c77d004 100644 --- a/src/ProjectTemplates/BlazorTemplates.Tests/BlazorTemplates.Tests.csproj +++ b/src/ProjectTemplates/BlazorTemplates.Tests/BlazorTemplates.Tests.csproj @@ -1,4 +1,4 @@ - + @@ -22,7 +22,6 @@ TestTemplates\ $([MSBuild]::EnsureTrailingSlash('$(RepoRoot)'))obj\template-restore\ TemplateTests.props - false true @@ -43,11 +42,6 @@ - - true - false - - <_Parameter1>DotNetEfFullPath @@ -65,11 +59,6 @@ <_Parameter1>ContinuousIntegrationBuild <_Parameter2>true - - <_Parameter1>$(PreserveExistingLogsInOutput) - <_Parameter2>$(TargetFramework) - <_Parameter3> - diff --git a/src/ProjectTemplates/Shared/ProjectFactoryFixture.cs b/src/ProjectTemplates/Shared/ProjectFactoryFixture.cs index d268ce874247..46763a3b96b8 100644 --- a/src/ProjectTemplates/Shared/ProjectFactoryFixture.cs +++ b/src/ProjectTemplates/Shared/ProjectFactoryFixture.cs @@ -55,7 +55,7 @@ public async Task GetOrCreateProject(string projectKey, ITestOutputHelp } private static string GetTemplateFolderBasePath(Assembly assembly) => - (string.IsNullOrEmpty(Environment.GetEnvironmentVariable("HELIX_DIR"))) + (string.IsNullOrEmpty(Environment.GetEnvironmentVariable("HELIX_DIR"))) ? assembly.GetCustomAttributes() .Single(a => a.Key == "TestTemplateCreationFolder") .Value diff --git a/src/ProjectTemplates/Shared/TestOutputLogger.cs b/src/ProjectTemplates/Shared/TestOutputLogger.cs index d239f9638f6c..b01edf2e7bd8 100644 --- a/src/ProjectTemplates/Shared/TestOutputLogger.cs +++ b/src/ProjectTemplates/Shared/TestOutputLogger.cs @@ -8,7 +8,7 @@ namespace Templates.Test.Helpers { internal class TestOutputLogger : ITestOutputHelper { - private ILogger _logger; + private readonly ILogger _logger; public TestOutputLogger(ILogger logger) { diff --git a/src/ProjectTemplates/test/AssemblyInfo.AssemblyFixtures.cs b/src/ProjectTemplates/test/AssemblyInfo.AssemblyFixtures.cs index 9e4d5d6b3448..dded12fce8e1 100644 --- a/src/ProjectTemplates/test/AssemblyInfo.AssemblyFixtures.cs +++ b/src/ProjectTemplates/test/AssemblyInfo.AssemblyFixtures.cs @@ -4,9 +4,6 @@ using Microsoft.AspNetCore.E2ETesting; using Microsoft.AspNetCore.Testing; using Templates.Test.Helpers; -using Xunit; -[assembly: TestFramework("Microsoft.AspNetCore.E2ETesting.XunitTestFrameworkWithAssemblyFixture", "ProjectTemplates.Tests")] - -[assembly: Microsoft.AspNetCore.E2ETesting.AssemblyFixture(typeof(ProjectFactoryFixture))] -[assembly: Microsoft.AspNetCore.E2ETesting.AssemblyFixture(typeof(SeleniumStandaloneServer))] +[assembly: AssemblyFixture(typeof(ProjectFactoryFixture))] +[assembly: AssemblyFixture(typeof(SeleniumStandaloneServer))] diff --git a/src/ProjectTemplates/test/BaselineTest.cs b/src/ProjectTemplates/test/BaselineTest.cs index eabacc336d35..f064726e8cd1 100644 --- a/src/ProjectTemplates/test/BaselineTest.cs +++ b/src/ProjectTemplates/test/BaselineTest.cs @@ -15,7 +15,7 @@ namespace Templates.Test { - public class BaselineTest + public class BaselineTest : LoggedTest { private static readonly Regex TemplateNameRegex = new Regex( "new (?