コード例 #1
0
        private bool RunTestAssembly(TestOptions options, string testTarget, IAssemblyLoaderContainer container, IServiceProvider services)
        {
            bool success = true;

            testTarget = Path.GetFullPath(testTarget);
            var applicationDir  = Directory.Exists(testTarget) ? testTarget : Path.GetDirectoryName(testTarget);
            var applicationName = Directory.Exists(testTarget) ? Path.GetFileName(testTarget) : Path.GetFileNameWithoutExtension(testTarget);

            var hostOptions = new DefaultHostOptions
            {
                WatchFiles               = false,
                PackageDirectory         = options.PackageDirectory,
                TargetFramework          = _environment.RuntimeFramework,
                Configuration            = options.Configuration,
                ApplicationBaseDirectory = applicationDir,
                CompilationServerPort    = options.CompilationServerPort
            };

            using (var host = new DefaultHost(hostOptions, services))
                using (host.AddLoaders(container))
                {
                    host.Initialize();
                    var libraryManager = (ILibraryManager)host.ServiceProvider.GetService(typeof(ILibraryManager));
                    var assemblies     = libraryManager.GetLibraryInformation(applicationName).LoadableAssemblies.Select(Assembly.Load);

                    foreach (var assembly in assemblies)
                    {
                        using (var framework = new Xunit2(new NullSourceInformationProvider(), assembly.GetName().Name))
                        {
                            switch (options.RunKind)
                            {
                            case RunKind.List:
                                DiscoverTests(options, framework, services);
                                break;

                            default:
                                success = RunTests(options, framework, services) && success;
                                break;
                            }
                        }
                    }
                }

            return(success);
        }
コード例 #2
0
        private bool ParseArgs(string[] args, out DefaultHostOptions defaultHostOptions, out string[] outArgs, out int exitCode)
        {
            var app = new CommandLineApplication(throwOnUnexpectedArg: false);

            app.Name     = "Microsoft.Framework.ApplicationHost";
            app.FullName = app.Name;
            var optionWatch    = app.Option("--watch", "Watch file changes", CommandOptionType.NoValue);
            var optionPackages = app.Option("--packages <PACKAGE_DIR>", "Directory containing packages",
                                            CommandOptionType.SingleValue);
            var optionConfiguration     = app.Option("--configuration <CONFIGURATION>", "The configuration to run under", CommandOptionType.SingleValue);
            var optionCompilationServer = app.Option("--port <PORT>", "The port to the compilation server", CommandOptionType.SingleValue);
            var runCmdExecuted          = false;

            app.HelpOption("-?|-h|--help");

            var env = (IRuntimeEnvironment)_serviceProvider.GetService(typeof(IRuntimeEnvironment));

            app.VersionOption("--version", () => env.GetShortVersion(), () => env.GetFullVersion());
            var runCmd = app.Command("run", c =>
            {
                // We don't actually execute "run" command here
                // We are adding this command for the purpose of displaying correct help information
                c.Description = "Run application";
                c.OnExecute(() =>
                {
                    runCmdExecuted = true;
                    return(0);
                });
            },
                                     throwOnUnexpectedArg: false);

            app.Execute(args);

            defaultHostOptions = null;
            outArgs            = null;
            exitCode           = 0;

            if (app.IsShowingInformation)
            {
                // If help option or version option was specified, exit immediately with 0 exit code
                return(true);
            }
            else if (!(app.RemainingArguments.Any() || runCmdExecuted))
            {
                // If no subcommand was specified, show error message
                // and exit immediately with non-zero exit code
                Console.WriteLine("Please specify the command to run");
                exitCode = 2;
                return(true);
            }

            defaultHostOptions                  = new DefaultHostOptions();
            defaultHostOptions.WatchFiles       = optionWatch.HasValue();
            defaultHostOptions.PackageDirectory = optionPackages.Value();

            defaultHostOptions.TargetFramework          = _environment.RuntimeFramework;
            defaultHostOptions.Configuration            = optionConfiguration.Value() ?? _environment.Configuration ?? "Debug";
            defaultHostOptions.ApplicationBaseDirectory = _environment.ApplicationBasePath;
            var portValue = optionCompilationServer.Value() ?? Environment.GetEnvironmentVariable(EnvironmentNames.CompilationServerPort);

            int port;

            if (!string.IsNullOrEmpty(portValue) && int.TryParse(portValue, out port))
            {
                defaultHostOptions.CompilationServerPort = port;
            }

            var remainingArgs = new List <string>();

            if (runCmdExecuted)
            {
                // Later logic will execute "run" command
                // So we put this argment back after it was consumed by parser
                remainingArgs.Add("run");
                remainingArgs.AddRange(runCmd.RemainingArguments);
            }
            else
            {
                remainingArgs.AddRange(app.RemainingArguments);
            }

            if (remainingArgs.Any())
            {
                defaultHostOptions.ApplicationName = remainingArgs[0];
                outArgs = remainingArgs.Skip(1).ToArray();
            }
            else
            {
                outArgs = remainingArgs.ToArray();
            }

            return(false);
        }
コード例 #3
0
ファイル: Program.cs プロジェクト: ivlists/KRuntime
        private bool ParseArgs(string[] args, out DefaultHostOptions defaultHostOptions, out string[] outArgs)
        {
            var app = new CommandLineApplication(throwOnUnexpectedArg: false);

            app.Name = "k";
            var optionWatch    = app.Option("--watch", "Watch file changes", CommandOptionType.NoValue);
            var optionPackages = app.Option("--packages <PACKAGE_DIR>", "Directory containing packages",
                                            CommandOptionType.SingleValue);
            var optionConfiguration = app.Option("--configuration <CONFIGURATION>", "The configuration to run under", CommandOptionType.SingleValue);

            var runCmdExecuted = false;

            app.HelpOption("-?|-h|--help");
            app.VersionOption("--version", GetVersion());
            var runCmd = app.Command("run", c =>
            {
                // We don't actually execute "run" command here
                // We are adding this command for the purpose of displaying correct help information
                c.Description = "Run application";
                c.OnExecute(() =>
                {
                    runCmdExecuted = true;
                    return(0);
                });
            },
                                     addHelpCommand: false,
                                     throwOnUnexpectedArg: false);

            app.Execute(args);

            if (!(app.IsShowingInformation || app.RemainingArguments.Any() || runCmdExecuted))
            {
                app.ShowHelp(commandName: null);
            }

            defaultHostOptions                  = new DefaultHostOptions();
            defaultHostOptions.WatchFiles       = optionWatch.HasValue();
            defaultHostOptions.PackageDirectory = optionPackages.Value();

            defaultHostOptions.TargetFramework          = _environment.TargetFramework;
            defaultHostOptions.Configuration            = optionConfiguration.Value() ?? _environment.Configuration ?? "Debug";
            defaultHostOptions.ApplicationBaseDirectory = _environment.ApplicationBasePath;

            var remainingArgs = new List <string>();

            if (runCmdExecuted)
            {
                // Later logic will execute "run" command
                // So we put this argment back after it was consumed by parser
                remainingArgs.Add("run");
                remainingArgs.AddRange(runCmd.RemainingArguments);
            }
            else
            {
                remainingArgs.AddRange(app.RemainingArguments);
            }

            if (remainingArgs.Any())
            {
                defaultHostOptions.ApplicationName = remainingArgs[0];
                outArgs = remainingArgs.Skip(1).ToArray();
            }
            else
            {
                outArgs = remainingArgs.ToArray();
            }

            return(app.IsShowingInformation);
        }