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); } }
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); } } }
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); } }
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); } }