diff --git a/TUnit.Engine.Tests/GlobalHooks.cs b/TUnit.Engine.Tests/GlobalHooks.cs index 8c09e99e4f..939b43dea5 100644 --- a/TUnit.Engine.Tests/GlobalHooks.cs +++ b/TUnit.Engine.Tests/GlobalHooks.cs @@ -1,13 +1,32 @@ -namespace TUnit.Engine.Tests; +using CliWrap.Buffered; + +namespace TUnit.Engine.Tests; public class GlobalHooks { [Before(TestSession)] public static async Task BuildTestProject() { - await CliWrap.Cli.Wrap("dotnet") - .WithArguments(["build", "-c", "Release"]) + var result = await CliWrap.Cli.Wrap("dotnet") + .WithArguments(["build", "-c", GetConfiguration(), "--no-restore"]) .WithWorkingDirectory(FileSystemHelpers.FindFile(x => x.Name == "TUnit.TestProject.csproj")!.DirectoryName!) - .ExecuteAsync(); + .WithValidation(CliWrap.CommandResultValidation.None) + .ExecuteBufferedAsync(); + + // Only show output if the command failed + if (result.ExitCode != 0) + { + Console.WriteLine(result.StandardOutput); + Console.Error.WriteLine(result.StandardError); + throw new InvalidOperationException($"Build failed with exit code {result.ExitCode}"); + } + } + + private static string GetConfiguration() + { + var isCi = Environment.GetEnvironmentVariable("GITHUB_ACTIONS") == "true" || + Environment.GetEnvironmentVariable("CI") == "true"; + + return isCi ? "Release" : "Debug"; } } diff --git a/TUnit.Pipeline/Modules/Abstract/TestBaseModule.cs b/TUnit.Pipeline/Modules/Abstract/TestBaseModule.cs index ed495b9922..3fcbe547ca 100644 --- a/TUnit.Pipeline/Modules/Abstract/TestBaseModule.cs +++ b/TUnit.Pipeline/Modules/Abstract/TestBaseModule.cs @@ -2,6 +2,7 @@ using ModularPipelines.Context; using ModularPipelines.DotNet.Extensions; using ModularPipelines.DotNet.Options; +using ModularPipelines.Enums; using ModularPipelines.Models; using ModularPipelines.Modules; @@ -57,6 +58,12 @@ private DotNetRunOptions SetDefaults(DotNetRunOptions testOptions) }; } + // Suppress output for successful operations, but show errors and basic info + testOptions = testOptions with + { + CommandLogging = CommandLogging.Input | CommandLogging.Error | CommandLogging.Duration | CommandLogging.ExitCode + }; + return testOptions; } diff --git a/TUnit.Pipeline/Modules/AddLocalNuGetRepositoryModule.cs b/TUnit.Pipeline/Modules/AddLocalNuGetRepositoryModule.cs index 1b8c189abc..f37d3b3b40 100644 --- a/TUnit.Pipeline/Modules/AddLocalNuGetRepositoryModule.cs +++ b/TUnit.Pipeline/Modules/AddLocalNuGetRepositoryModule.cs @@ -1,6 +1,7 @@ using ModularPipelines.Context; using ModularPipelines.DotNet.Extensions; using ModularPipelines.DotNet.Options; +using ModularPipelines.Enums; using ModularPipelines.FileSystem; using ModularPipelines.Modules; @@ -11,7 +12,10 @@ public class AddLocalNuGetRepositoryModule : Module protected override async Task ExecuteAsync(IPipelineContext context, CancellationToken cancellationToken) { var folder = context.FileSystem.GetFolder(Environment.SpecialFolder.LocalApplicationData).GetFolder("LocalNuget").Create(); - await context.DotNet().Nuget.Add.Source(new DotNetNugetAddSourceOptions(folder), cancellationToken); + await context.DotNet().Nuget.Add.Source(new DotNetNugetAddSourceOptions(folder) + { + CommandLogging = CommandLogging.Input | CommandLogging.Error | CommandLogging.Duration | CommandLogging.ExitCode + }, cancellationToken); return folder; } } diff --git a/TUnit.Pipeline/Modules/PackTUnitFilesModule.cs b/TUnit.Pipeline/Modules/PackTUnitFilesModule.cs index ec49e03e63..5b671c1ee3 100644 --- a/TUnit.Pipeline/Modules/PackTUnitFilesModule.cs +++ b/TUnit.Pipeline/Modules/PackTUnitFilesModule.cs @@ -2,6 +2,7 @@ using ModularPipelines.Context; using ModularPipelines.DotNet.Extensions; using ModularPipelines.DotNet.Options; +using ModularPipelines.Enums; using ModularPipelines.Models; using ModularPipelines.Modules; @@ -39,6 +40,7 @@ await context.DotNet() ], IncludeSource = project == Sourcy.DotNet.Projects.TUnit_Templates ? false : true, Configuration = Configuration.Release, + CommandLogging = CommandLogging.Input | CommandLogging.Error | CommandLogging.Duration | CommandLogging.ExitCode }, cancellationToken); packedProjects.Add(new PackedProject(project.NameWithoutExtension, version.SemVer!)); diff --git a/TUnit.Pipeline/Modules/PublishAOTModule.cs b/TUnit.Pipeline/Modules/PublishAOTModule.cs index 76ff827a34..8b5dcf5f78 100644 --- a/TUnit.Pipeline/Modules/PublishAOTModule.cs +++ b/TUnit.Pipeline/Modules/PublishAOTModule.cs @@ -2,6 +2,7 @@ using ModularPipelines.Context; using ModularPipelines.DotNet.Extensions; using ModularPipelines.DotNet.Options; +using ModularPipelines.Enums; using ModularPipelines.Extensions; using ModularPipelines.Git.Extensions; using ModularPipelines.Models; @@ -26,7 +27,8 @@ protected override Task ShouldSkip(IPipelineContext context) Configuration = Configuration.Release, OutputDirectory = "TESTPROJECT_AOT", Properties = [new KeyValue("Aot", "true")], - Framework = "net8.0" + Framework = "net8.0", + CommandLogging = CommandLogging.Input | CommandLogging.Error | CommandLogging.Duration | CommandLogging.ExitCode }, cancellationToken); } diff --git a/TUnit.Pipeline/Modules/PublishSingleFileModule.cs b/TUnit.Pipeline/Modules/PublishSingleFileModule.cs index d80e5429b8..66e7efdcba 100644 --- a/TUnit.Pipeline/Modules/PublishSingleFileModule.cs +++ b/TUnit.Pipeline/Modules/PublishSingleFileModule.cs @@ -3,6 +3,7 @@ using ModularPipelines.Context; using ModularPipelines.DotNet.Extensions; using ModularPipelines.DotNet.Options; +using ModularPipelines.Enums; using ModularPipelines.Extensions; using ModularPipelines.Git.Extensions; using ModularPipelines.Models; @@ -28,7 +29,8 @@ protected override Task ShouldSkip(IPipelineContext context) Configuration = Configuration.Release, OutputDirectory = "TESTPROJECT_SINGLEFILE", Properties = [new KeyValue("SingleFile", "true")], - Framework = "net8.0" + Framework = "net8.0", + CommandLogging = CommandLogging.Input | CommandLogging.Error | CommandLogging.Duration | CommandLogging.ExitCode }, cancellationToken); } diff --git a/TUnit.Pipeline/Modules/RunAnalyzersTestsModule.cs b/TUnit.Pipeline/Modules/RunAnalyzersTestsModule.cs index 1183e16353..bc4c97084b 100644 --- a/TUnit.Pipeline/Modules/RunAnalyzersTestsModule.cs +++ b/TUnit.Pipeline/Modules/RunAnalyzersTestsModule.cs @@ -2,6 +2,7 @@ using ModularPipelines.Context; using ModularPipelines.DotNet.Extensions; using ModularPipelines.DotNet.Options; +using ModularPipelines.Enums; using ModularPipelines.Extensions; using ModularPipelines.Git.Extensions; using ModularPipelines.Models; @@ -24,7 +25,8 @@ public class RunAnalyzersTestsModule : Module EnvironmentVariables = new Dictionary { ["DISABLE_GITHUB_REPORTER"] = "true", - } + }, + CommandLogging = CommandLogging.Input | CommandLogging.Error | CommandLogging.Duration | CommandLogging.ExitCode }, cancellationToken); } } diff --git a/TUnit.Pipeline/Modules/RunAspNetTestsModule.cs b/TUnit.Pipeline/Modules/RunAspNetTestsModule.cs index 981f3179ac..07329fa78e 100644 --- a/TUnit.Pipeline/Modules/RunAspNetTestsModule.cs +++ b/TUnit.Pipeline/Modules/RunAspNetTestsModule.cs @@ -2,6 +2,7 @@ using ModularPipelines.Context; using ModularPipelines.DotNet.Extensions; using ModularPipelines.DotNet.Options; +using ModularPipelines.Enums; using ModularPipelines.Extensions; using ModularPipelines.Git.Extensions; using ModularPipelines.Models; @@ -27,7 +28,8 @@ public class RunAspNetTestsModule : Module EnvironmentVariables = new Dictionary { ["DISABLE_GITHUB_REPORTER"] = "true", - } + }, + CommandLogging = CommandLogging.Input | CommandLogging.Error | CommandLogging.Duration | CommandLogging.ExitCode }, cancellationToken); } } diff --git a/TUnit.Pipeline/Modules/RunAssertionsAnalyzersTestsModule.cs b/TUnit.Pipeline/Modules/RunAssertionsAnalyzersTestsModule.cs index 9dd43ae864..4c2272812e 100644 --- a/TUnit.Pipeline/Modules/RunAssertionsAnalyzersTestsModule.cs +++ b/TUnit.Pipeline/Modules/RunAssertionsAnalyzersTestsModule.cs @@ -2,6 +2,7 @@ using ModularPipelines.Context; using ModularPipelines.DotNet.Extensions; using ModularPipelines.DotNet.Options; +using ModularPipelines.Enums; using ModularPipelines.Extensions; using ModularPipelines.Git.Extensions; using ModularPipelines.Models; @@ -24,7 +25,8 @@ public class RunAssertionsAnalyzersTestsModule : Module EnvironmentVariables = new Dictionary { ["DISABLE_GITHUB_REPORTER"] = "true", - } + }, + CommandLogging = CommandLogging.Input | CommandLogging.Error | CommandLogging.Duration | CommandLogging.ExitCode }, cancellationToken); } } diff --git a/TUnit.Pipeline/Modules/RunAssertionsCodeFixersTestsModule.cs b/TUnit.Pipeline/Modules/RunAssertionsCodeFixersTestsModule.cs index fbe505bef0..12dc0a0896 100644 --- a/TUnit.Pipeline/Modules/RunAssertionsCodeFixersTestsModule.cs +++ b/TUnit.Pipeline/Modules/RunAssertionsCodeFixersTestsModule.cs @@ -2,6 +2,7 @@ using ModularPipelines.Context; using ModularPipelines.DotNet.Extensions; using ModularPipelines.DotNet.Options; +using ModularPipelines.Enums; using ModularPipelines.Extensions; using ModularPipelines.Git.Extensions; using ModularPipelines.Models; @@ -24,7 +25,8 @@ public class RunAssertionsCodeFixersTestsModule : Module EnvironmentVariables = new Dictionary { ["DISABLE_GITHUB_REPORTER"] = "true", - } + }, + CommandLogging = CommandLogging.Input | CommandLogging.Error | CommandLogging.Duration | CommandLogging.ExitCode }, cancellationToken); } } diff --git a/TUnit.Pipeline/Modules/RunEngineTestsModule.cs b/TUnit.Pipeline/Modules/RunEngineTestsModule.cs index 8604217124..43f61a048e 100644 --- a/TUnit.Pipeline/Modules/RunEngineTestsModule.cs +++ b/TUnit.Pipeline/Modules/RunEngineTestsModule.cs @@ -2,6 +2,7 @@ using ModularPipelines.Context; using ModularPipelines.DotNet.Extensions; using ModularPipelines.DotNet.Options; +using ModularPipelines.Enums; using ModularPipelines.Extensions; using ModularPipelines.Git.Extensions; using ModularPipelines.Models; @@ -44,7 +45,8 @@ public class RunEngineTestsModule : Module EnvironmentVariables = new Dictionary { ["TUNIT_DISABLE_GITHUB_REPORTER"] = "true", - } + }, + CommandLogging = CommandLogging.Input | CommandLogging.Error | CommandLogging.Duration | CommandLogging.ExitCode }, cancellationToken); } } diff --git a/TUnit.Pipeline/Modules/RunTemplateTestsModule.cs b/TUnit.Pipeline/Modules/RunTemplateTestsModule.cs index 2a053e9226..0a120c8864 100644 --- a/TUnit.Pipeline/Modules/RunTemplateTestsModule.cs +++ b/TUnit.Pipeline/Modules/RunTemplateTestsModule.cs @@ -2,6 +2,7 @@ using ModularPipelines.Context; using ModularPipelines.DotNet.Extensions; using ModularPipelines.DotNet.Options; +using ModularPipelines.Enums; using ModularPipelines.Extensions; using ModularPipelines.Git.Extensions; using ModularPipelines.Models; @@ -24,7 +25,8 @@ public class RunTemplateTestsModule : Module EnvironmentVariables = new Dictionary { ["DISABLE_GITHUB_REPORTER"] = "true", - } + }, + CommandLogging = CommandLogging.Input | CommandLogging.Error | CommandLogging.Duration | CommandLogging.ExitCode }, cancellationToken); } } diff --git a/TUnit.Pipeline/Modules/TestTemplatePackageModule.cs b/TUnit.Pipeline/Modules/TestTemplatePackageModule.cs index ff064326ff..774a2107c5 100644 --- a/TUnit.Pipeline/Modules/TestTemplatePackageModule.cs +++ b/TUnit.Pipeline/Modules/TestTemplatePackageModule.cs @@ -2,6 +2,7 @@ using ModularPipelines.Context; using ModularPipelines.DotNet.Extensions; using ModularPipelines.DotNet.Options; +using ModularPipelines.Enums; using ModularPipelines.Models; using ModularPipelines.Modules; @@ -19,27 +20,32 @@ public class TestTemplatePackageModule : Module await context.DotNet().New(new DotNetNewOptions("uninstall") { Arguments = ["TUnit.Templates"], - ThrowOnNonZeroExitCode = false + ThrowOnNonZeroExitCode = false, + CommandLogging = CommandLogging.Input | CommandLogging.Error | CommandLogging.Duration | CommandLogging.ExitCode }, cancellationToken); await context.DotNet().New(new DotNetNewOptions("install") { - Arguments = [$"TUnit.Templates::{version.Value!.SemVer}"] + Arguments = [$"TUnit.Templates::{version.Value!.SemVer}"], + CommandLogging = CommandLogging.Input | CommandLogging.Error | CommandLogging.Duration | CommandLogging.ExitCode }, cancellationToken); await context.DotNet().New(new DotNetNewOptions("TUnit") { - Name = "MyTestProject" + Name = "MyTestProject", + CommandLogging = CommandLogging.Input | CommandLogging.Error | CommandLogging.Duration | CommandLogging.ExitCode }, cancellationToken); await context.DotNet().New(new DotNetNewOptions("TUnit.AspNet") { - Name = "MyTestProject2" + Name = "MyTestProject2", + CommandLogging = CommandLogging.Input | CommandLogging.Error | CommandLogging.Duration | CommandLogging.ExitCode }, cancellationToken); return await context.DotNet().New(new DotNetNewOptions("TUnit.Playwright") { - Name = "MyTestProject3" + Name = "MyTestProject3", + CommandLogging = CommandLogging.Input | CommandLogging.Error | CommandLogging.Duration | CommandLogging.ExitCode }, cancellationToken); } } diff --git a/TUnit.Pipeline/Modules/UploadToNuGetModule.cs b/TUnit.Pipeline/Modules/UploadToNuGetModule.cs index 0abefcbeec..4d4cbb932c 100644 --- a/TUnit.Pipeline/Modules/UploadToNuGetModule.cs +++ b/TUnit.Pipeline/Modules/UploadToNuGetModule.cs @@ -4,6 +4,7 @@ using ModularPipelines.Context; using ModularPipelines.DotNet.Extensions; using ModularPipelines.DotNet.Options; +using ModularPipelines.Enums; using ModularPipelines.Git.Attributes; using ModularPipelines.Git.Extensions; using ModularPipelines.Models; @@ -43,7 +44,8 @@ protected override Task ShouldSkip(IPipelineContext context) context.DotNet().Nuget.Push(new DotNetNugetPushOptions(file) { Source = "https://api.nuget.org/v3/index.json", - ApiKey = options.Value.ApiKey + ApiKey = options.Value.ApiKey, + CommandLogging = CommandLogging.Input | CommandLogging.Error | CommandLogging.Duration | CommandLogging.ExitCode }, cancellationToken), cancellationToken: cancellationToken) .ProcessOneAtATime(); }