using System; using Xunit; using System.IO; using System.Diagnostics; namespace yavscTests { /// /// Since node isn't any requirement by here, /// It may regress /// [Trait("regression", "allways")] public class NodeTests { void TestNodeJsForAnsitohtml () { var procStart = new ProcessStartInfo("node", "node_modules/ansi-to-html/bin/ansi-to-html") { UseShellExecute = false, RedirectStandardInput = true, RedirectStandardOutput = true, RedirectStandardError = true }; var proc = Process.Start(procStart); proc.StandardInput.WriteLine("\x001b[30mblack\x1b[37mwhite"); proc.StandardInput.Close(); while (!proc.StandardOutput.EndOfStream) { Console.Write(proc.StandardOutput.ReadToEnd()); } } void AnsiToHtml() { var procStart = new ProcessStartInfo("ls", "-l --color=always") { UseShellExecute = false, RedirectStandardInput = false, RedirectStandardOutput = true }; var proc = Process.Start(procStart); var encoded = GetStream(proc.StandardOutput); var reader = new StreamReader(encoded); var txt = reader.ReadToEnd(); Console.WriteLine(txt); } public static Stream GetStream(StreamReader reader) { var procStart = new ProcessStartInfo("node", "node_modules/ansi-to-html/bin/ansi-to-html"); procStart.UseShellExecute = false; procStart.RedirectStandardInput = true; procStart.RedirectStandardOutput = true; procStart.RedirectStandardError = true; var mem = new MemoryStream(); StreamWriter writer = new StreamWriter(mem); var proc = Process.Start(procStart); var text = reader.ReadToEnd(); proc.StandardInput.WriteLine(text); proc.StandardInput.Close(); return proc.StandardOutput.BaseStream; } } }