From f6d1c44b92d2be6c53191d4fc80cb034cbadb70f Mon Sep 17 00:00:00 2001 From: pedrobsaila Date: Tue, 4 Apr 2023 22:00:10 +0200 Subject: [PATCH 01/10] dotnet.exe prints error messages to console when launched with empty DOTNET_MULTILEVEL_LOOKUP --- src/native/corehost/hostmisc/pal.windows.cpp | 8 ++++++-- 1 file changed, 6 insertions(+), 2 deletions(-) diff --git a/src/native/corehost/hostmisc/pal.windows.cpp b/src/native/corehost/hostmisc/pal.windows.cpp index c613d4240d34a6..77d090d5bc1b8b 100644 --- a/src/native/corehost/hostmisc/pal.windows.cpp +++ b/src/native/corehost/hostmisc/pal.windows.cpp @@ -499,14 +499,18 @@ bool pal::getenv(const char_t* name, string_t* recv) auto err = GetLastError(); if (err != ERROR_ENVVAR_NOT_FOUND) { - trace::error(_X("Failed to read environment variable [%s], HRESULT: 0x%X"), name, HRESULT_FROM_WIN32(GetLastError())); + trace::warning(_X("Failed to read environment variable [%s], HRESULT: 0x%X"), name, HRESULT_FROM_WIN32(GetLastError())); } return false; } auto buf = new char_t[length]; if (::GetEnvironmentVariableW(name, buf, length) == 0) { - trace::error(_X("Failed to read environment variable [%s], HRESULT: 0x%X"), name, HRESULT_FROM_WIN32(GetLastError())); + auto err = GetLastError(); + if (err != ERROR_ENVVAR_NOT_FOUND) + { + trace::warning(_X("Failed to read environment variable [%s], HRESULT: 0x%X"), name, HRESULT_FROM_WIN32(GetLastError())); + } return false; } From bdad4596baffb92a589297a93e6a790a0773d2aa Mon Sep 17 00:00:00 2001 From: Badre BSAILA <54767641+pedrobsaila@users.noreply.github.com> Date: Thu, 6 Apr 2023 22:55:18 +0200 Subject: [PATCH 02/10] reuse err variable instead of invoking GetLastError another time Co-authored-by: Vitek Karas <10670590+vitek-karas@users.noreply.github.com> --- src/native/corehost/hostmisc/pal.windows.cpp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/native/corehost/hostmisc/pal.windows.cpp b/src/native/corehost/hostmisc/pal.windows.cpp index 77d090d5bc1b8b..23ab8015723079 100644 --- a/src/native/corehost/hostmisc/pal.windows.cpp +++ b/src/native/corehost/hostmisc/pal.windows.cpp @@ -509,7 +509,7 @@ bool pal::getenv(const char_t* name, string_t* recv) auto err = GetLastError(); if (err != ERROR_ENVVAR_NOT_FOUND) { - trace::warning(_X("Failed to read environment variable [%s], HRESULT: 0x%X"), name, HRESULT_FROM_WIN32(GetLastError())); + trace::warning(_X("Failed to read environment variable [%s], HRESULT: 0x%X"), name, HRESULT_FROM_WIN32(err)); } return false; } From 25a26cce88b13957ec58dfb7a037fdaf5592d71a Mon Sep 17 00:00:00 2001 From: pedrobsaila Date: Thu, 6 Apr 2023 22:56:58 +0200 Subject: [PATCH 03/10] another useless call to GetLastError --- src/native/corehost/hostmisc/pal.windows.cpp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/native/corehost/hostmisc/pal.windows.cpp b/src/native/corehost/hostmisc/pal.windows.cpp index 23ab8015723079..cd6701879389d5 100644 --- a/src/native/corehost/hostmisc/pal.windows.cpp +++ b/src/native/corehost/hostmisc/pal.windows.cpp @@ -499,7 +499,7 @@ bool pal::getenv(const char_t* name, string_t* recv) auto err = GetLastError(); if (err != ERROR_ENVVAR_NOT_FOUND) { - trace::warning(_X("Failed to read environment variable [%s], HRESULT: 0x%X"), name, HRESULT_FROM_WIN32(GetLastError())); + trace::warning(_X("Failed to read environment variable [%s], HRESULT: 0x%X"), name, HRESULT_FROM_WIN32(err)); } return false; } From 8ed96e20f542dd298962ea688295066aa2f98dc4 Mon Sep 17 00:00:00 2001 From: pedrobsaila Date: Sat, 8 Apr 2023 23:22:21 +0200 Subject: [PATCH 04/10] add tests --- src/installer/tests/HostActivation.Tests/StartupHooks.cs | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/src/installer/tests/HostActivation.Tests/StartupHooks.cs b/src/installer/tests/HostActivation.Tests/StartupHooks.cs index 3e1685356167f9..4c8e4a43e91e4f 100644 --- a/src/installer/tests/HostActivation.Tests/StartupHooks.cs +++ b/src/installer/tests/HostActivation.Tests/StartupHooks.cs @@ -175,11 +175,14 @@ public void Muxer_activation_of_Empty_StartupHook_Variable_Succeeds() var startupHookVar = ""; dotnet.Exec(appDll) .EnvironmentVariable(startupHookVarName, startupHookVar) + .EnvironmentVariable(Constants.HostTracing.TraceLevelEnvironmentVariable, "1") + .EnvironmentVariable(Constants.HostTracing.VerbosityEnvironmentVariable, "2") .CaptureStdOut() .CaptureStdErr() .Execute() .Should().Pass() - .And.HaveStdOutContaining("Hello World"); + .And.HaveStdOutContaining("Hello World") + .And.NotHaveStdErrContaining("Failed to read environment variable"); } // Run the app with a startup hook assembly that depends on assemblies not on the TPA list From e72eff8d04a5e012038b8347665941e88acac171 Mon Sep 17 00:00:00 2001 From: pedrobsaila Date: Sat, 8 Apr 2023 23:22:39 +0200 Subject: [PATCH 05/10] fix spacing --- src/installer/tests/HostActivation.Tests/StartupHooks.cs | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/installer/tests/HostActivation.Tests/StartupHooks.cs b/src/installer/tests/HostActivation.Tests/StartupHooks.cs index 4c8e4a43e91e4f..9828ae2b875467 100644 --- a/src/installer/tests/HostActivation.Tests/StartupHooks.cs +++ b/src/installer/tests/HostActivation.Tests/StartupHooks.cs @@ -176,7 +176,7 @@ public void Muxer_activation_of_Empty_StartupHook_Variable_Succeeds() dotnet.Exec(appDll) .EnvironmentVariable(startupHookVarName, startupHookVar) .EnvironmentVariable(Constants.HostTracing.TraceLevelEnvironmentVariable, "1") - .EnvironmentVariable(Constants.HostTracing.VerbosityEnvironmentVariable, "2") + .EnvironmentVariable(Constants.HostTracing.VerbosityEnvironmentVariable, "2") .CaptureStdOut() .CaptureStdErr() .Execute() From dc413aa6024996e5a98f4fab4985a541cd47a6f9 Mon Sep 17 00:00:00 2001 From: pedrobsaila Date: Sat, 8 Apr 2023 23:54:19 +0200 Subject: [PATCH 06/10] add asserts to another test --- .../HostActivation.Tests/PortableAppActivation.cs | 10 ++++++++-- 1 file changed, 8 insertions(+), 2 deletions(-) diff --git a/src/installer/tests/HostActivation.Tests/PortableAppActivation.cs b/src/installer/tests/HostActivation.Tests/PortableAppActivation.cs index b8fced8d26ea69..5b9a3b730e0ff2 100644 --- a/src/installer/tests/HostActivation.Tests/PortableAppActivation.cs +++ b/src/installer/tests/HostActivation.Tests/PortableAppActivation.cs @@ -318,11 +318,14 @@ public void AppHost_FrameworkDependent_GlobalLocation_Succeeds(bool useRegistere .MultilevelLookup(false) .ApplyRegisteredInstallLocationOverride(registeredInstallLocationOverride) .EnvironmentVariable(Constants.TestOnlyEnvironmentVariables.DefaultInstallPath, useRegisteredLocation ? null : builtDotnet) + .EnvironmentVariable(Constants.HostTracing.TraceLevelEnvironmentVariable, "1") + .EnvironmentVariable(Constants.HostTracing.VerbosityEnvironmentVariable, "2") .DotNetRoot(null) .Execute() .Should().Pass() .And.HaveStdOutContaining("Hello World") - .And.HaveStdOutContaining(sharedTestState.RepoDirectories.MicrosoftNETCoreAppVersion); + .And.HaveStdOutContaining(sharedTestState.RepoDirectories.MicrosoftNETCoreAppVersion) + .And.NotHaveStdErrContaining("Failed to read environment variable"); ; // Verify running from within the working directory Command.Create(appExe) @@ -332,11 +335,14 @@ public void AppHost_FrameworkDependent_GlobalLocation_Succeeds(bool useRegistere .WorkingDirectory(fixture.TestProject.OutputDirectory) .ApplyRegisteredInstallLocationOverride(registeredInstallLocationOverride) .EnvironmentVariable(Constants.TestOnlyEnvironmentVariables.DefaultInstallPath, useRegisteredLocation ? null : builtDotnet) + .EnvironmentVariable(Constants.HostTracing.TraceLevelEnvironmentVariable, "1") + .EnvironmentVariable(Constants.HostTracing.VerbosityEnvironmentVariable, "2") .DotNetRoot(null) .Execute() .Should().Pass() .And.HaveStdOutContaining("Hello World") - .And.HaveStdOutContaining(sharedTestState.RepoDirectories.MicrosoftNETCoreAppVersion); + .And.HaveStdOutContaining(sharedTestState.RepoDirectories.MicrosoftNETCoreAppVersion) + .And.NotHaveStdErrContaining("Failed to read environment variable"); ; } } From 87dabd470322a0d99b6d3201f9570aa31ed6fa46 Mon Sep 17 00:00:00 2001 From: pedrobsaila Date: Sun, 9 Apr 2023 00:12:09 +0200 Subject: [PATCH 07/10] delete empty instruction --- .../tests/HostActivation.Tests/PortableAppActivation.cs | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/src/installer/tests/HostActivation.Tests/PortableAppActivation.cs b/src/installer/tests/HostActivation.Tests/PortableAppActivation.cs index 5b9a3b730e0ff2..36edcb2fd7ff13 100644 --- a/src/installer/tests/HostActivation.Tests/PortableAppActivation.cs +++ b/src/installer/tests/HostActivation.Tests/PortableAppActivation.cs @@ -325,7 +325,7 @@ public void AppHost_FrameworkDependent_GlobalLocation_Succeeds(bool useRegistere .Should().Pass() .And.HaveStdOutContaining("Hello World") .And.HaveStdOutContaining(sharedTestState.RepoDirectories.MicrosoftNETCoreAppVersion) - .And.NotHaveStdErrContaining("Failed to read environment variable"); ; + .And.NotHaveStdErrContaining("Failed to read environment variable"); // Verify running from within the working directory Command.Create(appExe) @@ -342,7 +342,7 @@ public void AppHost_FrameworkDependent_GlobalLocation_Succeeds(bool useRegistere .Should().Pass() .And.HaveStdOutContaining("Hello World") .And.HaveStdOutContaining(sharedTestState.RepoDirectories.MicrosoftNETCoreAppVersion) - .And.NotHaveStdErrContaining("Failed to read environment variable"); ; + .And.NotHaveStdErrContaining("Failed to read environment variable"); } } From f0c994b1a773fe9b4fafd3a8255746c25e8496d3 Mon Sep 17 00:00:00 2001 From: pedrobsaila Date: Mon, 10 Apr 2023 11:20:15 +0200 Subject: [PATCH 08/10] use EnableTracingAndCaptureOutputs --- .../HostActivation.Tests/PortableAppActivation.cs | 10 ++-------- .../tests/HostActivation.Tests/StartupHooks.cs | 5 +---- 2 files changed, 3 insertions(+), 12 deletions(-) diff --git a/src/installer/tests/HostActivation.Tests/PortableAppActivation.cs b/src/installer/tests/HostActivation.Tests/PortableAppActivation.cs index 36edcb2fd7ff13..07de7a4d746659 100644 --- a/src/installer/tests/HostActivation.Tests/PortableAppActivation.cs +++ b/src/installer/tests/HostActivation.Tests/PortableAppActivation.cs @@ -313,13 +313,10 @@ public void AppHost_FrameworkDependent_GlobalLocation_Succeeds(bool useRegistere // Verify running with the default working directory Command.Create(appExe) - .CaptureStdErr() - .CaptureStdOut() + .EnableTracingAndCaptureOutputs() .MultilevelLookup(false) .ApplyRegisteredInstallLocationOverride(registeredInstallLocationOverride) .EnvironmentVariable(Constants.TestOnlyEnvironmentVariables.DefaultInstallPath, useRegisteredLocation ? null : builtDotnet) - .EnvironmentVariable(Constants.HostTracing.TraceLevelEnvironmentVariable, "1") - .EnvironmentVariable(Constants.HostTracing.VerbosityEnvironmentVariable, "2") .DotNetRoot(null) .Execute() .Should().Pass() @@ -329,14 +326,11 @@ public void AppHost_FrameworkDependent_GlobalLocation_Succeeds(bool useRegistere // Verify running from within the working directory Command.Create(appExe) - .CaptureStdErr() - .CaptureStdOut() + .EnableTracingAndCaptureOutputs() .MultilevelLookup(false) .WorkingDirectory(fixture.TestProject.OutputDirectory) .ApplyRegisteredInstallLocationOverride(registeredInstallLocationOverride) .EnvironmentVariable(Constants.TestOnlyEnvironmentVariables.DefaultInstallPath, useRegisteredLocation ? null : builtDotnet) - .EnvironmentVariable(Constants.HostTracing.TraceLevelEnvironmentVariable, "1") - .EnvironmentVariable(Constants.HostTracing.VerbosityEnvironmentVariable, "2") .DotNetRoot(null) .Execute() .Should().Pass() diff --git a/src/installer/tests/HostActivation.Tests/StartupHooks.cs b/src/installer/tests/HostActivation.Tests/StartupHooks.cs index 9828ae2b875467..1f25c210a52b11 100644 --- a/src/installer/tests/HostActivation.Tests/StartupHooks.cs +++ b/src/installer/tests/HostActivation.Tests/StartupHooks.cs @@ -175,10 +175,7 @@ public void Muxer_activation_of_Empty_StartupHook_Variable_Succeeds() var startupHookVar = ""; dotnet.Exec(appDll) .EnvironmentVariable(startupHookVarName, startupHookVar) - .EnvironmentVariable(Constants.HostTracing.TraceLevelEnvironmentVariable, "1") - .EnvironmentVariable(Constants.HostTracing.VerbosityEnvironmentVariable, "2") - .CaptureStdOut() - .CaptureStdErr() + .EnableTracingAndCaptureOutputs() .Execute() .Should().Pass() .And.HaveStdOutContaining("Hello World") From 77788deb3ed827b2d89144198f73c943aa815a7d Mon Sep 17 00:00:00 2001 From: pedrobsaila Date: Tue, 11 Apr 2023 00:54:05 +0200 Subject: [PATCH 09/10] check just that no error is logged --- .../HostActivation.Tests/PortableAppActivation.cs | 10 ++++++---- .../tests/HostActivation.Tests/StartupHooks.cs | 5 +++-- 2 files changed, 9 insertions(+), 6 deletions(-) diff --git a/src/installer/tests/HostActivation.Tests/PortableAppActivation.cs b/src/installer/tests/HostActivation.Tests/PortableAppActivation.cs index 07de7a4d746659..7819f3ed2f14d8 100644 --- a/src/installer/tests/HostActivation.Tests/PortableAppActivation.cs +++ b/src/installer/tests/HostActivation.Tests/PortableAppActivation.cs @@ -313,7 +313,8 @@ public void AppHost_FrameworkDependent_GlobalLocation_Succeeds(bool useRegistere // Verify running with the default working directory Command.Create(appExe) - .EnableTracingAndCaptureOutputs() + .CaptureStdErr() + .CaptureStdOut() .MultilevelLookup(false) .ApplyRegisteredInstallLocationOverride(registeredInstallLocationOverride) .EnvironmentVariable(Constants.TestOnlyEnvironmentVariables.DefaultInstallPath, useRegisteredLocation ? null : builtDotnet) @@ -322,11 +323,12 @@ public void AppHost_FrameworkDependent_GlobalLocation_Succeeds(bool useRegistere .Should().Pass() .And.HaveStdOutContaining("Hello World") .And.HaveStdOutContaining(sharedTestState.RepoDirectories.MicrosoftNETCoreAppVersion) - .And.NotHaveStdErrContaining("Failed to read environment variable"); + .And.NotHaveStdErr(); // Verify running from within the working directory Command.Create(appExe) - .EnableTracingAndCaptureOutputs() + .CaptureStdErr() + .CaptureStdOut() .MultilevelLookup(false) .WorkingDirectory(fixture.TestProject.OutputDirectory) .ApplyRegisteredInstallLocationOverride(registeredInstallLocationOverride) @@ -336,7 +338,7 @@ public void AppHost_FrameworkDependent_GlobalLocation_Succeeds(bool useRegistere .Should().Pass() .And.HaveStdOutContaining("Hello World") .And.HaveStdOutContaining(sharedTestState.RepoDirectories.MicrosoftNETCoreAppVersion) - .And.NotHaveStdErrContaining("Failed to read environment variable"); + .And.NotHaveStdErr(); } } diff --git a/src/installer/tests/HostActivation.Tests/StartupHooks.cs b/src/installer/tests/HostActivation.Tests/StartupHooks.cs index 1f25c210a52b11..63e5f47383cfbd 100644 --- a/src/installer/tests/HostActivation.Tests/StartupHooks.cs +++ b/src/installer/tests/HostActivation.Tests/StartupHooks.cs @@ -175,11 +175,12 @@ public void Muxer_activation_of_Empty_StartupHook_Variable_Succeeds() var startupHookVar = ""; dotnet.Exec(appDll) .EnvironmentVariable(startupHookVarName, startupHookVar) - .EnableTracingAndCaptureOutputs() + .CaptureStdErr() + .CaptureStdOut() .Execute() .Should().Pass() .And.HaveStdOutContaining("Hello World") - .And.NotHaveStdErrContaining("Failed to read environment variable"); + .And.NotHaveStdErr(); } // Run the app with a startup hook assembly that depends on assemblies not on the TPA list From 70414069dcf4081121b623039cd391e6ed436d91 Mon Sep 17 00:00:00 2001 From: pedrobsaila Date: Tue, 11 Apr 2023 00:55:01 +0200 Subject: [PATCH 10/10] rollback change correctly --- src/installer/tests/HostActivation.Tests/StartupHooks.cs | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/installer/tests/HostActivation.Tests/StartupHooks.cs b/src/installer/tests/HostActivation.Tests/StartupHooks.cs index 63e5f47383cfbd..ab1f1846062162 100644 --- a/src/installer/tests/HostActivation.Tests/StartupHooks.cs +++ b/src/installer/tests/HostActivation.Tests/StartupHooks.cs @@ -175,8 +175,8 @@ public void Muxer_activation_of_Empty_StartupHook_Variable_Succeeds() var startupHookVar = ""; dotnet.Exec(appDll) .EnvironmentVariable(startupHookVarName, startupHookVar) - .CaptureStdErr() .CaptureStdOut() + .CaptureStdErr() .Execute() .Should().Pass() .And.HaveStdOutContaining("Hello World")