using System.CommandLine; using ScadaLink.CLI.Commands; namespace ScadaLink.CLI.Tests.Commands; /// /// Shared helpers for invoking the audit command tree in tests and capturing /// stdout/stderr/exit code. /// internal static class AuditCommandTestHarness { public static RootCommand BuildRoot() { var url = new Option("--url") { Recursive = true }; var username = new Option("--username") { Recursive = true }; var password = new Option("--password") { Recursive = true }; var format = CliOptions.CreateFormatOption(); var root = new RootCommand(); root.Add(url); root.Add(username); root.Add(password); root.Add(format); root.Add(AuditCommands.Build(url, format, username, password)); return root; } public static (int Exit, string Out, string Err) Invoke(RootCommand root, params string[] args) { var output = new StringWriter(); var error = new StringWriter(); var exit = root.Parse(args).Invoke(new InvocationConfiguration { Output = output, Error = error, }); return (exit, output.ToString(), error.ToString()); } }