Browse Source

Merge pull request #1992 from Bond-009/namingtests

Fix naming tests

(cherry picked from commit 78e0afae2fba48212dab2986818b5156868592fb)
Signed-off-by: Joshua Boniface <joshua@boniface.me>
Joshua M. Boniface 5 năm trước cách đây
mục cha
commit
2de763eef9

+ 12 - 3
Emby.Naming/Common/NamingOptions.cs

@@ -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]))?)([^\\\\/]*)$")
                 {
                     SupportsAbsoluteEpisodeNumbers = true
@@ -328,9 +336,10 @@ namespace Emby.Naming.Common
 
                 // *** End Kodi Standard Naming
 
-                // [bar] Foo - 1 [baz]
-                new EpisodeExpression(@".*?(\[.*?\])+.*?(?<seriesname>(\w+\s)+?)[-\s_]+(?<epnumber>\d+).*$"){
-                    IsNamed=false,
+                // [bar] Foo - 1 [baz]
+                new EpisodeExpression(@".*?(\[.*?\])+.*?(?<seriesname>(\w+\s*?)+?)[-\s_]+(?<epnumber>\d+).*$")
+                {
+                    IsNamed = true
                 },
                 new EpisodeExpression(@".*(\\|\/)[sS]?(?<seasonnumber>\d+)[xX](?<epnumber>\d+)[^\\\/]*$")
                 {

+ 4 - 3
Emby.Naming/Emby.Naming.csproj

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

+ 1 - 1
tests/Jellyfin.Common.Tests/Jellyfin.Common.Tests.csproj

@@ -6,7 +6,7 @@
   </PropertyGroup>
 
   <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.runner.visualstudio" Version="2.4.1" />
     <PackageReference Include="coverlet.collector" Version="1.1.0" />

+ 14 - 13
tests/Jellyfin.Naming.Tests/EpisodePathParserTest.cs

@@ -1,8 +1,9 @@
-namespace Emby.Naming.TV
-{
-    using Emby.Naming.Common;
-    using Xunit;
+using Emby.Naming.Common;
+using Emby.Naming.TV;
+using Xunit;
 
+namespace Jellyfin.Naming.Tests
+{
     public class EpisodePathParserTest
     {
         [Theory]
@@ -21,8 +22,8 @@ namespace Emby.Naming.TV
             Assert.Equal(season, res.SeasonNumber);
             Assert.Equal(episode, res.EpisodeNumber);
 
-            //testing other paths delimeter
-            var res2 = p.Parse(path.Replace("/", "\\"), false);
+            // testing other paths delimeter
+            var res2 = p.Parse(path.Replace('/', '\\'), false);
             Assert.True(res2.Success);
             Assert.Equal(name, res2.SeriesName);
             Assert.Equal(season, res2.SeasonNumber);
@@ -31,24 +32,24 @@ namespace Emby.Naming.TV
 
         [Theory]
         [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)
         {
             NamingOptions o = new NamingOptions();
             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.Equal(name, res.SeriesName);
-            Assert.True(res.SeasonNumber == null);
+            Assert.Null(res.SeasonNumber);
             Assert.Equal(episode, res.EpisodeNumber);
 
-            //testing other paths delimeter
-            var res2 = p.Parse(path.Replace("/", "\\"), false, null, null, true);
+            // testing other paths delimeter
+            var res2 = p.Parse(path.Replace('/', '\\'), false, fillExtendedInfo: false);
             Assert.True(res2.Success);
             Assert.Equal(name, res2.SeriesName);
-            Assert.True(res2.SeasonNumber == null);
+            Assert.Null(res2.SeasonNumber);
             Assert.Equal(episode, res2.EpisodeNumber);
         }
     }
-}
+}

+ 4 - 5
tests/Jellyfin.Naming.Tests/Jellyfin.Naming.Tests.csproj

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