Fixed: Renaming Episodes will never overwrite existing files.
This commit is contained in:
parent
125e69da6d
commit
e5e00fd346
|
@ -63,7 +63,7 @@ namespace NzbDrone.Common.Test.DiskProviderTests
|
|||
File.WriteAllText(source2, "SourceFile2");
|
||||
|
||||
Subject.MoveFile(source1, destination);
|
||||
Subject.MoveFile(source2, destination);
|
||||
Subject.MoveFile(source2, destination, true);
|
||||
|
||||
File.Exists(destination).Should().BeTrue();
|
||||
}
|
||||
|
@ -75,7 +75,7 @@ namespace NzbDrone.Common.Test.DiskProviderTests
|
|||
|
||||
File.WriteAllText(source, "SourceFile1");
|
||||
|
||||
Subject.MoveFile(source, source);
|
||||
Subject.MoveFile(source, source, true);
|
||||
|
||||
File.Exists(source).Should().BeTrue();
|
||||
ExceptionVerification.ExpectedWarns(1);
|
||||
|
@ -148,7 +148,7 @@ namespace NzbDrone.Common.Test.DiskProviderTests
|
|||
File.SetAttributes(source, FileAttributes.ReadOnly);
|
||||
File.SetAttributes(destination, FileAttributes.ReadOnly);
|
||||
|
||||
Subject.MoveFile(source, destination);
|
||||
Subject.MoveFile(source, destination, true);
|
||||
}
|
||||
|
||||
[Test]
|
||||
|
|
|
@ -220,7 +220,7 @@ namespace NzbDrone.Common.Disk
|
|||
}
|
||||
case TransferAction.Move:
|
||||
{
|
||||
MoveFile(sourceFile.FullName, destFile);
|
||||
MoveFile(sourceFile.FullName, destFile, true);
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
@ -251,7 +251,7 @@ namespace NzbDrone.Common.Disk
|
|||
File.Copy(source, destination, overwrite);
|
||||
}
|
||||
|
||||
public void MoveFile(string source, string destination)
|
||||
public void MoveFile(string source, string destination, bool overwrite = false)
|
||||
{
|
||||
Ensure.That(source, () => source).IsValidPath();
|
||||
Ensure.That(destination, () => destination).IsValidPath();
|
||||
|
@ -262,7 +262,7 @@ namespace NzbDrone.Common.Disk
|
|||
return;
|
||||
}
|
||||
|
||||
if (FileExists(destination))
|
||||
if (FileExists(destination) && overwrite)
|
||||
{
|
||||
DeleteFile(destination);
|
||||
}
|
||||
|
|
|
@ -29,7 +29,7 @@ namespace NzbDrone.Common.Disk
|
|||
void MoveFolder(string source, string destination);
|
||||
void DeleteFile(string path);
|
||||
void CopyFile(string source, string destination, bool overwrite = false);
|
||||
void MoveFile(string source, string destination);
|
||||
void MoveFile(string source, string destination, bool overwrite = false);
|
||||
void DeleteFolder(string path, bool recursive);
|
||||
string ReadAllText(string filePath);
|
||||
void WriteAllText(string filename, string contents);
|
||||
|
|
|
@ -47,7 +47,23 @@ namespace NzbDrone.Core.Test.ProviderTests.RecycleBinProviderTests
|
|||
|
||||
Mocker.Resolve<RecycleBinProvider>().DeleteFile(path);
|
||||
|
||||
Mocker.GetMock<IDiskProvider>().Verify(v => v.MoveFile(path, @"C:\Test\Recycle Bin\S01E01.avi".AsOsAgnostic()), Times.Once());
|
||||
Mocker.GetMock<IDiskProvider>().Verify(v => v.MoveFile(path, @"C:\Test\Recycle Bin\S01E01.avi".AsOsAgnostic(), true), Times.Once());
|
||||
}
|
||||
|
||||
[Test]
|
||||
public void should_use_alternative_name_if_already_exists()
|
||||
{
|
||||
WithRecycleBin();
|
||||
|
||||
var path = @"C:\Test\TV\30 Rock\S01E01.avi".AsOsAgnostic();
|
||||
|
||||
Mocker.GetMock<IDiskProvider>()
|
||||
.Setup(v => v.FileExists(@"C:\Test\Recycle Bin\S01E01.avi".AsOsAgnostic()))
|
||||
.Returns(true);
|
||||
|
||||
Mocker.Resolve<RecycleBinProvider>().DeleteFile(path);
|
||||
|
||||
Mocker.GetMock<IDiskProvider>().Verify(v => v.MoveFile(path, @"C:\Test\Recycle Bin\S01E01_2.avi".AsOsAgnostic(), true), Times.Once());
|
||||
}
|
||||
|
||||
[Test]
|
||||
|
|
|
@ -84,10 +84,25 @@ namespace NzbDrone.Core.MediaFiles
|
|||
|
||||
else
|
||||
{
|
||||
var destination = Path.Combine(recyclingBin, new FileInfo(path).Name);
|
||||
var fileInfo = new FileInfo(path);
|
||||
var destination = Path.Combine(recyclingBin, fileInfo.Name);
|
||||
|
||||
var index = 1;
|
||||
while (_diskProvider.FileExists(destination))
|
||||
{
|
||||
index++;
|
||||
if (fileInfo.Extension.IsNullOrWhiteSpace())
|
||||
{
|
||||
destination = Path.Combine(recyclingBin, fileInfo.Name + "_" + index);
|
||||
}
|
||||
else
|
||||
{
|
||||
destination = Path.Combine(recyclingBin, Path.GetFileNameWithoutExtension(fileInfo.Name) + "_" + index + fileInfo.Extension);
|
||||
}
|
||||
}
|
||||
|
||||
logger.Debug("Moving '{0}' to '{1}'", path, destination);
|
||||
_diskProvider.MoveFile(path, destination);
|
||||
_diskProvider.MoveFile(path, destination, true);
|
||||
_diskProvider.FileSetLastWriteTimeUtc(destination, DateTime.UtcNow);
|
||||
logger.Debug("File has been moved to the recycling bin: {0}", destination);
|
||||
}
|
||||
|
|
Loading…
Reference in New Issue