Esempio n. 1
0
        public void JdkDirectory_JavaHome([Values("JI_JAVA_HOME", "JAVA_HOME")] string envVar)
        {
            if (envVar.Equals("JAVA_HOME", StringComparison.OrdinalIgnoreCase))
            {
                Assert.Ignore("This test will only work locally if you rename/remove your Open JDK directory.");
                return;
            }

            CreateSdks(out string root, out string jdk, out string ndk, out string sdk);
            JdkInfoTests.CreateFauxJdk(jdk, releaseVersion: "1.8.999", releaseBuildNumber: "9", javaVersion: "1.8.999-9");

            var logs = new StringWriter();
            Action <TraceLevel, string> logger = (level, message) => {
                logs.WriteLine($"[{level}] {message}");
            };

            string java_home = null;

            try {
                // We only set via JAVA_HOME
                java_home = Environment.GetEnvironmentVariable(envVar, EnvironmentVariableTarget.Process);
                Environment.SetEnvironmentVariable(envVar, jdk, EnvironmentVariableTarget.Process);
                var info = new AndroidSdkInfo(logger, androidSdkPath: sdk, androidNdkPath: ndk, javaSdkPath: "");

                Assert.AreEqual(ndk, info.AndroidNdkPath, "AndroidNdkPath not preserved!");
                Assert.AreEqual(sdk, info.AndroidSdkPath, "AndroidSdkPath not preserved!");
                Assert.AreEqual(jdk, info.JavaSdkPath, "JavaSdkPath not preserved!");
            } finally {
                Environment.SetEnvironmentVariable(envVar, java_home, EnvironmentVariableTarget.Process);
                Directory.Delete(root, recursive: true);
            }
        }
Esempio n. 2
0
        public void DetectAndSetPreferredJavaSdkPathToLatest()
        {
            Action <TraceLevel, string> logger = (level, message) => {
                Console.WriteLine($"[{level}] {message}");
            };

            var backupConfig = UnixConfigPath + "." + Path.GetRandomFileName();

            try {
                if (OS.IsWindows)
                {
                    Assert.Throws <NotImplementedException>(() => AndroidSdkInfo.DetectAndSetPreferredJavaSdkPathToLatest(logger));
                    return;
                }
                Assert.Throws <NotSupportedException>(() => AndroidSdkInfo.DetectAndSetPreferredJavaSdkPathToLatest(logger));
                var newJdkPath = Path.Combine(PreferredJdksOverridePath, "microsoft_dist_openjdk_1.8.999.9");
                JdkInfoTests.CreateFauxJdk(newJdkPath, releaseVersion: "1.8.999", releaseBuildNumber: "9", javaVersion: "1.8.999-9");

                if (File.Exists(UnixConfigPath))
                {
                    File.Move(UnixConfigPath, backupConfig);
                }

                AndroidSdkInfo.DetectAndSetPreferredJavaSdkPathToLatest(logger);
                AssertJdkPath(newJdkPath);
            }
            finally {
                if (File.Exists(backupConfig))
                {
                    File.Delete(UnixConfigPath);
                    File.Move(backupConfig, UnixConfigPath);
                }
            }
        }
Esempio n. 3
0
        public void JdkDirectory_JavaHome()
        {
            CreateSdks(out string root, out string jdk, out string ndk, out string sdk);
            JdkInfoTests.CreateFauxJdk(jdk, releaseVersion: "1.8.999", releaseBuildNumber: "9", javaVersion: "1.8.999-9");

            var logs = new StringWriter();
            Action <TraceLevel, string> logger = (level, message) => {
                logs.WriteLine($"[{level}] {message}");
            };

            string java_home = null;

            try {
                // We only set via JAVA_HOME
                java_home = Environment.GetEnvironmentVariable("JAVA_HOME", EnvironmentVariableTarget.Process);
                Environment.SetEnvironmentVariable("JAVA_HOME", jdk);
                var info = new AndroidSdkInfo(logger, androidSdkPath: sdk, androidNdkPath: ndk, javaSdkPath: "");

                Assert.AreEqual(ndk, info.AndroidNdkPath, "AndroidNdkPath not preserved!");
                Assert.AreEqual(sdk, info.AndroidSdkPath, "AndroidSdkPath not preserved!");
                Assert.AreEqual(jdk, info.JavaSdkPath, "JavaSdkPath not preserved!");
            } finally {
                if (java_home != null)
                {
                    Environment.SetEnvironmentVariable("JAVA_HOME", java_home, EnvironmentVariableTarget.Process);
                }
                Directory.Delete(root, recursive: true);
            }
        }
Esempio n. 4
0
        public void Constructor_SetValuesFromPath()
        {
            if (OS.IsWindows)
            {
                Assert.Ignore("Windows does not look for values in %PATH%");
            }

            CreateSdks(out string root, out string jdk, out string ndk, out string sdk);
            JdkInfoTests.CreateFauxJdk(jdk, releaseVersion: "1.8.0", releaseBuildNumber: "42", javaVersion: "100.100.100_100");

            Action <TraceLevel, string> logger = (level, message) => {
                Console.WriteLine($"[{level}] {message}");
            };
            var oldPath     = Environment.GetEnvironmentVariable("PATH");
            var oldJavaHome = Environment.GetEnvironmentVariable("JAVA_HOME");

            try {
                var paths = new List <string> ()
                {
                    Path.Combine(jdk, "bin"),
                    ndk,
                    Path.Combine(sdk, "platform-tools"),
                };
                paths.AddRange(oldPath.Split(new[] { Path.PathSeparator }, StringSplitOptions.RemoveEmptyEntries));
                Environment.SetEnvironmentVariable("PATH", string.Join(Path.PathSeparator.ToString(), paths));
                if (!string.IsNullOrEmpty(oldJavaHome))
                {
                    Environment.SetEnvironmentVariable("JAVA_HOME", string.Empty);
                }

                var info = new AndroidSdkInfo(logger);

                Assert.AreEqual(ndk, info.AndroidNdkPath, "AndroidNdkPath not set from $PATH!");
                Assert.AreEqual(sdk, info.AndroidSdkPath, "AndroidSdkPath not set from $PATH!");
                Assert.AreEqual(jdk, info.JavaSdkPath, "JavaSdkPath not set from $PATH!");
            }
            finally {
                Environment.SetEnvironmentVariable("PATH", oldPath);
                if (!string.IsNullOrEmpty(oldJavaHome))
                {
                    Environment.SetEnvironmentVariable("JAVA_HOME", oldJavaHome);
                }
                Directory.Delete(root, recursive: true);
            }
        }