FilterExistingFiles no longer converts paths to all lower case

pull/6/head
Mark McDowall 11 years ago
parent e7b329a618
commit 0d6b9969d2

@ -2,6 +2,7 @@
using System.Collections.Generic;
using System.Linq;
using System.Text;
using NzbDrone.Common.EnvironmentInfo;
namespace NzbDrone.Common
{
@ -13,8 +14,13 @@ namespace NzbDrone.Common
}
public int GetHashCode(string obj)
{
if (OsInfo.IsLinux)
{
return obj.CleanFilePath().GetHashCode();
}
return obj.CleanFilePath().ToLower().GetHashCode();
}
}
}

@ -81,12 +81,11 @@ namespace NzbDrone.Core.Test.MediaFileTests
Subject.FilterExistingFiles(files, 10).Should().NotContain("c:\\file2.avi".AsOsAgnostic());
}
[Test]
public void filter_should_return_none_existing_files_ignoring_case()
{
WindowsOnly();
var files = new List<string>()
{
"c:\\file1.avi".AsOsAgnostic(),
@ -105,5 +104,44 @@ namespace NzbDrone.Core.Test.MediaFileTests
Subject.FilterExistingFiles(files, 10).Should().HaveCount(2);
Subject.FilterExistingFiles(files, 10).Should().NotContain("c:\\file2.avi".AsOsAgnostic());
}
[Test]
public void filter_should_return_none_existing_files_not_ignoring_case()
{
LinuxOnly();
var files = new List<string>()
{
"c:\\file1.avi".AsOsAgnostic(),
"c:\\FILE2.avi".AsOsAgnostic(),
"c:\\file3.avi".AsOsAgnostic()
};
Mocker.GetMock<IMediaFileRepository>()
.Setup(c => c.GetFilesBySeries(It.IsAny<int>()))
.Returns(new List<EpisodeFile>
{
new EpisodeFile{Path = "c:\\file2.avi".AsOsAgnostic()}
});
Subject.FilterExistingFiles(files, 10).Should().HaveCount(3);
}
[Test]
public void filter_should_not_change_casing()
{
var files = new List<string>()
{
"c:\\FILE1.avi".AsOsAgnostic()
};
Mocker.GetMock<IMediaFileRepository>()
.Setup(c => c.GetFilesBySeries(It.IsAny<int>()))
.Returns(new List<EpisodeFile>());
Subject.FilterExistingFiles(files, 10).Should().HaveCount(1);
Subject.FilterExistingFiles(files, 10).Should().NotContain(files.First().ToLower());
Subject.FilterExistingFiles(files, 10).Should().Contain(files.First());
}
}
}

@ -76,11 +76,11 @@ namespace NzbDrone.Core.MediaFiles
public List<string> FilterExistingFiles(List<string> files, int seriesId)
{
var seriesFiles = GetFilesBySeries(seriesId).Select(f => f.Path.CleanFilePath().ToLower()).ToList();
var seriesFiles = GetFilesBySeries(seriesId).Select(f => f.Path.CleanFilePath()).ToList();
if (!seriesFiles.Any()) return files;
return files.Select(f => f.CleanFilePath().ToLower()).Except(seriesFiles).ToList();
return files.Select(f => f.CleanFilePath()).Except(seriesFiles, new PathEqualityComparer()).ToList();
}
public EpisodeFile Get(int id)

Loading…
Cancel
Save