public void GetFiles_WordThenParentThenWordWithWildcardThenWord() { var filename = "readme.txt"; var pattern = "tests/../addin?/" + filename; var finder = new DirectoryFinder(this.fileSystem); var baseDir = this.GetFakeDirectory("tools", "metamorphosator"); var targetDir = this.GetFakeDirectory("tools", "metamorphosator", "addins"); baseDir.GetDirectories("tests", SIO.SearchOption.TopDirectoryOnly).Returns(new[] { this.GetFakeDirectory("tools", "metamorphosator", "tests") }); this.GetFakeDirectory("tools", "metamorphosator").GetDirectories("addin?", SIO.SearchOption.TopDirectoryOnly).Returns(new[] { targetDir }); targetDir.GetFiles(filename).Returns(new[] { this.GetFakeFile("tools", "metamorphosator", "addins", filename) }); var expected = new[] { this.GetFakeFile("tools", "metamorphosator", "addins", filename) }; var actual = finder.GetFiles(baseDir, pattern); CollectionAssert.AreEquivalent(expected, actual); targetDir.Received().GetFiles(filename); foreach (var dir in this.fakedDirectories.Values.Where(x => x != targetDir)) { dir.DidNotReceive().GetFiles(Arg.Any <string>()); } targetDir.Received().GetFiles(filename); targetDir.DidNotReceive().GetDirectories(Arg.Any <string>(), Arg.Any <SIO.SearchOption>()); GetFakeDirectory("tools", "frobuscator").DidNotReceive().GetDirectories(Arg.Any <string>(), Arg.Any <SIO.SearchOption>()); }
public void GetFiles_WordWithWildcard(string pattern) { var finder = new DirectoryFinder(this.fileSystem); var baseDir = this.GetFakeDirectory("tools", "frobuscator", "tests", "abc"); baseDir.GetFiles(pattern).Returns(new[] { this.GetFakeFile("tools", "frobuscator", "tests", "abc", "tests.abc.dll"), this.GetFakeFile("tools", "frobuscator", "tests", "abc", "tests.123.dll") }); var expected = new[] { this.GetFakeFile("tools", "frobuscator", "tests", "abc", "tests.abc.dll"), this.GetFakeFile("tools", "frobuscator", "tests", "abc", "tests.123.dll") }; var actual = finder.GetFiles(baseDir, pattern); CollectionAssert.AreEquivalent(expected, actual); baseDir.Received().GetFiles(pattern); baseDir.Parent.DidNotReceive().GetFiles(Arg.Any <string>()); }
public void GetFiles_CurrentDirThenAsterisk() { var pattern = "./*"; var finder = new DirectoryFinder(this.fileSystem); var baseDir = this.GetFakeDirectory("tools", "metamorphosator", "addins", "morph"); var expected = new[] { this.GetFakeFile("tools", "metamorphosator", "addins", "morph", "setup.ini"), this.GetFakeFile("tools", "metamorphosator", "addins", "morph", "code.cs") }; baseDir.GetFiles("*").Returns(expected); var actual = finder.GetFiles(baseDir, pattern); CollectionAssert.AreEquivalent(expected, actual); baseDir.Received().GetFiles("*"); baseDir.Parent.DidNotReceive().GetFiles(Arg.Any <string>()); baseDir.Parent.DidNotReceive().GetDirectories(Arg.Any <string>(), Arg.Any <SIO.SearchOption>()); }
/// <summary> /// Process a .addins type file. The file contains one entry per /// line. Each entry may be a directory to scan, an assembly /// path or a wildcard pattern used to find assemblies. Blank /// lines and comments started by # are ignored. /// </summary> private void ProcessAddinsFile(DirectoryInfo baseDir, string fileName, bool fromWildCard) { log.Info("Processing file " + fileName); using (var rdr = new StreamReader(fileName)) { while (!rdr.EndOfStream) { var line = rdr.ReadLine(); if (line == null) { break; } line = line.Split(new char[] { '#' })[0].Trim(); if (line == string.Empty) { continue; } if (Path.DirectorySeparatorChar == '\\') { line = line.Replace(Path.DirectorySeparatorChar, '/'); } bool isWild = fromWildCard || line.Contains("*"); if (line.EndsWith("/")) { foreach (var dir in DirectoryFinder.GetDirectories(baseDir, line)) { ProcessDirectory(dir, isWild); } } else { foreach (var file in DirectoryFinder.GetFiles(baseDir, line)) { ProcessCandidateAssembly(file.FullName, isWild); } } } } }
/// <summary> /// Process a .addins type file. The file contains one entry per /// line. Each entry may be a directory to scan, an assembly /// path or a wildcard pattern used to find assemblies. Blank /// lines and comments started by # are ignored. /// </summary> private void ProcessAddinsFile(DirectoryInfo baseDir, string fileName) { log.Info("Processing file " + fileName); using (var rdr = new StreamReader(fileName)) { while (!rdr.EndOfStream) { var line = rdr.ReadLine(); if (line == null) { break; } line = line.Split(new char[] { '#' })[0].Trim(); if (line == string.Empty) { continue; } if (Path.DirectorySeparatorChar == '\\') { line = line.Replace(Path.DirectorySeparatorChar, '/'); } if (line.EndsWith("/")) { foreach (var dir in DirectoryFinder.GetDirectories(baseDir, line)) { FindExtensionsInDirectory(dir); } } else { foreach (var file in DirectoryFinder.GetFiles(baseDir, line)) { FindExtensionsInAssembly(file.FullName, true); } } } } }
public void GetFiles_AsteriskThenWordWithWildcard(string pattern) { var filePattern = pattern.Split('/')[1]; var finder = new DirectoryFinder(this.fileSystem); var baseDir = this.GetFakeDirectory("tools", "frobuscator", "tests"); var abcDir = this.GetFakeDirectory("tools", "frobuscator", "tests", "abc"); var defDir = this.GetFakeDirectory("tools", "frobuscator", "tests", "def"); abcDir.GetFiles(filePattern).Returns(new[] { this.GetFakeFile("tools", "frobuscator", "tests", "abc", "tests.abc.dll"), this.GetFakeFile("tools", "frobuscator", "tests", "abc", "tests.123.dll") }); defDir.GetFiles(filePattern).Returns(new[] { this.GetFakeFile("tools", "frobuscator", "tests", "def", "tests.def.dll") }); var expected = new[] { this.GetFakeFile("tools", "frobuscator", "tests", "abc", "tests.abc.dll"), this.GetFakeFile("tools", "frobuscator", "tests", "abc", "tests.123.dll"), this.GetFakeFile("tools", "frobuscator", "tests", "def", "tests.def.dll") }; var actual = finder.GetFiles(baseDir, pattern); CollectionAssert.AreEquivalent(expected, actual); abcDir.Received().GetFiles(filePattern); defDir.Received().GetFiles(filePattern); baseDir.Parent.DidNotReceive().GetFiles(Arg.Any <string>()); baseDir.DidNotReceive().GetFiles(Arg.Any <string>()); abcDir.DidNotReceive().GetDirectories(Arg.Any <string>(), Arg.Any <SIO.SearchOption>()); defDir.DidNotReceive().GetDirectories(Arg.Any <string>(), Arg.Any <SIO.SearchOption>()); }
public void GetFiles_GreedyThenWordWithWildcard(string pattern) { var filePattern = pattern.Split('/')[1]; var finder = new DirectoryFinder(this.fileSystem); var baseDir = this.GetFakeDirectory("tools"); var abcDir = this.GetFakeDirectory("tools", "frobuscator", "tests", "abc"); var defDir = this.GetFakeDirectory("tools", "frobuscator", "tests", "def"); var v1Dir = this.GetFakeDirectory("tools", "metamorphosator", "tests", "v1"); var v2Dir = this.GetFakeDirectory("tools", "metamorphosator", "tests", "v2"); abcDir.GetFiles(filePattern).Returns(new[] { this.GetFakeFile("tools", "frobuscator", "tests", "abc", "tests.abc.dll"), this.GetFakeFile("tools", "frobuscator", "tests", "abc", "tests.123.dll") }); defDir.GetFiles(filePattern).Returns(new[] { this.GetFakeFile("tools", "frobuscator", "tests", "def", "tests.def.dll") }); v1Dir.GetFiles(filePattern).Returns(new[] { this.GetFakeFile("tools", "metamorphosator", "tests", "v1", "test-assembly.dll"), this.GetFakeFile("tools", "metamorphosator", "tests", "v1", "test-assembly.pdb") }); v2Dir.GetFiles(filePattern).Returns(new[] { this.GetFakeFile("tools", "metamorphosator", "tests", "v2", "test-assembly.dll"), this.GetFakeFile("tools", "metamorphosator", "tests", "v2", "test-assembly.pdb") }); var expected = new[] { this.GetFakeFile("tools", "frobuscator", "tests", "abc", "tests.abc.dll"), this.GetFakeFile("tools", "frobuscator", "tests", "abc", "tests.123.dll"), this.GetFakeFile("tools", "frobuscator", "tests", "def", "tests.def.dll"), this.GetFakeFile("tools", "metamorphosator", "tests", "v1", "test-assembly.dll"), this.GetFakeFile("tools", "metamorphosator", "tests", "v1", "test-assembly.pdb"), this.GetFakeFile("tools", "metamorphosator", "tests", "v2", "test-assembly.dll"), this.GetFakeFile("tools", "metamorphosator", "tests", "v2", "test-assembly.pdb") }; var actual = finder.GetFiles(baseDir, pattern); CollectionAssert.AreEquivalent(expected, actual); foreach (var dir in this.fakedDirectories.Values.Where(x => x.FullName != GetRoot())) { dir.Received().GetFiles(filePattern); } baseDir.Parent.DidNotReceive().GetFiles(Arg.Any <string>()); abcDir.DidNotReceive().GetDirectories(Arg.Any <string>(), Arg.Any <SIO.SearchOption>()); defDir.DidNotReceive().GetDirectories(Arg.Any <string>(), Arg.Any <SIO.SearchOption>()); v1Dir.DidNotReceive().GetDirectories(Arg.Any <string>(), Arg.Any <SIO.SearchOption>()); v2Dir.DidNotReceive().GetDirectories(Arg.Any <string>(), Arg.Any <SIO.SearchOption>()); }
public void GetFiles_PatternIsEmpty() { var finder = new DirectoryFinder(Substitute.For <IFileSystem>()); Assert.That(() => finder.GetFiles(Substitute.For <IDirectory>(), string.Empty), Throws.ArgumentException.With.Message.Contains(" pattern ")); }
public void GetFiles_StartDirectoryIsNull() { var finder = new DirectoryFinder(Substitute.For <IFileSystem>()); Assert.That(() => finder.GetFiles((IDirectory)null, "notused"), Throws.ArgumentNullException.With.Message.Contains(" startDirectory ")); }
public void GetFiles(string pattern, int count) { var files = DirectoryFinder.GetFiles(_baseDir, pattern); Assert.That(files.Count, Is.EqualTo(count)); }