From 9e7513377756f5f06d85bbc9a8816d36ea27fade Mon Sep 17 00:00:00 2001 From: Owen Hurford Date: Fri, 29 Dec 2023 20:23:58 +0000 Subject: [PATCH] remove overwrite checks --- .../IDirectoryInfoExtensions.cs | 16 ----- .../DirectoryInfoExtensionsTests.cs | 68 ++----------------- 2 files changed, 4 insertions(+), 80 deletions(-) diff --git a/src/System.IO.Abstractions.Extensions/IDirectoryInfoExtensions.cs b/src/System.IO.Abstractions.Extensions/IDirectoryInfoExtensions.cs index cd5c8bf..c02135c 100644 --- a/src/System.IO.Abstractions.Extensions/IDirectoryInfoExtensions.cs +++ b/src/System.IO.Abstractions.Extensions/IDirectoryInfoExtensions.cs @@ -211,22 +211,6 @@ public static void CopyTo( string directoriesSearchPattern = "*", bool overwrite = false) { - if (!overwrite) - { - source.ForEachFile( - (file, destDir) => { - var destPath = destDir.GetFilePath(file.Name); - if (destination.FileSystem.File.Exists(destPath)) - { - throw new IOException(StringResources.Format("CANNOT_OVERWRITE", destPath)); - } - }, - subDirectory => source.TranslatePaths(subDirectory, destination, true), - recursive, - filesSearchPattern, - directoriesSearchPattern); - } - source.ForEachFile( (file, destDir) => file.CopyTo(destDir.GetFilePath(file.Name), overwrite), subDirectory => source.TranslatePaths(subDirectory, destination, true), diff --git a/tests/System.IO.Abstractions.Extensions.Tests/DirectoryInfoExtensionsTests.cs b/tests/System.IO.Abstractions.Extensions.Tests/DirectoryInfoExtensionsTests.cs index fb77bb3..e2fba74 100644 --- a/tests/System.IO.Abstractions.Extensions.Tests/DirectoryInfoExtensionsTests.cs +++ b/tests/System.IO.Abstractions.Extensions.Tests/DirectoryInfoExtensionsTests.cs @@ -390,60 +390,7 @@ public void CopyTo_TargetDirAndParentDoesNotExist_CreatesTargetDirectoryHierarch } [Test] - public void CopyTo_Overwrite_OverwritesWhenSet([Values] bool preExisting) - { - //arrange - var fs = new FileSystem(); - var workingDir = fs.DirectoryInfo.New(fs.Directory.GetCurrentDirectory()).CreateSubdirectory(Guid.NewGuid().ToString()); - - //create directories - var source = fs.DirectoryInfo.New(fs.Path.Combine(workingDir.FullName, "SourceDir")); - var dest = fs.DirectoryInfo.New(fs.Path.Combine(workingDir.FullName, "DestDir")); - - source.Create(); - dest.Create(); - - //create files - var sourceFile = fs.FileInfo.New(fs.Path.Combine(source.FullName, "file.txt")); - var destFile = fs.FileInfo.New(fs.Path.Combine(dest.FullName, "file.txt")); - - var sourceFileContent = new[] { nameof(sourceFile) }; - sourceFile.WriteLines(sourceFileContent); - var destFileContent = new[] { nameof(destFile) }; - if (preExisting) - { - destFile.WriteLines(destFileContent); - } - - //make sure everything is set up as expected - Assert.IsTrue(fs.Directory.Exists(source.FullName)); - Assert.IsTrue(fs.File.Exists(sourceFile.FullName)); - Assert.AreEqual(fs.File.ReadAllLines(sourceFile.FullName), sourceFileContent); - Assert.IsTrue(fs.Directory.Exists(dest.FullName)); - if (preExisting) - { - Assert.IsTrue(fs.File.Exists(destFile.FullName)); - Assert.AreEqual(fs.File.ReadAllLines(destFile.FullName), destFileContent); - } - else - { - Assert.IsFalse(fs.File.Exists(destFile.FullName)); - } - - //act - source.CopyTo(dest, overwrite: true); - - //assert - Assert.AreEqual(fs.File.ReadAllLines(destFile.FullName), sourceFileContent); - - //cleanup - workingDir.Delete(recursive: true); - - Assert.IsFalse(fs.File.Exists(workingDir.FullName)); - } - - [Test] - public void CopyTo_Overwrite_DoesNotOverwriteSingleFileWhenNotSet() + public void CopyTo_Overwrite_OverwritesWhenSet() { //arrange var fs = new FileSystem(); @@ -474,10 +421,10 @@ public void CopyTo_Overwrite_DoesNotOverwriteSingleFileWhenNotSet() Assert.AreEqual(fs.File.ReadAllLines(destFile.FullName), destFileContent); //act - Assert.That(() => source.CopyTo(dest, overwrite: false), Throws.Exception.TypeOf().And.Message.Contains(destFile.FullName)); + source.CopyTo(dest, overwrite: true); //assert - Assert.AreEqual(fs.File.ReadAllLines(destFile.FullName), destFileContent); + Assert.AreEqual(fs.File.ReadAllLines(destFile.FullName), sourceFileContent); //cleanup workingDir.Delete(recursive: true); @@ -486,7 +433,7 @@ public void CopyTo_Overwrite_DoesNotOverwriteSingleFileWhenNotSet() } [Test] - public void CopyTo_Overwrite_DoesNotOverwriteMultipleFilesWhenNotSet() + public void CopyTo_Overwrite_DoesNotOverwritesWhenNotSet() { //arrange var fs = new FileSystem(); @@ -501,13 +448,10 @@ public void CopyTo_Overwrite_DoesNotOverwriteMultipleFilesWhenNotSet() //create files var sourceFile = fs.FileInfo.New(fs.Path.Combine(source.FullName, "file.txt")); - var secondSourceFile = fs.FileInfo.New(fs.Path.Combine(source.FullName, "another.txt")); // This will show up alphabetically first var destFile = fs.FileInfo.New(fs.Path.Combine(dest.FullName, "file.txt")); - var secondDestFile = fs.FileInfo.New(fs.Path.Combine(dest.FullName, "another.txt")); var sourceFileContent = new[] { nameof(sourceFile) }; sourceFile.WriteLines(sourceFileContent); - secondSourceFile.WriteLines(sourceFileContent); var destFileContent = new[] { nameof(destFile) }; destFile.WriteLines(destFileContent); @@ -515,19 +459,15 @@ public void CopyTo_Overwrite_DoesNotOverwriteMultipleFilesWhenNotSet() Assert.IsTrue(fs.Directory.Exists(source.FullName)); Assert.IsTrue(fs.File.Exists(sourceFile.FullName)); Assert.AreEqual(fs.File.ReadAllLines(sourceFile.FullName), sourceFileContent); - Assert.IsTrue(fs.File.Exists(secondSourceFile.FullName)); - Assert.AreEqual(fs.File.ReadAllLines(secondSourceFile.FullName), sourceFileContent); Assert.IsTrue(fs.Directory.Exists(dest.FullName)); Assert.IsTrue(fs.File.Exists(destFile.FullName)); Assert.AreEqual(fs.File.ReadAllLines(destFile.FullName), destFileContent); - Assert.IsFalse(fs.File.Exists(secondDestFile.FullName)); //act Assert.That(() => source.CopyTo(dest, overwrite: false), Throws.Exception.TypeOf().And.Message.Contains(destFile.FullName)); //assert Assert.AreEqual(fs.File.ReadAllLines(destFile.FullName), destFileContent); - Assert.IsFalse(fs.File.Exists(secondDestFile.FullName)); //cleanup workingDir.Delete(recursive: true);