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); } }
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); } }
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); } } } }
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(); } }