Merge pull request #1992 from Bond-009/namingtests

Fix naming tests

(cherry picked from commit 78e0afae2fba48212dab2986818b5156868592fb)
Signed-off-by: Joshua Boniface <joshua@boniface.me>
This commit is contained in:
Joshua M. Boniface 2019-11-17 13:55:27 -05:00 committed by Joshua Boniface
parent 46ab046c34
commit 2de763eef9
5 changed files with 35 additions and 25 deletions

View File

@ -311,6 +311,14 @@ namespace Emby.Naming.Common
} }
}, },
// This isn't a Kodi naming rule, but the expression below causes false positives,
// so we make sure this one gets tested first.
// "Foo Bar 889"
new EpisodeExpression(@".*[\\\/](?![Ee]pisode)(?<seriesname>(\w+\s*?)*)\s(?<epnumber>\d{1,3})(-(?<endingepnumber>\d{2,3}))*[^\\\/]*$")
{
IsNamed = true
},
new EpisodeExpression("[\\\\/\\._ \\[\\(-]([0-9]+)x([0-9]+(?:(?:[a-i]|\\.[1-9])(?![0-9]))?)([^\\\\/]*)$") new EpisodeExpression("[\\\\/\\._ \\[\\(-]([0-9]+)x([0-9]+(?:(?:[a-i]|\\.[1-9])(?![0-9]))?)([^\\\\/]*)$")
{ {
SupportsAbsoluteEpisodeNumbers = true SupportsAbsoluteEpisodeNumbers = true
@ -328,9 +336,10 @@ namespace Emby.Naming.Common
// *** End Kodi Standard Naming // *** End Kodi Standard Naming
                // [bar] Foo - 1 [baz]                 // [bar] Foo - 1 [baz]
                new EpisodeExpression(@".*?(\[.*?\])+.*?(?<seriesname>(\w+\s)+?)[-\s_]+(?<epnumber>\d+).*$"){ new EpisodeExpression(@".*?(\[.*?\])+.*?(?<seriesname>(\w+\s*?)+?)[-\s_]+(?<epnumber>\d+).*$")
IsNamed=false, {
IsNamed = true
}, },
new EpisodeExpression(@".*(\\|\/)[sS]?(?<seasonnumber>\d+)[xX](?<epnumber>\d+)[^\\\/]*$") new EpisodeExpression(@".*(\\|\/)[sS]?(?<seasonnumber>\d+)[xX](?<epnumber>\d+)[^\\\/]*$")
{ {

View File

@ -23,9 +23,10 @@
<!-- Code analysers--> <!-- Code analysers-->
<ItemGroup Condition=" '$(Configuration)' == 'Debug' "> <ItemGroup Condition=" '$(Configuration)' == 'Debug' ">
<PackageReference Include="Microsoft.CodeAnalysis.FxCopAnalyzers" Version="2.9.4" /> <PackageReference Include="Microsoft.CodeAnalysis.FxCopAnalyzers" Version="2.9.4" PrivateAssets="All" />
<PackageReference Include="StyleCop.Analyzers" Version="1.1.118" /> <PackageReference Include="SerilogAnalyzer" Version="0.15.0" PrivateAssets="All" />
<PackageReference Include="SerilogAnalyzer" Version="0.15.0" /> <PackageReference Include="StyleCop.Analyzers" Version="1.1.118" PrivateAssets="All" />
<PackageReference Include="SmartAnalyzers.MultithreadingAnalyzer" Version="1.1.31" PrivateAssets="All" />
</ItemGroup> </ItemGroup>
<PropertyGroup Condition=" '$(Configuration)' == 'Debug' "> <PropertyGroup Condition=" '$(Configuration)' == 'Debug' ">

View File

@ -6,7 +6,7 @@
</PropertyGroup> </PropertyGroup>
<ItemGroup> <ItemGroup>
<PackageReference Include="Microsoft.NET.Test.Sdk" Version="16.2.0" /> <PackageReference Include="Microsoft.NET.Test.Sdk" Version="16.4.0" />
<PackageReference Include="xunit" Version="2.4.1" /> <PackageReference Include="xunit" Version="2.4.1" />
<PackageReference Include="xunit.runner.visualstudio" Version="2.4.1" /> <PackageReference Include="xunit.runner.visualstudio" Version="2.4.1" />
<PackageReference Include="coverlet.collector" Version="1.1.0" /> <PackageReference Include="coverlet.collector" Version="1.1.0" />

View File

@ -1,8 +1,9 @@
namespace Emby.Naming.TV using Emby.Naming.Common;
{ using Emby.Naming.TV;
using Emby.Naming.Common; using Xunit;
using Xunit;
namespace Jellyfin.Naming.Tests
{
public class EpisodePathParserTest public class EpisodePathParserTest
{ {
[Theory] [Theory]
@ -21,8 +22,8 @@ namespace Emby.Naming.TV
Assert.Equal(season, res.SeasonNumber); Assert.Equal(season, res.SeasonNumber);
Assert.Equal(episode, res.EpisodeNumber); Assert.Equal(episode, res.EpisodeNumber);
//testing other paths delimeter // testing other paths delimeter
var res2 = p.Parse(path.Replace("/", "\\"), false); var res2 = p.Parse(path.Replace('/', '\\'), false);
Assert.True(res2.Success); Assert.True(res2.Success);
Assert.Equal(name, res2.SeriesName); Assert.Equal(name, res2.SeriesName);
Assert.Equal(season, res2.SeasonNumber); Assert.Equal(season, res2.SeasonNumber);
@ -31,24 +32,24 @@ namespace Emby.Naming.TV
[Theory] [Theory]
[InlineData("/media/Foo/Foo 889", "Foo", 889)] [InlineData("/media/Foo/Foo 889", "Foo", 889)]
[InlineData("/media/Foo/[Bar] Foo Baz - 11 [1080p]", "Foo Baz", 11)] [InlineData("/media/Foo/[Bar] Foo Baz - 11 [1080p]", "Foo Baz", 11)]
public void ParseEpisodeWithoutSeason(string path, string name, int episode) public void ParseEpisodeWithoutSeason(string path, string name, int episode)
{ {
NamingOptions o = new NamingOptions(); NamingOptions o = new NamingOptions();
EpisodePathParser p = new EpisodePathParser(o); EpisodePathParser p = new EpisodePathParser(o);
var res = p.Parse(path, true, null, null, true); var res = p.Parse(path, true, fillExtendedInfo: true);
Assert.True(res.Success); Assert.True(res.Success);
Assert.Equal(name, res.SeriesName); Assert.Equal(name, res.SeriesName);
Assert.True(res.SeasonNumber == null); Assert.Null(res.SeasonNumber);
Assert.Equal(episode, res.EpisodeNumber); Assert.Equal(episode, res.EpisodeNumber);
//testing other paths delimeter // testing other paths delimeter
var res2 = p.Parse(path.Replace("/", "\\"), false, null, null, true); var res2 = p.Parse(path.Replace('/', '\\'), false, fillExtendedInfo: false);
Assert.True(res2.Success); Assert.True(res2.Success);
Assert.Equal(name, res2.SeriesName); Assert.Equal(name, res2.SeriesName);
Assert.True(res2.SeasonNumber == null); Assert.Null(res2.SeasonNumber);
Assert.Equal(episode, res2.EpisodeNumber); Assert.Equal(episode, res2.EpisodeNumber);
} }
} }
} }

View File

@ -2,15 +2,14 @@
<PropertyGroup> <PropertyGroup>
<TargetFramework>netcoreapp3.0</TargetFramework> <TargetFramework>netcoreapp3.0</TargetFramework>
<IsPackable>false</IsPackable> <IsPackable>false</IsPackable>
</PropertyGroup> </PropertyGroup>
<ItemGroup> <ItemGroup>
<PackageReference Include="Microsoft.NET.Test.Sdk" Version="16.2.0" /> <PackageReference Include="Microsoft.NET.Test.Sdk" Version="16.4.0" />
<PackageReference Include="xunit" Version="2.4.0" /> <PackageReference Include="xunit" Version="2.4.1" />
<PackageReference Include="xunit.runner.visualstudio" Version="2.4.0" /> <PackageReference Include="xunit.runner.visualstudio" Version="2.4.1" />
<PackageReference Include="coverlet.collector" Version="1.0.1" /> <PackageReference Include="coverlet.collector" Version="1.1.0" />
</ItemGroup> </ItemGroup>
<ItemGroup> <ItemGroup>