Esempio n. 1
0
        public void WriteTarFileTest()
        {
            using (Stream original = File.OpenRead(@"IO/test.tar"))
                using (Stream expected = File.OpenRead(@"IO/test.tar"))
                    using (Stream actual = new MemoryStream())
                        using (Stream output = new ValidatingCompositeStream(null, actual, expected))
                        {
                            var tar = new TarFile(original, true);
                            while (tar.Read())
                            {
                                Stream data = new MemoryStream();
                                if (tar.FileHeader.FileMode == LinuxFileMode.S_IFDIR)
                                {
                                    tar.Skip();
                                }
                                else
                                {
                                    data = tar.Open();
                                }

                                var clonedHeader = this.CloneHeader((TarHeader)tar.FileHeader);
                                this.AssertCompareClonedHeader((TarHeader)tar.FileHeader, clonedHeader);
                                using (data)
                                {
                                    TarFileCreator.WriteEntry(output, this.CloneHeader(clonedHeader), data);
                                }
                            }

                            TarFileCreator.WriteTrailer(output);
                        }
        }
 public void WriteRpmPackageTest()
 {
     using (Stream stream = File.OpenRead(@"Rpm/libplist-2.0.1.151-1.1.x86_64.rpm"))
         using (Stream expected = File.OpenRead(@"Rpm/libplist-2.0.1.151-1.1.x86_64.rpm"))
             using (Stream actual = new MemoryStream())
                 using (Stream output = new ValidatingCompositeStream(null, actual, expected))
                 {
                     var package = RpmPackageReader.Read(stream);
                     RpmPackageWriter.Write(output, package);
                 }
 }
Esempio n. 3
0
        public void WriteTarWithLongFilenameTest()
        {
            using (Stream expected = File.OpenRead(@"IO/largefilename.tar"))
                using (Stream actual = new MemoryStream())
                    using (Stream output = new ValidatingCompositeStream(null, actual, expected))
                    {
                        var directories = new string[]
                        {
                            "./",
                            "./usr/",
                            "./usr/lib/",
                            "./usr/lib/mono/",
                            "./usr/lib/mono/gac/",
                            "./usr/lib/mono/gac/System.Runtime.InteropServices.RuntimeInformation/",
                            "./usr/lib/mono/gac/System.Runtime.InteropServices.RuntimeInformation/4.0.0.0__b03f5f7f11d50a3a/",
                        };

                        foreach (var directory in directories)
                        {
                            TarFileCreator.WriteEntry(
                                output,
                                new ArchiveEntry()
                            {
                                Mode       = LinuxFileMode.S_IXOTH | LinuxFileMode.S_IROTH | LinuxFileMode.S_IXGRP | LinuxFileMode.S_IRGRP | LinuxFileMode.S_IXUSR | LinuxFileMode.S_IWUSR | LinuxFileMode.S_IRUSR | LinuxFileMode.S_IFDIR,
                                TargetPath = directory,
                                Group      = "root",
                                Owner      = "root",
                                Modified   = new DateTimeOffset(2016, 12, 15, 10, 58, 56, TimeSpan.Zero)
                            },
                                null);
                        }

                        using (MemoryStream stream = new MemoryStream(Encoding.UTF8.GetBytes("This file has a very long name.")))
                        {
                            TarFileCreator.WriteEntry(
                                output,
                                new ArchiveEntry()
                            {
                                Mode       = (LinuxFileMode)0x81FF,
                                TargetPath = "./usr/lib/mono/gac/System.Runtime.InteropServices.RuntimeInformation/4.0.0.0__b03f5f7f11d50a3a/System.Runtime.InteropServices.RuntimeInformation.txt",
                                Modified   = new DateTimeOffset(2017, 11, 11, 12, 37, 58, TimeSpan.Zero)
                            },
                                stream);
                        }

                        TarFileCreator.WriteTrailer(output);
                    }
        }
Esempio n. 4
0
 public void WriteTest()
 {
     using (Stream original = File.OpenRead("Deb/libplist3_1.12-3.1_amd64.deb"))
         using (Stream expected = File.OpenRead("Deb/libplist3_1.12-3.1_amd64.deb"))
             using (Stream actual = new MemoryStream())
                 using (Stream output = new ValidatingCompositeStream(null, actual, expected))
                 {
                     ArFileCreator.WriteMagic(output);
                     var input = new ArFile(original, true);
                     while (input.Read())
                     {
                         var header = (ArHeader)input.FileHeader;
                         var clone  = this.CloneHeader(header);
                         this.AssertCompareClonedHeader(header, clone);
                         using (var data = input.Open())
                         {
                             ArFileCreator.WriteEntry(output, clone, data);
                         }
                     }
                 }
 }
Esempio n. 5
0
        public void WriteCpioFileTests()
        {
            using (Stream stream = File.OpenRead(@"IO/test.cpio"))
                using (CpioFile source = new CpioFile(stream, true))
                    using (MemoryStream output = new MemoryStream())
                        using (Stream expectedOutput = File.OpenRead(@"IO/test.cpio"))
                            using (Stream validatingOutput = new ValidatingCompositeStream(null, output, expectedOutput))
                                using (CpioFile target = new CpioFile(validatingOutput, true))
                                {
                                    int index = 0;

                                    while (source.Read())
                                    {
                                        using (Stream file = source.Open())
                                        {
                                            target.Write(source.EntryHeader, source.FileName, file);
                                            index++;
                                        }
                                    }

                                    target.WriteTrailer();
                                }
        }