Fix for delete post-config-load. (#68)

This commit is contained in:
Phillip Hoff
2017-12-20 09:43:13 -08:00
committed by Brendan Burns
parent 759c1017cd
commit bbd359f859
2 changed files with 38 additions and 9 deletions

View File

@@ -223,7 +223,10 @@ namespace k8s
var deserializeBuilder = new DeserializerBuilder(); var deserializeBuilder = new DeserializerBuilder();
var deserializer = deserializeBuilder.Build(); var deserializer = deserializeBuilder.Build();
return deserializer.Deserialize<K8SConfiguration>(kubeconfig.OpenText()); using (var kubeConfigTextStream = kubeconfig.OpenText())
{
return deserializer.Deserialize<K8SConfiguration>(kubeConfigTextStream);
}
} }
} }
} }

View File

@@ -250,14 +250,40 @@ namespace k8s.Tests
[Fact] [Fact]
public void NoCurrentContext() public void NoCurrentContext()
{ {
var fi = new FileInfo("assets/kubeconfig.no-current-context.yml"); var fi = new FileInfo("assets/kubeconfig.no-current-context.yml");
// failed if cannot infer any server host // failed if cannot infer any server host
Assert.Throws<KubeConfigException>(() => KubernetesClientConfiguration.BuildConfigFromConfigFile(fi)); Assert.Throws<KubeConfigException>(() => KubernetesClientConfiguration.BuildConfigFromConfigFile(fi));
// survive when masterUrl is set // survive when masterUrl is set
var cfg = KubernetesClientConfiguration.BuildConfigFromConfigFile(fi, masterUrl: "http://test.server"); var cfg = KubernetesClientConfiguration.BuildConfigFromConfigFile(fi, masterUrl: "http://test.server");
Assert.Equal("http://test.server", cfg.Host); Assert.Equal("http://test.server", cfg.Host);
} }
/// <summary>
/// Checks that loading a configuration from a file leaves no outstanding handles to the file.
/// </summary>
/// <remarks>
/// This test fails only on Windows.
/// </remarks>
[Fact]
public void DeletedConfigurationFile()
{
var assetFileInfo = new FileInfo("assets/kubeconfig.yml");
var tempFileInfo = new FileInfo(Path.GetTempFileName());
File.Copy(assetFileInfo.FullName, tempFileInfo.FullName, /* overwrite: */ true);
KubernetesClientConfiguration config;
try
{
config = KubernetesClientConfiguration.BuildConfigFromConfigFile(tempFileInfo);
}
finally
{
File.Delete(tempFileInfo.FullName);
}
}
} }
} }