diff --git a/BasicNodes/File/Renamer.cs b/BasicNodes/File/Renamer.cs index 22881ad7..bcaba8b3 100644 --- a/BasicNodes/File/Renamer.cs +++ b/BasicNodes/File/Renamer.cs @@ -63,7 +63,7 @@ public class Renamer : Node // remove empty [], (), {} newFile = newFile.Replace("()", "").Replace("{}", "").Replace("[]", ""); // remove double space that may have been introduced by empty [], () removals - while (newFile.IndexOf(" ") >= 0) + while (newFile.IndexOf(" ", StringComparison.Ordinal) >= 0) newFile = newFile.Replace(" ", " "); newFile = Regex.Replace(newFile, @"\s(\.[\w\d]+)$", "$1"); newFile = newFile.Replace(" \\", "\\"); diff --git a/BasicNodes/Tests/MoveTests.cs b/BasicNodes/Tests/MoveTests.cs index 9fa9c5e3..9f19fdd0 100644 --- a/BasicNodes/Tests/MoveTests.cs +++ b/BasicNodes/Tests/MoveTests.cs @@ -15,22 +15,32 @@ public class MoveTests : TestBase [TestMethod] public void MoveTests_Variable_Filename() { - var args = new NodeParameters(@"/home/user/test/tv4a-starwarsrebels.s01e15-1080p.mkv", Logger, false, string.Empty, new LocalFileService()); - + string fileName = Guid.NewGuid().ToString(); + var tempFile = Path.Combine(Path.GetTempPath(),fileName+ ".mkv"); + System.IO.File.WriteAllText(tempFile, "this is a temp file "); + var args = new NodeParameters(tempFile, Logger, + false, string.Empty, new LocalFileService()); + args.InitFile(tempFile); + string dest = MoveFile.GetDestinationPath(args, @"D:\test", "{file.Name}"); - Assert.AreEqual(@"D:/test/tv4a-starwarsrebels.s01e15-1080p.mkv", dest); + Assert.AreEqual($"D:/test/{fileName}.mkv", dest); } [TestMethod] public void MoveTests_Variable_FilenameExt() { - var args = new NodeParameters(@"/home/user/test/tv4a-starwarsrebels.s01e15-1080p.mkv", Logger, false, string.Empty, new LocalFileService()); - + string fileName = Guid.NewGuid().ToString(); + var tempFile = Path.Combine(Path.GetTempPath(),fileName+ ".mkv"); + System.IO.File.WriteAllText(tempFile, "this is a temp file "); + var args = new NodeParameters(tempFile, Logger, + false, string.Empty, new LocalFileService()); + args.InitFile(tempFile); + // ensure we dont double up the extension after FF-154 string dest = MoveFile.GetDestinationPath(args, @"D:\test", "{file.Name}{file.Extension}"); - Assert.AreEqual(@"D:/test/tv4a-starwarsrebels.s01e15-1080p.mkv", dest); + Assert.AreEqual($"D:/test/{fileName}.mkv", dest); } [TestMethod] @@ -51,50 +61,67 @@ public class MoveTests : TestBase [TestMethod] public void MoveTests_Variable_Ext() { - var args = new NodeParameters(@"/home/user/test/tv4a-starwarsrebels.s01e15-1080p.mkv", Logger, false, string.Empty, new LocalFileService()); + string fileName = Guid.NewGuid().ToString(); + var tempFile = Path.Combine(Path.GetTempPath(),fileName+ ".mkv"); + System.IO.File.WriteAllText(tempFile, "this is a temp file "); + var args = new NodeParameters(tempFile, Logger, + false, string.Empty, new LocalFileService()); + args.InitFile(tempFile); // ensure we dont double up the extension after FF-154 string dest = MoveFile.GetDestinationPath(args, @"D:\test", "{file.Name}{ext}"); - Assert.AreEqual(@"D:/test/tv4a-starwarsrebels.s01e15-1080p.mkv", dest); + Assert.AreEqual($"D:/test/{fileName}.mkv", dest); } [TestMethod] public void MoveTests_Variable_Original_Filename() { - var args = new NodeParameters(@"/home/user/test/tv4a-starwarsrebels.s01e15-1080p.mkv", Logger, false, string.Empty, new LocalFileService()); - + string fileName = Guid.NewGuid().ToString(); + var tempFile = Path.Combine(Path.GetTempPath(),fileName+ ".mkv"); + System.IO.File.WriteAllText(tempFile, "this is a temp file "); + var args = new NodeParameters(tempFile, Logger, + false, string.Empty, new LocalFileService()); + args.InitFile(tempFile); + string dest = MoveFile.GetDestinationPath(args, @"D:\test", "{file.Orig.FileName}"); - Assert.AreEqual(@"D:/test/tv4a-starwarsrebels.s01e15-1080p.mkv", dest); + Assert.AreEqual($@"D:/test/{fileName}.mkv", dest); } [TestMethod] public void MoveTests_Variable_Original_FilenameExt() { - var args = new NodeParameters(@"/home/user/test/tv4a-starwarsrebels.s01e15-1080p.mkv", Logger, false, string.Empty, new LocalFileService()); - + string fileName = Guid.NewGuid().ToString(); + var tempFile = Path.Combine(Path.GetTempPath(),fileName+ ".mkv"); + System.IO.File.WriteAllText(tempFile, "this is a temp file "); + var args = new NodeParameters(tempFile, Logger, + false, string.Empty, new LocalFileService()); + args.InitFile(tempFile); // ensure we dont double up the extension after FF-154 string dest = MoveFile.GetDestinationPath(args, @"D:\test", "{file.Orig.FileName}{file.Orig.Extension}"); - Assert.AreEqual(@"D:/test/tv4a-starwarsrebels.s01e15-1080p.mkv", dest); + Assert.AreEqual($@"D:/test/{fileName}.mkv", dest); } [TestMethod] public void MoveTests_Variable_Original_NoExtension() { + string fileName = Guid.NewGuid().ToString(); + var tempFile = Path.Combine(Path.GetTempPath(),fileName+ ".mkv.mkv"); + System.IO.File.WriteAllText(tempFile, "this is a temp file "); + var args = new NodeParameters(tempFile, Logger, + false, string.Empty, new LocalFileService()); + args.InitFile(tempFile); - var args = new NodeParameters(@"/home/user/test/tv4a-starwarsrebels.s01e15-1080p.mkv", Logger, false, string.Empty, new LocalFileService()); - // ensure we dont double up the extension after FF-154 string dest = MoveFile.GetDestinationPath(args, @"D:\test", "{file.Orig.FileNameNoExtension}"); - Assert.AreEqual(@"D:/test/tv4a-starwarsrebels.mkv", dest); + Assert.AreEqual($@"D:/test/{fileName}.mkv", dest); } [TestMethod] public void MoveTests_MoveFolder() { - var args = new NodeParameters(@"\\tower\downloads\downloaded\tv\The.Walking.Dead.Dead.City.S01E04\some-file.mkv", Logger, false, string.Empty, new LocalFileService()); args.RelativeFile = @"The.Walking.Dead.Dead.City.S01E04\some-file.mkv"; @@ -110,11 +137,22 @@ public class MoveTests : TestBase [TestMethod] public void MoveTests_AdditionalFiles() { - var args = new NodeParameters(@"/home/john/Videos/move-me/dir/basic.mkv", Logger, false, string.Empty, new LocalFileService()); + var tempDir = Path.Combine(Path.GetTempPath(), Guid.NewGuid().ToString()); + Directory.CreateDirectory(tempDir); + + var tempDir2 = Path.Combine(Path.GetTempPath(), Guid.NewGuid().ToString()); + Directory.CreateDirectory(tempDir2); + + var tempFilePrefix = Path.Combine(tempDir, Guid.NewGuid().ToString()); + var tempFile = tempFilePrefix + ".mkv"; + System.IO.File.WriteAllText(tempFile, "test file"); + var tempFileSrt = tempFilePrefix + ".srt"; + System.IO.File.WriteAllText(tempFileSrt, "srt file"); + var args = new NodeParameters(tempFile, Logger, false, string.Empty, new LocalFileService()); var ele = new MoveFile(); ele.AdditionalFiles = new[] { "*.srt" }; - ele.DestinationPath = "/home/john/Videos/converted"; + ele.DestinationPath = tempDir2; var result = ele.Execute(args); Assert.AreEqual(1, result); } diff --git a/BasicNodes/Tests/RenamerTests.cs b/BasicNodes/Tests/RenamerTests.cs index 810b703d..c7d1ce9a 100644 --- a/BasicNodes/Tests/RenamerTests.cs +++ b/BasicNodes/Tests/RenamerTests.cs @@ -1,160 +1,158 @@ #if(DEBUG) using System.IO; +using FileFlows.BasicNodes.File; +using Microsoft.VisualStudio.TestTools.UnitTesting; -namespace BasicNodes.Tests +namespace BasicNodes.Tests; + +[TestClass] +public class RenamerTests : TestBase { - using FileFlows.BasicNodes.File; - using Microsoft.VisualStudio.TestTools.UnitTesting; - - [TestClass] - public class RenamerTests + [TestMethod] + public void Renamer_Extension() { - [TestMethod] - public void Renamer_Extension() + + var args = new FileFlows.Plugin.NodeParameters(@"c:\test\testfile.mkv", Logger, false, string.Empty, new LocalFileService()); + args.Variables = new Dictionary { - var logger = new TestLogger(); - var args = new FileFlows.Plugin.NodeParameters(@"c:\test\testfile.mkv", logger, false, string.Empty, null); - args.Variables = new Dictionary - { - { "movie.Title", "Ghostbusters" }, - { "movie.Year", 1984 }, - { "viResolution", "1080P" } - }; - args.SetWorkingFile($@"c:\temp\{Guid.NewGuid()}.mkv", dontDelete: true); + { "movie.Title", "Ghostbusters" }, + { "movie.Year", 1984 }, + { "viResolution", "1080P" } + }; + args.SetWorkingFile($@"c:\temp\{Guid.NewGuid()}.mkv", dontDelete: true); - Renamer node = new Renamer(); - node.Pattern = @"{movie.Title} ({movie.Year})\{movie.Title} [{viResolution}]{ext}"; - node.LogOnly = true; + Renamer node = new Renamer(); + node.Pattern = @"{movie.Title} ({movie.Year})\{movie.Title} [{viResolution}]{ext}"; + node.LogOnly = true; - var result = node.Execute(args); - Assert.AreEqual(1, result); + var result = node.Execute(args); + Assert.AreEqual(1, result); - string expectedShort = $@"c:\temp\Ghostbusters (1984){Path.DirectorySeparatorChar}Ghostbusters [1080P].mkv"; - Assert.IsTrue(logger.Contains($"Renaming file to: " + expectedShort)); - } - [TestMethod] - public void Renamer_Extension_DoubleDot() + string expectedShort = $@"c:\temp\Ghostbusters (1984){Path.DirectorySeparatorChar}Ghostbusters [1080P].mkv"; + Assert.IsTrue(Logger.Contains($"Renaming file to: " + expectedShort)); + } + [TestMethod] + public void Renamer_Extension_DoubleDot() + { + + var args = new FileFlows.Plugin.NodeParameters(@"c:\test\testfile.mkv", Logger, false, string.Empty, new LocalFileService()); + args.Variables = new Dictionary { - var logger = new TestLogger(); - var args = new FileFlows.Plugin.NodeParameters(@"c:\test\testfile.mkv", logger, false, string.Empty, null); - args.Variables = new Dictionary - { - { "movie.Title", "Ghostbusters" }, - { "movie.Year", 1984 }, - { "viResolution", "1080P" } - }; - args.SetWorkingFile($@"c:\temp\{Guid.NewGuid()}.mkv", dontDelete: true); + { "movie.Title", "Ghostbusters" }, + { "movie.Year", 1984 }, + { "viResolution", "1080P" } + }; + args.SetWorkingFile($@"c:\temp\{Guid.NewGuid()}.mkv", dontDelete: true); - Renamer node = new Renamer(); - node.Pattern = @"{movie.Title} ({movie.Year})\{movie.Title} [{viResolution}].{ext}"; - node.LogOnly = true; + Renamer node = new Renamer(); + node.Pattern = @"{movie.Title} ({movie.Year})\{movie.Title} [{viResolution}].{ext}"; + node.LogOnly = true; - var result = node.Execute(args); - Assert.AreEqual(1, result); + var result = node.Execute(args); + Assert.AreEqual(1, result); - string expectedShort = $@"c:\temp\Ghostbusters (1984){Path.DirectorySeparatorChar}Ghostbusters [1080P].mkv"; - Assert.IsTrue(logger.Contains($"Renaming file to: " + expectedShort)); - } + string expectedShort = $@"c:\temp\Ghostbusters (1984){Path.DirectorySeparatorChar}Ghostbusters [1080P].mkv"; + Assert.IsTrue(Logger.Contains($"Renaming file to: " + expectedShort)); + } - [TestMethod] - public void Renamer_Empty_SquareBrackets() + [TestMethod] + public void Renamer_Empty_SquareBrackets() + { + + var args = new FileFlows.Plugin.NodeParameters(@"c:\test\testfile.mkv", Logger, false, string.Empty, new LocalFileService()); + args.Variables = new Dictionary { - var logger = new TestLogger(); - var args = new FileFlows.Plugin.NodeParameters(@"c:\test\testfile.mkv", logger, false, string.Empty, null); - args.Variables = new Dictionary - { - { "movie.Title", "Ghostbusters" }, - { "movie.Year", 1984 } - }; - args.SetWorkingFile($@"c:\temp\{Guid.NewGuid()}.mkv", dontDelete: true); + { "movie.Title", "Ghostbusters" }, + { "movie.Year", 1984 } + }; + args.SetWorkingFile($@"c:\temp\{Guid.NewGuid()}.mkv", dontDelete: true); - Renamer node = new Renamer(); - node.Pattern = @"{movie.Title} ({movie.Year})\{movie.Title} [{viResolution}] {movie.Year}.{ext}"; - node.LogOnly = true; + Renamer node = new Renamer(); + node.Pattern = @"{movie.Title} ({movie.Year})\{movie.Title} [{viResolution}] {movie.Year}.{ext}"; + node.LogOnly = true; - var result = node.Execute(args); - Assert.AreEqual(1, result); + var result = node.Execute(args); + Assert.AreEqual(1, result); - string expectedShort = $@"c:\temp\Ghostbusters (1984){Path.DirectorySeparatorChar}Ghostbusters 1984.mkv"; - Assert.IsTrue(logger.Contains($"Renaming file to: " + expectedShort)); - } + string expectedShort = $@"c:\temp\Ghostbusters (1984){Path.DirectorySeparatorChar}Ghostbusters 1984.mkv"; + Assert.IsTrue(Logger.Contains($"Renaming file to: " + expectedShort)); + } - [TestMethod] - public void Renamer_Empty_RoundBrackets() + [TestMethod] + public void Renamer_Empty_RoundBrackets() + { + var args = new FileFlows.Plugin.NodeParameters(@"c:\test\testfile.mkv", Logger, false, string.Empty, new LocalFileService()); + args.Variables = new Dictionary { - var logger = new TestLogger(); - var args = new FileFlows.Plugin.NodeParameters(@"c:\test\testfile.mkv", logger, false, string.Empty, null); - args.Variables = new Dictionary - { - { "movie.Title", "Ghostbusters" }, - { "viResolution", "1080p" } - }; - args.SetWorkingFile($@"c:\temp\{Guid.NewGuid()}.mkv", dontDelete: true); + { "movie.Title", "Ghostbusters" }, + { "viResolution", "1080p" } + }; + args.SetWorkingFile($@"c:\temp\{Guid.NewGuid()}.mkv", dontDelete: true); - Renamer node = new Renamer(); - node.Pattern = @"{movie.Title} ({movie.Year})\{movie.Title} ({movie.Year}) {viResolution!}.{ext}"; - node.LogOnly = true; + Renamer node = new Renamer(); + node.Pattern = @"{movie.Title} ({movie.Year})\{movie.Title} ({movie.Year}) {viResolution!}.{ext}"; + node.LogOnly = true; - var result = node.Execute(args); - Assert.AreEqual(1, result); + var result = node.Execute(args); + Assert.AreEqual(1, result); - string expectedShort = $@"c:\temp\Ghostbusters{Path.DirectorySeparatorChar}Ghostbusters 1080P.mkv"; - Assert.IsTrue(logger.Contains($"Renaming file to: " + expectedShort)); - } - [TestMethod] - public void Renamer_Empty_SquareBrackets_Extension() + string expectedShort = $@"c:\temp\Ghostbusters{Path.DirectorySeparatorChar}Ghostbusters 1080P.mkv"; + Assert.IsTrue(Logger.Contains($"Renaming file to: " + expectedShort)); + } + [TestMethod] + public void Renamer_Empty_SquareBrackets_Extension() + { + + var args = new FileFlows.Plugin.NodeParameters(@"c:\test\testfile.mkv", Logger, false, string.Empty, new LocalFileService()); + args.Variables = new Dictionary { - var logger = new TestLogger(); - var args = new FileFlows.Plugin.NodeParameters(@"c:\test\testfile.mkv", logger, false, string.Empty, null); - args.Variables = new Dictionary - { - { "movie.Title", "Ghostbusters" }, - { "movie.Year", 1984 } - }; - args.SetWorkingFile($@"c:\temp\{Guid.NewGuid()}.mkv", dontDelete: true); + { "movie.Title", "Ghostbusters" }, + { "movie.Year", 1984 } + }; + args.SetWorkingFile($@"c:\temp\{Guid.NewGuid()}.mkv", dontDelete: true); - Renamer node = new Renamer(); - node.Pattern = @"{movie.Title} ({movie.Year})\{movie.Title} [{viResolution}].{ext}"; - node.LogOnly = true; + Renamer node = new Renamer(); + node.Pattern = @"{movie.Title} ({movie.Year})\{movie.Title} [{viResolution}].{ext}"; + node.LogOnly = true; - var result = node.Execute(args); - Assert.AreEqual(1, result); + var result = node.Execute(args); + Assert.AreEqual(1, result); - string expectedShort = $@"c:\temp\Ghostbusters (1984){Path.DirectorySeparatorChar}Ghostbusters.mkv"; - Assert.IsTrue(logger.Contains($"Renaming file to: " + expectedShort)); - } + string expectedShort = $@"c:\temp\Ghostbusters (1984){Path.DirectorySeparatorChar}Ghostbusters.mkv"; + Assert.IsTrue(Logger.Contains($"Renaming file to: " + expectedShort)); + } - [TestMethod] - public void Renamer_Colon() + [TestMethod] + public void Renamer_Colon() + { + var args = new FileFlows.Plugin.NodeParameters(@"c:\test\testfile.mkv", Logger, false, string.Empty, new LocalFileService()); + args.Variables = new Dictionary { - var logger = new TestLogger(); - var args = new FileFlows.Plugin.NodeParameters(@"c:\test\testfile.mkv", logger, false, string.Empty, null); - args.Variables = new Dictionary - { - { "movie.Title", "Batman Unlimited: Mech vs Mutants" }, - { "movie.Year", 2016 } - }; - args.SetWorkingFile($@"c:\temp\{Guid.NewGuid()}.mkv", dontDelete: true); + { "movie.Title", "Batman Unlimited: Mech vs Mutants" }, + { "movie.Year", 2016 }, + { "ext", "mkv" } + }; + args.SetWorkingFile($@"c:\temp\{Guid.NewGuid()}.mkv", dontDelete: true); - Renamer node = new Renamer(); - node.Pattern = @"{movie.Title} ({movie.Year})\{movie.Title}.{ext}"; - node.LogOnly = true; + Renamer node = new Renamer(); + node.Pattern = @"{movie.Title} ({movie.Year})\{movie.Title}.{ext}"; + node.LogOnly = true; - var result = node.Execute(args); - Assert.AreEqual(1, result); + var result = node.Execute(args); + Assert.AreEqual(1, result); - string expectedShort = $@"c:\temp\Batman Unlimited - Mech vs Mutants (2016){Path.DirectorySeparatorChar}Batman Unlimited - Mech vs Mutants.mkv"; - Assert.IsTrue(logger.Contains($"Renaming file to: " + expectedShort)); - } + string expectedShort = $@"c:\temp\Batman Unlimited - Mech vs Mutants (2016){Path.DirectorySeparatorChar}Batman Unlimited - Mech vs Mutants.mkv"; + Assert.IsTrue(Logger.Contains($"Renaming file to: " + expectedShort)); } } + #endif \ No newline at end of file diff --git a/FileFlows.Plugin.dll b/FileFlows.Plugin.dll index b8f493e5..8baf0f80 100644 Binary files a/FileFlows.Plugin.dll and b/FileFlows.Plugin.dll differ diff --git a/FileFlows.Plugin.pdb b/FileFlows.Plugin.pdb index 372a6662..a3df081c 100644 Binary files a/FileFlows.Plugin.pdb and b/FileFlows.Plugin.pdb differ