Ejemplo n.º 1
0
 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()); });
 }
Ejemplo n.º 2
0
        /// <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]);
            }
        }
Ejemplo n.º 3
0
        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);
        }
Ejemplo n.º 4
0
        public void EmptyString()
        {
            var argv      = new[] { "" };
            var arguments = ArgvParser.GetArgumentString(argv);
            var parsed    = ProcessRunner.GetArgs(arguments);

            Assert.Equal(argv, parsed);
        }
Ejemplo n.º 5
0
        public void Carrot()
        {
            var argv      = new[] { "^", "^^", "asdf^asdf" };
            var arguments = ArgvParser.GetArgumentString(argv);
            var parsed    = ProcessRunner.GetArgs(arguments);

            Assert.Equal(argv, parsed);
        }
Ejemplo n.º 6
0
        public void SlashesAndSpacesSimple()
        {
            var argv = new[]
            {
                @"\ ", @" \", @" \ "
            };
            var arguments = ArgvParser.GetArgumentString(argv);
            var parsed    = ProcessRunner.GetArgs(arguments);

            Assert.Equal(argv, parsed);
        }
Ejemplo n.º 7
0
        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);
        }
Ejemplo n.º 8
0
        public void WhackyComplicated()
        {
            var argv = new[]
            {
                @"  ", @""" \\ """, @" \ \\ "" "" \\\ ""   \ \\\ "" ", @"\\\\ "" "" \ \ \ \ \ \ \"
            };
            var arguments = ArgvParser.GetArgumentString(argv);
            var parsed    = ProcessRunner.GetArgs(arguments);

            Assert.Equal(argv, parsed);
        }
Ejemplo n.º 9
0
        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);
        }
Ejemplo n.º 10
0
        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);
        }
Ejemplo n.º 11
0
        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);
        }
Ejemplo n.º 12
0
 void EmptyArgumentStringTest()
 {
     Assert.Null(ArgvParser.GetArgumentString(new string[] { }));
     Assert.Null(ArgvParser.GetArgumentString(new List <string>()));
     Assert.Null(ArgvParser.GetArgumentString(new List <string>().AsEnumerable()));
 }
Ejemplo n.º 13
0
        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();
            }
        }
Ejemplo n.º 14
0
 public void NullArgumentStringTest()
 {
     Assert.Null(ArgvParser.GetArgumentString(null));
 }
Ejemplo n.º 15
0
 public void NullCommandLineTest()
 {
     Assert.Throws <ArgvParserException>(() => { ArgvParser.GetCommandLine(null); });
 }
Ejemplo n.º 16
0
 public ArgvConfigSource(string[] arguments)
 {
     _parser    = new ArgvParser(arguments);
     _arguments = arguments;
 }
Ejemplo n.º 17
0
 /// <include file='ArgvConfigSource.xml' path='//Constructor[@name="Constructor"]/docs/*' />
 public ArgvConfigSource(string[] arguments)
 {
     parser         = new ArgvParser(arguments, parameterlessArgs);
     this.arguments = arguments;
 }