@@ -128,7 +128,76 @@ public async Task SetCIEnv()
128
128
}
129
129
}
130
130
}
131
+ #if OS_WINDOWS
132
+ [ Fact ]
133
+ [ Trait ( "Level" , "L0" ) ]
134
+ [ Trait ( "Category" , "Common" ) ]
135
+ public async Task SetTestEnvWithNullInKey ( )
136
+ {
137
+ using ( TestHostContext hc = new ( this ) )
138
+ {
139
+ Tracing trace = hc . GetTrace ( ) ;
140
+
141
+ Int32 exitCode = - 1 ;
142
+ var processInvoker = new ProcessInvokerWrapper ( ) ;
143
+ processInvoker . Initialize ( hc ) ;
144
+ var stdout = new List < string > ( ) ;
145
+ var stderr = new List < string > ( ) ;
146
+ processInvoker . OutputDataReceived += ( object sender , ProcessDataReceivedEventArgs e ) =>
147
+ {
148
+ trace . Info ( e . Data ) ;
149
+ stdout . Add ( e . Data ) ;
150
+ } ;
151
+ processInvoker . ErrorDataReceived += ( object sender , ProcessDataReceivedEventArgs e ) =>
152
+ {
153
+ trace . Info ( e . Data ) ;
154
+ stderr . Add ( e . Data ) ;
155
+ } ;
156
+
157
+ exitCode = await processInvoker . ExecuteAsync ( "" , "cmd.exe" , "/c \" echo %TEST%\" " , new Dictionary < string , string > ( ) { { "TEST\0 second" , "first" } } , CancellationToken . None ) ;
158
+
159
+
160
+ trace . Info ( "Exit Code: {0}" , exitCode ) ;
161
+ Assert . Equal ( 0 , exitCode ) ;
162
+ Assert . Equal ( "first" , stdout . First ( x => ! string . IsNullOrWhiteSpace ( x ) ) ) ;
163
+
164
+ }
165
+ }
131
166
167
+ [ Fact ]
168
+ [ Trait ( "Level" , "L0" ) ]
169
+ [ Trait ( "Category" , "Common" ) ]
170
+ public async Task SetTestEnvWithNullInValue ( )
171
+ {
172
+ using ( TestHostContext hc = new ( this ) )
173
+ {
174
+ Tracing trace = hc . GetTrace ( ) ;
175
+
176
+ Int32 exitCode = - 1 ;
177
+ var processInvoker = new ProcessInvokerWrapper ( ) ;
178
+ processInvoker . Initialize ( hc ) ;
179
+ var stdout = new List < string > ( ) ;
180
+ var stderr = new List < string > ( ) ;
181
+ processInvoker . OutputDataReceived += ( object sender , ProcessDataReceivedEventArgs e ) =>
182
+ {
183
+ trace . Info ( e . Data ) ;
184
+ stdout . Add ( e . Data ) ;
185
+ } ;
186
+ processInvoker . ErrorDataReceived += ( object sender , ProcessDataReceivedEventArgs e ) =>
187
+ {
188
+ trace . Info ( e . Data ) ;
189
+ stderr . Add ( e . Data ) ;
190
+ } ;
191
+
192
+ exitCode = await processInvoker . ExecuteAsync ( "" , "cmd.exe" , "/c \" echo %TEST%\" " , new Dictionary < string , string > ( ) { { "TEST" , "first\0 second" } } , CancellationToken . None ) ;
193
+
194
+ trace . Info ( "Exit Code: {0}" , exitCode ) ;
195
+ Assert . Equal ( 0 , exitCode ) ;
196
+ Assert . Equal ( "first" , stdout . First ( x => ! string . IsNullOrWhiteSpace ( x ) ) ) ;
197
+
198
+ }
199
+ }
200
+ #endif
132
201
[ Fact ]
133
202
[ Trait ( "Level" , "L0" ) ]
134
203
[ Trait ( "Category" , "Common" ) ]
0 commit comments