From 3dc5ec1549f151626bc900b874b886a948d5ed32 Mon Sep 17 00:00:00 2001 From: Jonathan Peppers Date: Tue, 23 May 2023 14:19:20 -0500 Subject: [PATCH] [tests] new test for provisioning JDKs Adds a test for: https://github.com/xamarin/monodroid/pull/1309 Bump to xamarin/monodroid/main@dbc9c67e Changes: https://github.com/xamarin/monodroid/compare/5aed7edd...dbc9c67e --- .external | 2 +- .../AndroidDependenciesTests.cs | 18 +++++++++++---- .../Android/AndroidSdkResolver.cs | 23 ++++++++++--------- 3 files changed, 26 insertions(+), 17 deletions(-) diff --git a/.external b/.external index 3092c8e78c6..aecc78825ee 100644 --- a/.external +++ b/.external @@ -1,2 +1,2 @@ -xamarin/monodroid:main@5aed7eddb3c02148297606da2b9e3ede6141f8f4 +xamarin/monodroid:main@dbc9c67e7bd45744e5174dd7e94e5b642418bef9 mono/mono:2020-02@6dd9def57ce969ca04a0ecd9ef72c0a8f069112d diff --git a/src/Xamarin.Android.Build.Tasks/Tests/Xamarin.Android.Build.Tests/AndroidDependenciesTests.cs b/src/Xamarin.Android.Build.Tasks/Tests/Xamarin.Android.Build.Tests/AndroidDependenciesTests.cs index 297d8865bb0..372d0746881 100644 --- a/src/Xamarin.Android.Build.Tasks/Tests/Xamarin.Android.Build.Tests/AndroidDependenciesTests.cs +++ b/src/Xamarin.Android.Build.Tasks/Tests/Xamarin.Android.Build.Tests/AndroidDependenciesTests.cs @@ -21,13 +21,18 @@ public void InstallAndroidDependenciesTest () AssertCommercialBuild (); // We need to grab the latest API level *before* changing env vars var apiLevel = AndroidSdkResolver.GetMaxInstalledPlatform (); - var old = Environment.GetEnvironmentVariable ("TEST_ANDROID_SDK_PATH"); + var oldSdkPath = Environment.GetEnvironmentVariable ("TEST_ANDROID_SDK_PATH"); + var oldJdkPath = Environment.GetEnvironmentVariable ("TEST_ANDROID_JDK_PATH"); try { string sdkPath = Path.Combine (Root, "temp", TestName, "android-sdk"); + string jdkPath = Path.Combine (Root, "temp", TestName, "android-jdk"); Environment.SetEnvironmentVariable ("TEST_ANDROID_SDK_PATH", sdkPath); - if (Directory.Exists (sdkPath)) - Directory.Delete (sdkPath, true); - Directory.CreateDirectory (sdkPath); + Environment.SetEnvironmentVariable ("TEST_ANDROID_JDK_PATH", jdkPath); + foreach (var path in new [] { sdkPath, jdkPath }) { + if (Directory.Exists (path)) + Directory.Delete (path, recursive: true); + Directory.CreateDirectory (path); + } var proj = new XamarinAndroidApplicationProject { TargetSdkVersion = apiLevel.ToString (), }; @@ -60,10 +65,13 @@ public void InstallAndroidDependenciesTest () } } Assert.IsTrue (usedNewDir, $"_AndroidSdkDirectory was not set to new SDK path `{sdkPath}`."); + Assert.IsTrue (b.LastBuildOutput.ContainsText ($"Output Property: _JavaSdkDirectory={jdkPath}"), + $"_JavaSdkDirectory was not set to new JDK path `{jdkPath}`."); Assert.IsTrue (b.LastBuildOutput.ContainsText ($"JavaPlatformJarPath={sdkPath}"), $"JavaPlatformJarPath did not contain new SDK path `{sdkPath}`."); } } finally { - Environment.SetEnvironmentVariable ("TEST_ANDROID_SDK_PATH", old); + Environment.SetEnvironmentVariable ("TEST_ANDROID_SDK_PATH", oldSdkPath); + Environment.SetEnvironmentVariable ("TEST_ANDROID_JDK_PATH", oldJdkPath); } } diff --git a/src/Xamarin.Android.Build.Tasks/Tests/Xamarin.ProjectTools/Android/AndroidSdkResolver.cs b/src/Xamarin.Android.Build.Tasks/Tests/Xamarin.ProjectTools/Android/AndroidSdkResolver.cs index 8a457d0189e..ff7e491d51f 100644 --- a/src/Xamarin.Android.Build.Tasks/Tests/Xamarin.ProjectTools/Android/AndroidSdkResolver.cs +++ b/src/Xamarin.Android.Build.Tasks/Tests/Xamarin.ProjectTools/Android/AndroidSdkResolver.cs @@ -47,17 +47,18 @@ public static string GetAndroidNdkPath () public static string GetJavaSdkPath () { - if (string.IsNullOrEmpty (JavaSdkPath)) - JavaSdkPath = RunPathsTargets ("GetJavaSdkDirectory"); - if (string.IsNullOrEmpty (JavaSdkPath)) - JavaSdkPath = Environment.GetEnvironmentVariable ("JI_JAVA_HOME"); - if (string.IsNullOrEmpty (JavaSdkPath)) - JavaSdkPath = Environment.GetEnvironmentVariable ("JAVA_HOME"); - if (string.IsNullOrEmpty (JavaSdkPath)) - JavaSdkPath = GetPathFromRegistry ("JavaSdkDirectory"); - if (string.IsNullOrEmpty (JavaSdkPath)) - JavaSdkPath = Path.GetFullPath (Path.Combine (DefaultToolchainPath, "jdk")); - return JavaSdkPath; + var javaSdkPath = Environment.GetEnvironmentVariable ("TEST_ANDROID_JDK_PATH"); + if (string.IsNullOrEmpty (javaSdkPath)) + javaSdkPath = JavaSdkPath ??= RunPathsTargets ("GetJavaSdkDirectory"); + if (string.IsNullOrEmpty (javaSdkPath)) + javaSdkPath = JavaSdkPath ??= Environment.GetEnvironmentVariable ("JI_JAVA_HOME"); + if (string.IsNullOrEmpty (javaSdkPath)) + javaSdkPath = JavaSdkPath ??= Environment.GetEnvironmentVariable ("JAVA_HOME"); + if (string.IsNullOrEmpty (javaSdkPath)) + javaSdkPath = JavaSdkPath ??= GetPathFromRegistry ("JavaSdkDirectory"); + if (string.IsNullOrEmpty (javaSdkPath)) + javaSdkPath = JavaSdkPath ??= Path.GetFullPath (Path.Combine (DefaultToolchainPath, "jdk")); + return javaSdkPath; } static string JavaSdkVersionString;