public void AddDirectoryOddPaths()
        {
            CreateDirectories("A.txt", Path.Combine("B", "B.txt"));

            using (var archive = new ZipArchiveEx(Zip, FileMode.Create)) {
                archive.AddDirectory(TestPath + $@"\../{nameof (AddDirectoryOddPaths)}/", "temp", CompressionMethod.Deflate);
            }

            AssertZip(
                @"temp/A.txt
temp/B/B.txt");
        }
Example #2
0
        void AssertSkipExisting(string file, string fileInArchive, bool expected)
        {
            DateTime lastWrite = File.GetLastWriteTimeUtc(file);
            string   path      = Path.GetFullPath(file);

            using (var archive = new ZipArchiveEx(Zip, FileMode.Open)) {
                var  entry   = archive.Archive.ContainsEntry(fileInArchive) ? archive.Archive.ReadEntry(fileInArchive) : null;
                var  modTime = entry?.ModificationTime ?? DateTime.MinValue;
                bool result  = archive.SkipExistingFile(file, fileInArchive);
                Assert.AreEqual(expected, result,
                                $"SkipExistingFile returned unexpected value for {Zip} {path} {fileInArchive}\n {WithoutMilliseconds(lastWrite)} (disk {lastWrite.ToString ("MM/dd/yyyy HH:mm:ss:fff")}) <= {WithoutMilliseconds (modTime)} (zip {modTime.ToString ("MM/dd/yyyy HH:mm:ss:fff")}) = {result}");
            }
        }
Example #3
0
        public void AddDirectory()
        {
            CreateDirectories("A.txt", Path.Combine("B", "B.txt"));

            using (var archive = new ZipArchiveEx(Zip, FileMode.Create)) {
                archive.AddDirectory(TestPath, "temp");
            }

            AssertZip(
                @"temp/A.txt
temp/B/
temp/B/B.txt");
        }
Example #4
0
        public void AddDirectoryOddPaths()
        {
            CreateDirectories("A.txt", Path.Combine("B", "B.txt"));

            using (var archive = new ZipArchiveEx(zip, FileMode.Create)) {
                archive.AddDirectory(temp + $@"\../{nameof (AddDirectoryOddPaths)}/", "temp");
            }

            AssertZip(
                @"temp/A.txt
temp/B/
temp/B/B.txt");
        }
        void AssertZip(string expected)
        {
            FileAssert.Exists(Zip, "Zip file should exist!");

            var builder = new StringBuilder();

            using (var archive = new ZipArchiveEx(Zip, FileMode.Open)) {
                foreach (var entry in archive.Archive)
                {
                    builder.AppendLine(entry.FullName);
                }
            }

            Assert.AreEqual(expected.Trim().Replace("\r\n", "\n"), builder.ToString().Trim().Replace("\r\n", "\n"));
        }
        public void SkipExistingFile_Exist()
        {
            CreateDirectories("A.txt", Path.Combine("B", "B.txt"));

            using (var archive = new ZipArchiveEx(Zip, FileMode.Create)) {
                archive.AddDirectory(TestPath, folderInArchive: "", CompressionMethod.Deflate);
            }

            AssertZip(
                @"A.txt
B/B.txt");
            AssertSkipExisting(Path.Combine(TestPath, "A.txt"), "A.txt", expected: true);
            AssertSkipExisting(Path.Combine(TestPath, "B", "B.txt"), "B/B.txt", expected: true);
            AssertSkipExisting(Path.Combine(TestPath, "C.txt"), "C.txt", expected: false);
            AssertSkipExisting(Path.Combine(TestPath, "C", "C.txt"), "C/C.txt", expected: false);
        }
        public void SkipExistingFile_TimeStamp()
        {
            CreateDirectories("A.txt", Path.Combine("B", "B.txt"));

            using (var archive = new ZipArchiveEx(Zip, FileMode.Create)) {
                archive.AddDirectory(TestPath, folderInArchive: "", CompressionMethod.Deflate);
            }

            AssertZip(
                @"A.txt
B/B.txt");
            var file = Path.Combine(TestPath, "A.txt");

            File.SetLastWriteTimeUtc(file, DateTime.UtcNow.AddSeconds(1));
            AssertSkipExisting(file, "A.txt", expected: false);
            AssertSkipExisting(Path.Combine(TestPath, "B", "B.txt"), "B/B.txt", expected: true);
        }
Example #8
0
        public void SkipExistingFile_Exist()
        {
            CreateDirectories("A.txt", Path.Combine("B", "B.txt"));

            DateTime lastWrite = File.GetLastWriteTimeUtc(Path.Combine(TestPath, "A.txt"));

            using (var archive = new ZipArchiveEx(Zip, FileMode.Create)) {
                archive.AddDirectory(TestPath, folderInArchive: "");
            }

            AssertZip(
                @"A.txt
B/
B/B.txt");
            AssertSkipExisting(Path.Combine(TestPath, "A.txt"), "A.txt", expected: true);
            AssertSkipExisting(Path.Combine(TestPath, "B", "B.txt"), "B/B.txt", expected: true);
            AssertSkipExisting(Path.Combine(TestPath, "C.txt"), "C.txt", expected: false);
            AssertSkipExisting(Path.Combine(TestPath, "C", "C.txt"), "C/C.txt", expected: false);
        }
        public void AddDirectoryCurrentDirectory()
        {
            CreateDirectories("A.txt", Path.Combine("B", "B.txt"));

            string cwd = Directory.GetCurrentDirectory();

            try {
                Directory.SetCurrentDirectory(TestPath);

                using (var archive = new ZipArchiveEx(Zip, FileMode.Create)) {
                    archive.AddDirectory(".", "temp", CompressionMethod.Deflate);
                }

                AssertZip(
                    @"temp/A.txt
temp/B/B.txt");
            } finally {
                Directory.SetCurrentDirectory(cwd);
            }
        }
        public void SkipExistingFile_Compression()
        {
            var fileName = "A.txt";
            var filePath = Path.Combine(TestPath, fileName);

            CreateDirectories(fileName);

            using (var archive = new ZipArchiveEx(Zip, FileMode.Create)) {
                archive.AddDirectory(TestPath, folderInArchive: "", CompressionMethod.Deflate);
            }

            AssertSkipExisting(filePath, fileName, expected: true, method: CompressionMethod.Deflate);
            AssertSkipExisting(filePath, fileName, expected: true, method: CompressionMethod.Default);
            AssertSkipExisting(filePath, fileName, expected: false, method: CompressionMethod.Store);

            File.Delete(Zip);
            using (var archive = new ZipArchiveEx(Zip, FileMode.Create)) {
                archive.AddDirectory(TestPath, folderInArchive: "", method: CompressionMethod.Store);
            }

            AssertSkipExisting(filePath, fileName, expected: true, method: CompressionMethod.Store);
            AssertSkipExisting(filePath, fileName, expected: false, method: CompressionMethod.Deflate);
            AssertSkipExisting(filePath, fileName, expected: false, method: CompressionMethod.Default);
        }