the IFileSystem.SetCurrentDirectoryToEmptyTemporaryDirectory() helper is effective for testing code that uses Environment.GetCurrentDirectory() but I have testing code that needs temporary directories that I want to clean up on test completion, but using that helper in any test breaks other tests that use Environment.GetCurrentDirectory() and don't expect the temporary path.
More broadly, it would be useful to be able to create temporary directories with IDisposable-based cleanup without affecting the current working directory. I would use DirectoryCleaner directly (since that's what I actually want), but it's internal.
Can we either have DirectoryCleaner make public or provide an equivalent to SetCurrentDirectoryToEmptyTemporaryDirectory() that doesn't affect GetCurrentDirectory()?
At the moment, I'm using this as a workaround, but it feels hacky:
var oldCurrent = Directory.GetCurrentDirectory();
var real = new RealFileSystem();
var prefix = "myPrefix;
var cleaner =
real.SetCurrentDirectoryToEmptyTemporaryDirectory(prefix: prefix);
var tempPath = real.Path.Combine(real.Directory.GetCurrentDirectory(), real.Path.GetRandomFileName());
Directory.SetCurrentDirectory(oldCurrent); //I don't want this updated, I just want an auto-cleanup-able directory
//do stuff with my temp file but using tempPath itself so I don't actually use GetCurrentDirectory itself
// then when I'm done:
cleaner.Dispose(); // to get the nice auto-cleanup of IDirectoryCleaner
the
IFileSystem.SetCurrentDirectoryToEmptyTemporaryDirectory()helper is effective for testing code that usesEnvironment.GetCurrentDirectory()but I have testing code that needs temporary directories that I want to clean up on test completion, but using that helper in any test breaks other tests that use Environment.GetCurrentDirectory() and don't expect the temporary path.More broadly, it would be useful to be able to create temporary directories with
IDisposable-based cleanup without affecting the current working directory. I would useDirectoryCleanerdirectly (since that's what I actually want), but it'sinternal.Can we either have
DirectoryCleanermakepublicor provide an equivalent toSetCurrentDirectoryToEmptyTemporaryDirectory()that doesn't affectGetCurrentDirectory()?At the moment, I'm using this as a workaround, but it feels hacky: