| 
 | 1 | +using System;  | 
 | 2 | +using NUnit.Framework;  | 
 | 3 | +using Xamarin.ProjectTools;  | 
 | 4 | +using System.IO;  | 
 | 5 | +using System.Linq;  | 
 | 6 | +using Microsoft.Build.Framework;  | 
 | 7 | +using System.Text;  | 
 | 8 | +using Xamarin.Android.Tasks;  | 
 | 9 | +using Microsoft.Build.Utilities;  | 
 | 10 | + | 
 | 11 | +namespace Xamarin.Android.Build.Tests {  | 
 | 12 | + | 
 | 13 | +	[TestFixture]  | 
 | 14 | +	[Parallelizable (ParallelScope.Children)]  | 
 | 15 | +	public class ResolveSdksTaskTests : BaseTest {  | 
 | 16 | +		[Test]  | 
 | 17 | +		public void ResolveSdkTiming ()  | 
 | 18 | +		{  | 
 | 19 | +			var path = Path.Combine ("temp", TestName);  | 
 | 20 | +			var androidSdkPath = CreateFauxAndroidSdkDirectory (Path.Combine (path, "android-sdk"), "26.0.3");  | 
 | 21 | +			string javaExe = string.Empty;  | 
 | 22 | +			var javaPath = CreateFauxJavaSdkDirectory (Path.Combine (path, "jdk"), "1.8.0", out javaExe);  | 
 | 23 | +			var referencePath = CreateFauxReferencesDirectory (Path.Combine (path, "references"), new ApiInfo [] {  | 
 | 24 | +				new ApiInfo () { Id = 26, Level = 26, Name = "Oreo", FrameworkVersion = "v8.0", Stable = true },  | 
 | 25 | +				new ApiInfo () { Id = 27, Level = 27, Name = "Oreo", FrameworkVersion = "v8.1", Stable = true },  | 
 | 26 | +			});  | 
 | 27 | +			IBuildEngine engine = new MockBuildEngine (TestContext.Out);  | 
 | 28 | +			var task = new ResolveSdks {  | 
 | 29 | +				BuildEngine = engine  | 
 | 30 | +			};  | 
 | 31 | +			task.AndroidSdkPath = androidSdkPath;  | 
 | 32 | +			task.AndroidNdkPath = androidSdkPath;  | 
 | 33 | +			task.JavaSdkPath = javaPath;  | 
 | 34 | +			task.TargetFrameworkVersion = "v8.0";  | 
 | 35 | +			task.AndroidSdkBuildToolsVersion = "26.0.3";  | 
 | 36 | +			task.BuildingInsideVisualStudio = "true";  | 
 | 37 | +			task.UseLatestAndroidPlatformSdk = false;  | 
 | 38 | +			task.AotAssemblies = false;  | 
 | 39 | +			task.LatestSupportedJavaVersion = "1.8.0";  | 
 | 40 | +			task.MinimumSupportedJavaVersion = "1.7.0";  | 
 | 41 | +			task.ReferenceAssemblyPaths = new string [] {  | 
 | 42 | +				Path.Combine (referencePath, "MonoAndroid"),  | 
 | 43 | +			};  | 
 | 44 | +			task.CacheFile = Path.Combine (Root, path, "sdk.xml");  | 
 | 45 | +			task.SequencePointsMode = "None";  | 
 | 46 | +			task.JavaToolExe = javaExe;  | 
 | 47 | +			var start = DateTime.UtcNow;  | 
 | 48 | +			Assert.IsTrue (task.Execute ());  | 
 | 49 | +			var executionTime = DateTime.UtcNow - start;  | 
 | 50 | +			Assert.LessOrEqual (executionTime, TimeSpan.FromSeconds(1), "Task should not take more than 1 second to run.");  | 
 | 51 | +			Assert.AreEqual (task.AndroidApiLevel, "26", "AndroidApiLevel should be 26");  | 
 | 52 | +			Assert.AreEqual (task.TargetFrameworkVersion, "v8.0", "TargetFrameworkVersion should be v8.0");  | 
 | 53 | +			Assert.AreEqual (task.AndroidApiLevelName, "26", "AndroidApiLevelName should be 26");  | 
 | 54 | +			Assert.AreEqual (task.SupportedApiLevel, "26", "SupportedApiLevel should be 26");  | 
 | 55 | +			Assert.NotNull (task.ReferenceAssemblyPaths, "ReferenceAssemblyPaths should not be null.");  | 
 | 56 | +			Assert.AreEqual (task.ReferenceAssemblyPaths.Length, 1, "ReferenceAssemblyPaths should have 1 entry.");  | 
 | 57 | +			Assert.AreEqual (task.ReferenceAssemblyPaths[0], Path.Combine (referencePath, "MonoAndroid"), $"ReferenceAssemblyPaths should be {Path.Combine (referencePath, "MonoAndroid")}.");  | 
 | 58 | +			var expected = Path.Combine (Root);  | 
 | 59 | +			Assert.AreEqual (task.MonoAndroidToolsPath, expected, $"MonoAndroidToolsPath should be {expected}");  | 
 | 60 | +			expected = Path.Combine (Root, "Darwin" + Path.DirectorySeparatorChar);  | 
 | 61 | +			Assert.AreEqual (task.MonoAndroidBinPath, expected, $"MonoAndroidBinPath should be {expected}");  | 
 | 62 | +			Assert.AreEqual (task.MonoAndroidIncludePath, null, "MonoAndroidIncludePath should be null");  | 
 | 63 | +			//Assert.AreEqual (task.AndroidNdkPath, "26", "AndroidNdkPath should be 26");  | 
 | 64 | +			Assert.AreEqual (task.AndroidSdkPath, androidSdkPath, $"AndroidSdkPath should be {androidSdkPath}");  | 
 | 65 | +			Assert.AreEqual (task.JavaSdkPath, javaPath, $"JavaSdkPath should be {javaPath}");  | 
 | 66 | +			expected = Path.Combine (androidSdkPath, "build-tools", "26.0.3");  | 
 | 67 | +			Assert.AreEqual (task.AndroidSdkBuildToolsPath, expected, $"AndroidSdkBuildToolsPath should be {expected}");  | 
 | 68 | +			Assert.AreEqual (task.AndroidSdkBuildToolsBinPath, expected, "AndroidSdkBuildToolsBinPath should be {expected}");  | 
 | 69 | +			Assert.AreEqual (task.ZipAlignPath, expected, "ZipAlignPath should be {expected}");  | 
 | 70 | +			Assert.AreEqual (task.AndroidSequencePointsMode, "None", "AndroidSequencePointsMode should be None");  | 
 | 71 | +			expected = Path.Combine (androidSdkPath, "tools");  | 
 | 72 | +			Assert.AreEqual (task.LintToolPath, expected, $"LintToolPath should be {expected}");  | 
 | 73 | +			expected = Path.Combine (androidSdkPath, "build-tools", "26.0.3", "lib", "apksigner.jar");  | 
 | 74 | +			Assert.AreEqual (task.ApkSignerJar, expected, $"ApkSignerJar should be {expected}");  | 
 | 75 | +			Assert.AreEqual (task.AndroidUseApkSigner, false, "AndroidUseApkSigner should be false");  | 
 | 76 | +			Assert.AreEqual (task.JdkVersion, "1.8.0", "JdkVersion should be 1.8.0");  | 
 | 77 | +			Assert.AreEqual (task.MinimumRequiredJdkVersion, "1.8", "MinimumRequiredJdkVersion should be 1.8");  | 
 | 78 | +		}  | 
 | 79 | +	}  | 
 | 80 | +}  | 
0 commit comments