xamarin-macios/tests/msbuild/Xamarin.MacDev.Tasks.Tests/TaskTests/CompileAppManifestTaskTests.cs

142 строки
4.7 KiB
C#
Исходник Обычный вид История

#nullable enable
using System;
using System.IO;
using System.Linq;
using Microsoft.Build.Utilities;
using NUnit.Framework;
using Xamarin.MacDev;
using Xamarin.MacDev.Tasks;
using Xamarin.Utils;
namespace Xamarin.iOS.Tasks {
[TestFixture]
public class CompileAppManifestTaskTests : TestBase {
CompileAppManifest CreateTask (string? tmpdir = null, ApplePlatform platform = ApplePlatform.iOS)
{
if (string.IsNullOrEmpty (tmpdir))
tmpdir = Cache.CreateTemporaryDirectory ();
var task = CreateTask<CompileAppManifest> ();
task.AssemblyName = "AssemblyName";
task.AppBundleName = "AppBundleName";
task.CompiledAppManifest = new TaskItem (Path.Combine (tmpdir, "TemporaryAppManifest.plist"));
task.DefaultSdkVersion = Sdks.GetAppleSdk (platform).GetInstalledSdkVersions (false).First ().ToString ();
task.SdkPlatform = PlatformFrameworkHelper.GetSdkPlatform (platform, false);
task.SdkVersion = task.DefaultSdkVersion;
task.TargetFrameworkMoniker = TargetFramework.GetTargetFramework (platform, true).ToString ();
return task;
}
[Test]
public void DefaultMinimumOSVersion ()
{
var dir = Cache.CreateTemporaryDirectory ();
var task = CreateTask (dir);
ExecuteTask (task);
var plist = PDictionary.FromFile (task.CompiledAppManifest.ItemSpec);
Assert.AreEqual (task.SdkVersion, plist.GetMinimumOSVersion (), "MinimumOSVersion");
}
[Test]
public void MainMinimumOSVersions ()
{
var dir = Cache.CreateTemporaryDirectory ();
var task = CreateTask (dir);
var mainPath = Path.Combine (dir, "Info.plist");
var main = new PDictionary ();
main.SetMinimumOSVersion ("14.0");
main.Save (mainPath);
task.AppManifest = new TaskItem (mainPath);
ExecuteTask (task);
var plist = PDictionary.FromFile (task.CompiledAppManifest.ItemSpec);
Assert.AreEqual ("14.0", plist.GetMinimumOSVersion (), "MinimumOSVersion");
}
[Test]
public void MultipleMinimumOSVersions ()
{
var dir = Cache.CreateTemporaryDirectory ();
var task = CreateTask (dir);
var mainPath = Path.Combine (dir, "Info.plist");
var main = new PDictionary ();
main.SetMinimumOSVersion ("14.0");
main.Save (mainPath);
// The version in the partial app manifest takes precedence.
var partialPath = Path.Combine (dir, "PartialAppManifest.plist");
var partial = new PDictionary ();
partial.SetMinimumOSVersion ("13.0");
partial.Save (partialPath);
task.AppManifest = new TaskItem (mainPath);
task.PartialAppManifests = new [] { new TaskItem (partialPath) };
ExecuteTask (task);
var plist = PDictionary.FromFile (task.CompiledAppManifest.ItemSpec);
Assert.AreEqual ("13.0", plist.GetMinimumOSVersion (), "MinimumOSVersion");
}
[Test]
public void ErrorWithMismatchedInfoPlistMinimumOSVersion ()
{
var dir = Cache.CreateTemporaryDirectory ();
var task = CreateTask (dir);
var plist = new PDictionary ();
plist.SetMinimumOSVersion ("10.0");
var manifest = Path.Combine (dir, "Info.plist");
plist.Save (manifest);
task.AppManifest = new TaskItem (manifest);
task.SupportedOSPlatformVersion = "11.0";
ExecuteTask (task, expectedErrorCount: 1);
Assert.AreEqual ("The MinimumOSVersion value in the Info.plist (10.0) does not match the SupportedOSPlatformVersion value (11.0) in the project file (if there is no SupportedOSPlatformVersion value in the project file, then a default value has been assumed). Either change the value in the Info.plist to match the SupportedOSPlatformVersion value, or remove the value in the Info.plist (and add a SupportedOSPlatformVersion value to the project file if it doesn't already exist).", Engine.Logger.ErrorEvents [0].Message);
}
[Test]
public void SupportedOSPlatformVersion ()
{
var dir = Cache.CreateTemporaryDirectory ();
var task = CreateTask (dir);
task.SupportedOSPlatformVersion = "11.0";
ExecuteTask (task);
var plist = PDictionary.FromFile (task.CompiledAppManifest.ItemSpec);
Assert.AreEqual ("11.0", plist.GetMinimumOSVersion (), "MinimumOSVersion");
}
[Test]
public void MacCatalystVersionCheck ()
{
var task = CreateTask (platform: ApplePlatform.MacCatalyst);
task.SupportedOSPlatformVersion = "14.2";
ExecuteTask (task);
var plist = PDictionary.FromFile (task.CompiledAppManifest.ItemSpec);
Assert.AreEqual ("11.0", plist.GetMinimumSystemVersion (), "MinimumOSVersion");
}
[Test]
public void MacCatalystVersionCheckUnmappedError ()
{
var task = CreateTask (platform: ApplePlatform.MacCatalyst);
task.SupportedOSPlatformVersion = "10.0";
ExecuteTask (task, expectedErrorCount: 1);
Assert.That (Engine.Logger.ErrorEvents [0].Message, Does.StartWith ("Could not map the Mac Catalyst version 10.0 to a corresponding macOS version. Valid Mac Catalyst versions are:"));
}
}
}