public void EmptyCommandLineTest() { Assert.Throws <ArgvParserException>(() => { ArgvParser.GetCommandLine(new string[] {}); }); Assert.Throws <ArgvParserException>(() => { ArgvParser.GetCommandLine(new List <string>()); }); Assert.Throws <ArgvParserException>( () => { ArgvParser.GetCommandLine(new List <string>().AsEnumerable()); }); }
/// <include file='ArgvConfigSource.xml' path='//Method[@name="AddSwitchShort"]/docs/*' /> public void AddSwitch(string configName, string longName, string shortName, bool parameterless = false) { IConfig config = GetConfig(configName); if (shortName != null && (shortName.Length < 1 || shortName.Length > 2)) { throw new ArgumentException("Short name may only be 1 or 2 characters"); } if (parameterless) { parameterlessArgs.Add(longName); if (shortName != null) { parameterlessArgs.Add(shortName); } // Re-parse because there is a new parameterless argument. This will change // the meaning of non-option args parser = new ArgvParser(arguments, parameterlessArgs); } // Look for the long name first if (parser[longName] != null) { config.Set(longName, parser[longName]); } else if (shortName != null && parser[shortName] != null) { config.Set(longName, parser[shortName]); } }
public void Spaces() { var argv = new[] { "asdf fff", "sdlemdk!2930 asd ds", " ", "asdf ", " asd ", " as d'" }; var arguments = ArgvParser.GetArgumentString(argv); var parsed = ProcessRunner.GetArgs(arguments); Assert.Equal(argv, parsed); }
public void EmptyString() { var argv = new[] { "" }; var arguments = ArgvParser.GetArgumentString(argv); var parsed = ProcessRunner.GetArgs(arguments); Assert.Equal(argv, parsed); }
public void Carrot() { var argv = new[] { "^", "^^", "asdf^asdf" }; var arguments = ArgvParser.GetArgumentString(argv); var parsed = ProcessRunner.GetArgs(arguments); Assert.Equal(argv, parsed); }
public void SlashesAndSpacesSimple() { var argv = new[] { @"\ ", @" \", @" \ " }; var arguments = ArgvParser.GetArgumentString(argv); var parsed = ProcessRunner.GetArgs(arguments); Assert.Equal(argv, parsed); }
public void SimpleCommand() { var argv = new[] { "cmd.exe", "/c", @"C:\Windows\System32\notepad.exe" }; var cmdline = ArgvParser.GetCommandLine(argv); Assert.Equal("cmd.exe", cmdline.Executable); argv = argv.Skip(1).ToArray(); var parsed = ProcessRunner.GetArgs(cmdline.Arguments); Assert.Equal(argv, parsed); }
public void WhackyComplicated() { var argv = new[] { @" ", @""" \\ """, @" \ \\ "" "" \\\ "" \ \\\ "" ", @"\\\\ "" "" \ \ \ \ \ \ \" }; var arguments = ArgvParser.GetArgumentString(argv); var parsed = ProcessRunner.GetArgs(arguments); Assert.Equal(argv, parsed); }
public void Quotes() { var argv = new[] { @"""", @""" """, @"\"" \""asdf """, @"a""a""a""a""", @"""\"" \\"" \\\"" \\\\""""", @"asdf\a23\4\@#$""""$""""""""""""""a\"" \\\""@#", @" "" ", @""" ", @" """ }; var arguments = ArgvParser.GetArgumentString(argv); var parsed = ProcessRunner.GetArgs(arguments); Assert.Equal(argv, parsed); }
public void SlashesCrazy() { var argv = new[] { @"\a\sd\ff\ds\d\f\sd\\\sd\f\sd\f\sd\f\sd", @"\", @"\\", @"\\\", @"\\\\", @"asd\s\d\\d\\\", @"\ \ \\ \\ \ \\ \\ \ \ \\", @" \ \\ ", @"\@#02 384\1293 8!#$%^&^&(( \9\%^$" }; var arguments = ArgvParser.GetArgumentString(argv); var parsed = ProcessRunner.GetArgs(arguments); Assert.Equal(argv, parsed); }
public void MsdnExamples() { var argv = new[] { "abc", "d", "e" }; var arguments = ArgvParser.GetArgumentString(argv); var parsed = ProcessRunner.GetArgs(arguments); Assert.Equal(argv, parsed); argv = new[] { @"a\\\b", "de fg", "h" }; arguments = ArgvParser.GetArgumentString(argv); parsed = ProcessRunner.GetArgs(arguments); Assert.Equal(argv, parsed); argv = new[] { @"a""b", "c", "d" }; arguments = ArgvParser.GetArgumentString(argv); parsed = ProcessRunner.GetArgs(arguments); Assert.Equal(argv, parsed); argv = new[] { @"a\\b c", "d", "e" }; arguments = ArgvParser.GetArgumentString(argv); parsed = ProcessRunner.GetArgs(arguments); Assert.Equal(argv, parsed); }
void EmptyArgumentStringTest() { Assert.Null(ArgvParser.GetArgumentString(new string[] { })); Assert.Null(ArgvParser.GetArgumentString(new List <string>())); Assert.Null(ArgvParser.GetArgumentString(new List <string>().AsEnumerable())); }
static void Main(string[] args) { if (args.Any()) { var i = 1; foreach (var arg in args) { Console.WriteLine($"argv[{i}] = {arg}"); i++; } } else { Console.WriteLine("Manual test application for WinArgv."); Console.WriteLine("Enter the literal args to pass and type DONE after your last argument:"); var argv = new List <string>(); var assemblyUri = new Uri(Assembly.GetExecutingAssembly().CodeBase); var assemblyPath = Uri.UnescapeDataString(assemblyUri.AbsolutePath); argv.Add(assemblyPath); for (var i = 1; ; i++) { Console.Write($"argv[{i}]: "); var arg = Console.ReadLine(); if (arg == null) { continue; } if (arg.Equals("DONE")) { break; } argv.Add(arg); } var processStartInfo = ArgvParser.GetProcessStartInfo(argv); Console.WriteLine($"Command: {processStartInfo.FileName}"); Console.WriteLine($"Arguments String: {processStartInfo.Arguments}"); Console.WriteLine(""); Console.WriteLine("Press any key..."); Console.ReadKey(); processStartInfo.CreateNoWindow = true; processStartInfo.LoadUserProfile = false; processStartInfo.UseShellExecute = false; processStartInfo.RedirectStandardOutput = true; var process = Process.Start(processStartInfo); if (process == null) { Console.WriteLine("Process failed to start :("); } else { while (!process.StandardOutput.EndOfStream) { Console.WriteLine(process.StandardOutput.ReadLine()); } process.WaitForExit(1000); } Console.WriteLine("Press any key..."); Console.ReadKey(); } }
public void NullArgumentStringTest() { Assert.Null(ArgvParser.GetArgumentString(null)); }
public void NullCommandLineTest() { Assert.Throws <ArgvParserException>(() => { ArgvParser.GetCommandLine(null); }); }
public ArgvConfigSource(string[] arguments) { _parser = new ArgvParser(arguments); _arguments = arguments; }
/// <include file='ArgvConfigSource.xml' path='//Constructor[@name="Constructor"]/docs/*' /> public ArgvConfigSource(string[] arguments) { parser = new ArgvParser(arguments, parameterlessArgs); this.arguments = arguments; }