Пример #1
0
        public void SuppressedZipExtensionsAreNotMatched()
        {
            using (var temporaryDirectory = new TemporaryDirectory())
            {
                using (var zip = new ZipArchive(File.OpenWrite(temporaryDirectory.GetPath("test.zip")), ZipArchiveMode.Create))
                {
                    var nested = zip.CreateEntry("archive.zip");
                    using (var nestedZip = new ZipArchive(nested.Open(), ZipArchiveMode.Create))
                    {
                        nestedZip.CreateEntry("nestedA");
                        nestedZip.CreateEntry("nestedB");
                    }
                    zip.CreateEntry("outerA");
                    zip.CreateEntry("outerB");
                }

                using (var buffer = new TemporaryDirectory())
                {
                    var hierarchy = new ZipFileSystemHierarchy(new DirectoryInfo(temporaryDirectory.FullPath), buffer, suppressZipExtensions: true, caseSensitive: false);
                    var matcher   = new GlobMatchEnumerator(new GlobParser().Parse("test*/*.zip/*A"));

                    var results = matcher.EnumerateMatches(hierarchy).ToArray();

                    Assert.That(results, Is.Empty);
                }
            }
        }
Пример #2
0
        public void CanUseZipFileAsHierarchyRoot()
        {
            using (var temporaryDirectory = new TemporaryDirectory())
            {
                using (var zip = new ZipArchive(File.OpenWrite(temporaryDirectory.GetPath("test.zip")), ZipArchiveMode.Create))
                {
                    var nested = zip.CreateEntry("inside/archive.zip");
                    using (var nestedZip = new ZipArchive(nested.Open(), ZipArchiveMode.Create))
                    {
                        nestedZip.CreateEntry("directory/nestedFile.txt");
                    }
                }

                using (var buffer = new TemporaryDirectory())
                {
                    var hierarchy = new ZipFileSystemHierarchy(new FileInfo(temporaryDirectory.GetPath("test.zip")), buffer, suppressZipExtensions: false, caseSensitive: false);
                    var matcher   = new GlobMatchEnumerator(new GlobParser().Parse("**/*.txt"));

                    var results = matcher.EnumerateMatches(hierarchy).ToArray();

                    Assume.That(results, Has.Length.EqualTo(1));
                    Assert.That(results.Single().Details.GetPathSegments(), Is.EqualTo(new [] { "inside", "archive.zip", "directory", "nestedFile.txt" }));
                }
            }
        }
Пример #3
0
        public void CanEnumerateFilesRecursivelyWithinZipArchives()
        {
            using (var temporaryDirectory = new TemporaryDirectory())
            {
                using (var zip = new ZipArchive(File.OpenWrite(temporaryDirectory.GetPath("test.zip")), ZipArchiveMode.Create))
                {
                    var nested = zip.CreateEntry("archive.zip");
                    using (var nestedZip = new ZipArchive(nested.Open(), ZipArchiveMode.Create))
                    {
                        nestedZip.CreateEntry("nestedA");
                        nestedZip.CreateEntry("nestedB");
                    }
                    zip.CreateEntry("outerA");
                    zip.CreateEntry("outerB");
                }

                using (var buffer = new TemporaryDirectory())
                {
                    var hierarchy = new ZipFileSystemHierarchy(new DirectoryInfo(temporaryDirectory.FullPath), buffer, suppressZipExtensions: false, caseSensitive: false);
                    var matcher   = new GlobMatchEnumerator(new GlobParser().Parse("test*/**/*A"));

                    var results = matcher.EnumerateMatches(hierarchy).ToArray();

                    Assert.That(results, Has.Length.EqualTo(2));
                    Assert.That(results.Select(r => r.Item.Exists), Has.All.True);
                }
            }
        }
Пример #4
0
        public void FindsAllMatches()
        {
            var hierarchy = new TestHierarchy(
                new SimpleMatchable("root",
                                    new SimpleMatchable("dev",
                                                        new SimpleMatchable("hda"),
                                                        new SimpleMatchable("hda1"),
                                                        new SimpleMatchable("hdb"),
                                                        new SimpleMatchable("hdb1"),
                                                        new SimpleMatchable("hdb2")),
                                    new SimpleMatchable("home",
                                                        new SimpleMatchable("me",
                                                                            new SimpleMatchable("hdmi")),
                                                        new SimpleMatchable("you")),
                                    new SimpleMatchable("var")));

            var glob = new GlobParser().Parse("**/hd??");

            var matches = new GlobMatchEnumerator(glob).EnumerateMatches(hierarchy);

            Assert.That(matches.Select(m => m.Item.Name).ToArray(),
                        Is.EquivalentTo(new []
            {
                "hda1",
                "hdb1",
                "hdb2",
                "hdmi"
            }));
        }