diff --git a/tests/SharpCompress.Test/Tar/TarReaderTests.cs b/tests/SharpCompress.Test/Tar/TarReaderTests.cs index 10c7ee19..ac58b3e4 100644 --- a/tests/SharpCompress.Test/Tar/TarReaderTests.cs +++ b/tests/SharpCompress.Test/Tar/TarReaderTests.cs @@ -186,5 +186,42 @@ namespace SharpCompress.Test.Tar } } } + + [Fact] + public void Tar_GZip_With_Symlink_Entries() + { + using (Stream stream = File.OpenRead(Path.Combine(TEST_ARCHIVES_PATH, "TarWithSymlink.tar.gz"))) + using (var reader = TarReader.Open(stream)) + { + List names = new List(); + while (reader.MoveToNextEntry()) + { + if (reader.Entry.IsDirectory) + { + continue; + } + reader.WriteEntryToDirectory(SCRATCH_FILES_PATH, + new ExtractionOptions() + { + ExtractFullPath = true, + Overwrite = true + }); + if (reader.Entry.LinkTarget != null) + { +#if NETSTANDARD2_0 + var link = new Mono.Unix.UnixSymbolicLinkInfo(reader.Entry.Key); + if (link.HasContents) + { + Assert.Equal(link.GetContents(), reader.Entry.LinkTarget); + } + else + { + Assert.True(false); + } +#endif + } + } + } + } } } diff --git a/tests/TestArchives/Archives/TarWithSymlink.tar.gz b/tests/TestArchives/Archives/TarWithSymlink.tar.gz new file mode 100644 index 00000000..4dce43df Binary files /dev/null and b/tests/TestArchives/Archives/TarWithSymlink.tar.gz differ