Welcome to mirror list, hosted at ThFree Co, Russian Federation.

github.com/dotnet/runtime.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorgithub-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com>2021-12-15 21:40:04 +0300
committerGitHub <noreply@github.com>2021-12-15 21:40:04 +0300
commit9c341f4b25758c05d3182958a12b62125ff842d6 (patch)
treefa69fbd2213e02d8a63e1c881708dc72c5e4bc4a /src/installer
parent5d465ac142daa4bfa14f80f1a6afcd0a7ec459b2 (diff)
[release/6.0] Allow runtimeconfig StartupHooks and Environment StartupHooks to both be present (#62124)
* Allow configProperties "STARTUP_HOOKS" and env "DOTNET_STARTUP_HOOKS" to both be present * Fix duplicate_property_error property names to reflect the actual duplicate * fixup! Allow configProperties "STARTUP_HOOKS" and env "DOTNET_STARTUP_HOOKS" to both be present * Enforce env startup hook precedence over runtimeconfig startup hooks Co-authored-by: Tom de Goede <tom.degoede@afas.nl>
Diffstat (limited to 'src/installer')
-rw-r--r--src/installer/tests/HostActivation.Tests/StartupHooks.cs59
1 files changed, 59 insertions, 0 deletions
diff --git a/src/installer/tests/HostActivation.Tests/StartupHooks.cs b/src/installer/tests/HostActivation.Tests/StartupHooks.cs
index a0533a60fd4..3e168535616 100644
--- a/src/installer/tests/HostActivation.Tests/StartupHooks.cs
+++ b/src/installer/tests/HostActivation.Tests/StartupHooks.cs
@@ -13,6 +13,7 @@ namespace Microsoft.DotNet.CoreSetup.Test.HostActivation
{
private SharedTestState sharedTestState;
private string startupHookVarName = "DOTNET_STARTUP_HOOKS";
+ private string startupHookRuntimeConfigName = "STARTUP_HOOKS";
private string startupHookSupport = "System.StartupHookProvider.IsSupported";
public StartupHooks(StartupHooks.SharedTestState fixture)
@@ -105,6 +106,64 @@ namespace Microsoft.DotNet.CoreSetup.Test.HostActivation
.And.HaveStdOutContaining("Hello World");
}
+ [Fact]
+ public void Muxer_activation_of_RuntimeConfig_StartupHook_Succeeds()
+ {
+ var fixture = sharedTestState.PortableAppFixture.Copy();
+ var dotnet = fixture.BuiltDotnet;
+ var appDll = fixture.TestProject.AppDll;
+
+ var startupHookFixture = sharedTestState.StartupHookFixture.Copy();
+ var startupHookDll = startupHookFixture.TestProject.AppDll;
+
+ RuntimeConfig.FromFile(fixture.TestProject.RuntimeConfigJson)
+ .WithProperty(startupHookRuntimeConfigName, startupHookDll)
+ .Save();
+
+ // RuntimeConfig defined startup hook
+ dotnet.Exec(appDll)
+ .CaptureStdOut()
+ .CaptureStdErr()
+ .Execute()
+ .Should().Pass()
+ .And.HaveStdOutContaining("Hello from startup hook!")
+ .And.HaveStdOutContaining("Hello World");
+ }
+
+ [Fact]
+ public void Muxer_activation_of_RuntimeConfig_And_Environment_StartupHooks_SucceedsInExpectedOrder()
+ {
+ var fixture = sharedTestState.PortableAppFixture.Copy();
+ var dotnet = fixture.BuiltDotnet;
+ var appDll = fixture.TestProject.AppDll;
+
+ var startupHookFixture = sharedTestState.StartupHookFixture.Copy();
+ var startupHookDll = startupHookFixture.TestProject.AppDll;
+
+ RuntimeConfig.FromFile(fixture.TestProject.RuntimeConfigJson)
+ .WithProperty(startupHookRuntimeConfigName, startupHookDll)
+ .Save();
+
+ var startupHook2Fixture = sharedTestState.StartupHookWithDependencyFixture.Copy();
+ var startupHook2Dll = startupHook2Fixture.TestProject.AppDll;
+
+ // include any char to counter output from other threads such as in #57243
+ const string wildcardPattern = @"[\r\n\s.]*";
+
+ // RuntimeConfig and Environment startup hooks in expected order
+ dotnet.Exec(appDll)
+ .EnvironmentVariable(startupHookVarName, startupHook2Dll)
+ .CaptureStdOut()
+ .CaptureStdErr()
+ .Execute()
+ .Should().Pass()
+ .And.HaveStdOutMatching("Hello from startup hook with dependency!" +
+ wildcardPattern +
+ "Hello from startup hook!" +
+ wildcardPattern +
+ "Hello World");
+ }
+
// Empty startup hook variable
[Fact]
public void Muxer_activation_of_Empty_StartupHook_Variable_Succeeds()