public void RuntimeEnvironment_RuntimeType()
 {
     RuntimeEnvironment runtimeEnv = new RuntimeEnvironment();
     #if DNXCORE50
     Assert.Equal("CoreCLR", runtimeEnv.RuntimeType);
     #else
     var runtime = Type.GetType("Mono.Runtime") == null ? "CLR" : "Mono";
     Assert.Equal(runtime, runtimeEnv.RuntimeType);
     #endif
 }
        public void RuntimeEnvironment_OS()
        {
            RuntimeEnvironment runtimeEnv = new RuntimeEnvironment();

            var os = NativeMethods.Uname();
            if (os == null)
            {
                os = "Windows";
                Assert.NotNull(runtimeEnv.OperatingSystemVersion);
            }
            else
            {
                Assert.Null(runtimeEnv.OperatingSystemVersion);
            }

            Assert.Equal(os, runtimeEnv.OperatingSystem);
        }
Beispiel #3
0
        public static Task<int> ExecuteAsync(string[] args, BootstrapperContext bootstrapperContext)
        {
            var app = new CommandLineApplication(throwOnUnexpectedArg: false);
            app.Name = Constants.BootstrapperExeName;
            app.FullName = Constants.BootstrapperFullName;

            // These options were handled in the native code, but got passed through here.
            // We just need to capture them and clean them up.
            var optionProject = app.Option("--project|-p <PATH>", "Path to the project.json file or the application folder. Defaults to the current folder if not provided.",
                CommandOptionType.SingleValue);
            var optionAppbase = app.Option("--appbase <PATH>", "Application base directory path",
                CommandOptionType.SingleValue);
            var optionLib = app.Option("--lib <LIB_PATHS>", "Paths used for library look-up",
                CommandOptionType.MultipleValue);
            var optionDebug = app.Option("--debug", "Waits for the debugger to attach before beginning execution.",
                CommandOptionType.NoValue);

            if (bootstrapperContext.RuntimeType != "Mono")
            {
                app.Option("--bootstrapper-debug", "Waits for the debugger to attach before bootstrapping runtime.",
                    CommandOptionType.NoValue);
            }
            #if DNX451
            var optionFramework = app.Option("--framework <FRAMEWORK_ID>", "Set the framework version to use when running (i.e. dnx451, dnx452, dnx46, ...)", CommandOptionType.SingleValue);
            #endif

            var env = new RuntimeEnvironment(bootstrapperContext);

            app.HelpOption("-?|-h|--help");
            app.VersionOption("--version",
                              () => env.GetShortVersion(),
                              () => env.GetFullVersion());

            // Options below are only for help info display
            // They will be forwarded to Microsoft.Dnx.ApplicationHost
            var optionsToForward = new[]
            {
                app.Option("--watch", "Watch file changes", CommandOptionType.NoValue),
                app.Option("--packages <PACKAGE_DIR>", "Directory containing packages", CommandOptionType.SingleValue),
                app.Option("--configuration <CONFIGURATION>", "The configuration to run under", CommandOptionType.SingleValue),
                app.Option("--port <PORT>", "The port to the compilation server", CommandOptionType.SingleValue)
            };

            app.Execute(args);

            // Help information was already shown because help option was specified
            if (app.IsShowingInformation)
            {
                return Task.FromResult(0);
            }

            // Show help information if no subcommand/option was specified
            if (!app.IsShowingInformation && app.RemainingArguments.Count == 0)
            {
                app.ShowHelp();
                return Task.FromResult(2);
            }

            // Some options should be forwarded to Microsoft.Dnx.ApplicationHost
            var appHostName = "Microsoft.Dnx.ApplicationHost";
            var appHostIndex = app.RemainingArguments.FindIndex(s =>
                string.Equals(s, appHostName, StringComparison.OrdinalIgnoreCase));
            foreach (var option in optionsToForward)
            {
                if (option.HasValue())
                {
                    if (appHostIndex < 0)
                    {
                        Console.WriteLine("The option '--{0}' can only be used with {1}", option.LongName, appHostName);
                        return Task.FromResult(1);
                    }

                    if (option.OptionType == CommandOptionType.NoValue)
                    {
                        app.RemainingArguments.Insert(appHostIndex + 1, "--" + option.LongName);
                    }
                    else if (option.OptionType == CommandOptionType.SingleValue)
                    {
                        app.RemainingArguments.Insert(appHostIndex + 1, "--" + option.LongName);
                        app.RemainingArguments.Insert(appHostIndex + 2, option.Value());
                    }
                    else if (option.OptionType == CommandOptionType.MultipleValue)
                    {
                        foreach (var value in option.Values)
                        {
                            app.RemainingArguments.Insert(appHostIndex + 1, "--" + option.LongName);
                            app.RemainingArguments.Insert(appHostIndex + 2, value);
                        }
                    }
                }
            }

            // Resolve the lib paths
            IEnumerable<string> searchPaths =
                ResolveSearchPaths(bootstrapperContext.RuntimeDirectory, optionLib.Values, app.RemainingArguments);

            var bootstrapper = new Bootstrapper(searchPaths);

            return bootstrapper.RunAsync(app.RemainingArguments, env, bootstrapperContext.ApplicationBase, bootstrapperContext.TargetFramework);
        }
 public void RuntimeEnvironment_RuntimeVersion()
 {
     RuntimeEnvironment runtimeEnv = new RuntimeEnvironment();
     Assert.NotNull(runtimeEnv.RuntimeVersion);
 }
 public void RuntimeEnvironment_RuntimeArchitecture()
 {
     RuntimeEnvironment runtimeEnv = new RuntimeEnvironment();
     var runtimeArchitecture = IntPtr.Size == 8 ? "x64" : "x86";
     Assert.Equal(runtimeArchitecture, runtimeEnv.RuntimeArchitecture);
 }
        public void RuntimeEnvironment_InitializedCorrectly()
        {
            RuntimeEnvironment runtimeEnv =
                new RuntimeEnvironment(
                    new BootstrapperContext
                    {
                        OperatingSystem = "Windows",
                        OsVersion = "10.0",
                        Architecture = "x64",
                        RuntimeType = "CoreClr"
                    });

            Assert.Equal(runtimeEnv.OperatingSystem, "Windows");
            Assert.Equal(runtimeEnv.OperatingSystemVersion, "10.0");
            Assert.Equal(runtimeEnv.RuntimeArchitecture, "x64");
            Assert.Equal(runtimeEnv.RuntimeType, "CoreClr");
        }