using NUnit.Framework.Internal;
using ICSharpCode.SharpZipLib.Tar;
TarEntry symlinkEntry = new TarEntry(new TarHeader()
Mode = Convert.ToInt32("774", 8),
TypeFlag = TarHeader.LF_SYMLINK,
ModTime = DateTime.UtcNow,
Test(SymlinkWithArchiveClass, symlinkEntry);
Test(SymlinkWithStreamClass, symlinkEntry);
void SymlinkWithArchiveClass(TarEntry entry) {
using (var ms = new MemoryStream())
var ar = TarArchive.CreateOutputTarArchive(ms);
ar.WriteEntry(entry, false);
void SymlinkWithStreamClass(TarEntry entry) {
using var ms = new MemoryStream();
using (var ts = new TarOutputStream(ms, System.Text.Encoding.UTF8))
void Test<T>(Action<T> a, T input)
using var ctx = new TestExecutionContext.IsolatedContext();
Console.WriteLine($"Testing input \"{input}\"...\n");
Console.WriteLine("\n=> OK!");
Console.WriteLine($"\n=> Failed! ({x.GetType().Name})");
Console.WriteLine($"\n{x.Message}");
var trimmedStack = string.Join("\n", x.StackTrace.Split("\n").Where(l => !l.Contains("ReportFailure")));
Console.WriteLine($"{trimmedStack}");
Console.WriteLine($"\n{new string('=', 128)}\n");
void Log(string message) => Console.WriteLine($" {message}");