public async Task SuperDeleteAsync_deletes_a_directory_after_handle_is_released() { // arrange var directoryName = Path.Combine(Path.GetTempPath(), Guid.NewGuid().ToString()); var fileName = Path.Combine(directoryName, Guid.NewGuid().ToString()); var delay = TimeSpan.FromSeconds(1); Directory.CreateDirectory(directoryName); var stopwatch = Stopwatch.StartNew(); var task = CreateFileWithDisappearingLockAsync(fileName, delay); Assert.True(File.Exists(fileName), "Assert file exists before starting"); // act await SuperDeleter.SuperDeleteAsync(directoryName); // assert stopwatch.Stop(); Assert.False(File.Exists(fileName), "Assert file no longer exists"); Assert.False(Directory.Exists(directoryName), "Assert directory does not exist"); // https://github.com/dotnet/runtime/issues/24432 says "no Unix or Linux file locking mechanism protects against deletion" //Assert.True(stopwatch.Elapsed >= delay, $"Assert elapsed time is greater than delay ({stopwatch.Elapsed.TotalMilliseconds:n1}ms < {delay.TotalMilliseconds:n1}ms)"); // cleanup await task; }
public void SuperDelete_deletes_a_read_only_file() { // arrange var fileName = Path.Combine(Path.GetTempPath(), Guid.NewGuid().ToString()); CreateReadOnlyFile(fileName); Assert.True(File.Exists(fileName), "Assert file exists before starting"); // act SuperDeleter.SuperDelete(fileName); // assert Assert.False(File.Exists(fileName), "Assert file no longer exists"); }
public async Task SuperDeleteAsync_deletes_a_directory() { // arrange var directoryName = Path.Combine(Path.GetTempPath(), Guid.NewGuid().ToString()); Directory.CreateDirectory(directoryName); Assert.True(Directory.Exists(directoryName), "Assert directory exists before starting"); // act await SuperDeleter.SuperDeleteAsync(directoryName); // assert Assert.False(Directory.Exists(directoryName), "Assert directory does not exist"); }
public async Task SuperDeleteAsync_deletes_a_file() { // arrange var fileName = Path.Combine(Path.GetTempPath(), Guid.NewGuid().ToString()); using (var fileStream = File.Create(fileName)) { } Assert.True(File.Exists(fileName), "Assert file exists before starting"); // act await SuperDeleter.SuperDeleteAsync(fileName); // assert Assert.False(File.Exists(fileName), "Assert file no longer exists"); }
public async Task SuperDeleteAsync_deletes_a_directory_with_read_only_file() { // arrange var directoryName = Path.Combine(Path.GetTempPath(), Guid.NewGuid().ToString()); var fileName = Path.Combine(directoryName, Guid.NewGuid().ToString()); Directory.CreateDirectory(directoryName); CreateReadOnlyFile(fileName); Assert.True(File.Exists(fileName), "Assert file exists before starting"); // act await SuperDeleter.SuperDeleteAsync(directoryName); // assert Assert.False(File.Exists(fileName), "Assert file no longer exists"); Assert.False(Directory.Exists(directoryName), "Assert directory does not exist"); }