@@ -250,14 +250,40 @@ public void SmartSkipTlsVerify()
250
250
[ Fact ]
251
251
public void NoCurrentContext ( )
252
252
{
253
- var fi = new FileInfo ( "assets/kubeconfig.no-current-context.yml" ) ;
254
-
255
- // failed if cannot infer any server host
256
- Assert . Throws < KubeConfigException > ( ( ) => KubernetesClientConfiguration . BuildConfigFromConfigFile ( fi ) ) ;
257
-
258
- // survive when masterUrl is set
259
- var cfg = KubernetesClientConfiguration . BuildConfigFromConfigFile ( fi , masterUrl : "http://test.server" ) ;
253
+ var fi = new FileInfo ( "assets/kubeconfig.no-current-context.yml" ) ;
254
+
255
+ // failed if cannot infer any server host
256
+ Assert . Throws < KubeConfigException > ( ( ) => KubernetesClientConfiguration . BuildConfigFromConfigFile ( fi ) ) ;
257
+
258
+ // survive when masterUrl is set
259
+ var cfg = KubernetesClientConfiguration . BuildConfigFromConfigFile ( fi , masterUrl : "http://test.server" ) ;
260
260
Assert . Equal ( "http://test.server" , cfg . Host ) ;
261
- }
261
+ }
262
+
263
+ /// <summary>
264
+ /// Checks that loading a configuration from a file leaves no outstanding handles to the file.
265
+ /// </summary>
266
+ /// <remarks>
267
+ /// This test fails only on Windows.
268
+ /// </remarks>
269
+ [ Fact ]
270
+ public void DeletedConfigurationFile ( )
271
+ {
272
+ var assetFileInfo = new FileInfo ( "assets/kubeconfig.yml" ) ;
273
+ var tempFileInfo = new FileInfo ( Path . GetTempFileName ( ) ) ;
274
+
275
+ File . Copy ( assetFileInfo . FullName , tempFileInfo . FullName , /* overwrite: */ true ) ;
276
+
277
+ KubernetesClientConfiguration config ;
278
+
279
+ try
280
+ {
281
+ config = KubernetesClientConfiguration . BuildConfigFromConfigFile ( tempFileInfo ) ;
282
+ }
283
+ finally
284
+ {
285
+ File . Delete ( tempFileInfo . FullName ) ;
286
+ }
287
+ }
262
288
}
263
289
}
0 commit comments