@@ -13,6 +13,7 @@ public class StartupHooks : IClassFixture<StartupHooks.SharedTestState>
13
13
{
14
14
private SharedTestState sharedTestState ;
15
15
private string startupHookVarName = "DOTNET_STARTUP_HOOKS" ;
16
+ private string startupHookRuntimeConfigName = "STARTUP_HOOKS" ;
16
17
private string startupHookSupport = "System.StartupHookProvider.IsSupported" ;
17
18
18
19
public StartupHooks ( StartupHooks . SharedTestState fixture )
@@ -105,6 +106,59 @@ public void Muxer_activation_of_Multiple_StartupHooks_Succeeds()
105
106
. And . HaveStdOutContaining ( "Hello World" ) ;
106
107
}
107
108
109
+ [ Fact ]
110
+ public void Muxer_activation_of_RuntimeConfig_StartupHook_Succeeds ( )
111
+ {
112
+ var fixture = sharedTestState . PortableAppFixture . Copy ( ) ;
113
+ var dotnet = fixture . BuiltDotnet ;
114
+ var appDll = fixture . TestProject . AppDll ;
115
+
116
+ var startupHookFixture = sharedTestState . StartupHookFixture . Copy ( ) ;
117
+ var startupHookDll = startupHookFixture . TestProject . AppDll ;
118
+
119
+ RuntimeConfig . FromFile ( fixture . TestProject . RuntimeConfigJson )
120
+ . WithProperty ( startupHookRuntimeConfigName , startupHookDll )
121
+ . Save ( ) ;
122
+
123
+ // RuntimeConfig defined startup hook
124
+ dotnet . Exec ( appDll )
125
+ . CaptureStdOut ( )
126
+ . CaptureStdErr ( )
127
+ . Execute ( )
128
+ . Should ( ) . Pass ( )
129
+ . And . HaveStdOutContaining ( "Hello from startup hook!" )
130
+ . And . HaveStdOutContaining ( "Hello World" ) ;
131
+ }
132
+
133
+ [ Fact ]
134
+ public void Muxer_activation_of_RuntimeConfig_And_Environment_StartupHooks_Succeeds ( )
135
+ {
136
+ var fixture = sharedTestState . PortableAppFixture . Copy ( ) ;
137
+ var dotnet = fixture . BuiltDotnet ;
138
+ var appDll = fixture . TestProject . AppDll ;
139
+
140
+ var startupHookFixture = sharedTestState . StartupHookFixture . Copy ( ) ;
141
+ var startupHookDll = startupHookFixture . TestProject . AppDll ;
142
+
143
+ RuntimeConfig . FromFile ( fixture . TestProject . RuntimeConfigJson )
144
+ . WithProperty ( startupHookRuntimeConfigName , startupHookDll )
145
+ . Save ( ) ;
146
+
147
+ var startupHook2Fixture = sharedTestState . StartupHookWithDependencyFixture . Copy ( ) ;
148
+ var startupHook2Dll = startupHook2Fixture . TestProject . AppDll ;
149
+
150
+ // RuntimeConfig and Environment startup hook
151
+ dotnet . Exec ( appDll )
152
+ . EnvironmentVariable ( startupHookVarName , startupHook2Dll )
153
+ . CaptureStdOut ( )
154
+ . CaptureStdErr ( )
155
+ . Execute ( )
156
+ . Should ( ) . Pass ( )
157
+ . And . HaveStdOutContaining ( "Hello from startup hook!" )
158
+ . And . HaveStdOutContaining ( "Hello from startup hook with dependency!" )
159
+ . And . HaveStdOutContaining ( "Hello World" ) ;
160
+ }
161
+
108
162
// Empty startup hook variable
109
163
[ Fact ]
110
164
public void Muxer_activation_of_Empty_StartupHook_Variable_Succeeds ( )
0 commit comments