Merge main into net8.0.
This commit is contained in:
Коммит
86e898ea9f
14
Make.config
14
Make.config
|
@ -20,19 +20,7 @@ NUGET_VERSION_STABLE_COMMIT_DISTANCE_START=0
|
|||
|
||||
-include $(TOP)/Make.config.inc
|
||||
$(TOP)/Make.config.inc: $(TOP)/Make.config $(TOP)/mk/mono.mk
|
||||
@rm -f $@
|
||||
@printf "IOS_COMMIT_DISTANCE:=$(shell LANG=C; export LANG && git --git-dir $(TOP)/.git log `git --git-dir $(TOP)/.git blame -- ./Make.versions HEAD | grep IOS_PACKAGE_VERSION= | sed 's/ .*//' `..HEAD --oneline | wc -l | sed 's/ //g')\n" >> $@
|
||||
@printf "MAC_COMMIT_DISTANCE:=$(shell LANG=C; export LANG && git --git-dir $(TOP)/.git log `git --git-dir $(TOP)/.git blame -- ./Make.versions HEAD | grep MAC_PACKAGE_VERSION= | sed 's/ .*//' `..HEAD --oneline | wc -l | sed 's/ //g')\n" >> $@
|
||||
@#
|
||||
@printf "IOS_NUGET_COMMIT_DISTANCE:=$(shell LANG=C; export LANG; git --git-dir $(TOP)/.git log `git --git-dir $(TOP)/.git blame -- ./Make.versions HEAD | grep IOS_NUGET_OS_VERSION= | sed 's/ .*//' `..HEAD --oneline | wc -l | sed -e 's/ //g' -e "s/^/$(NUGET_VERSION_COMMIT_DISTANCE_START)+/" | bc)\\n" >> $@
|
||||
@printf "TVOS_NUGET_COMMIT_DISTANCE:=$(shell LANG=C; export LANG; git --git-dir $(TOP)/.git log `git --git-dir $(TOP)/.git blame -- ./Make.versions HEAD | grep TVOS_NUGET_OS_VERSION= | sed 's/ .*//' `..HEAD --oneline | wc -l | sed -e 's/ //g' -e "s/^/$(NUGET_VERSION_COMMIT_DISTANCE_START)+/" | bc)\\n" >> $@
|
||||
@printf "WATCHOS_NUGET_COMMIT_DISTANCE:=$(shell LANG=C; export LANG; git --git-dir $(TOP)/.git log `git --git-dir $(TOP)/.git blame -- ./Make.versions HEAD | grep WATCHOS_NUGET_OS_VERSION= | sed 's/ .*//' `..HEAD --oneline | wc -l | sed -e 's/ //g' -e "s/^/$(NUGET_VERSION_COMMIT_DISTANCE_START)+/" | bc)\\n" >> $@
|
||||
@printf "MACOS_NUGET_COMMIT_DISTANCE:=$(shell LANG=C; export LANG; git --git-dir $(TOP)/.git log `git --git-dir $(TOP)/.git blame -- ./Make.versions HEAD | grep MACOS_NUGET_OS_VERSION= | sed 's/ .*//' `..HEAD --oneline | wc -l | sed -e 's/ //g' -e "s/^/$(NUGET_VERSION_COMMIT_DISTANCE_START)+/" | bc)\\n" >> $@
|
||||
@printf "MACCATALYST_NUGET_COMMIT_DISTANCE:=$(shell LANG=C; export LANG; git --git-dir $(TOP)/.git log `git --git-dir $(TOP)/.git blame -- ./Make.versions HEAD | grep MACCATALYST_NUGET_OS_VERSION= | sed 's/ .*//' `..HEAD --oneline | wc -l | sed -e 's/ //g' -e "s/^/$(NUGET_VERSION_COMMIT_DISTANCE_START)+/" | bc)\\n" >> $@
|
||||
@printf "NUGET_STABLE_COMMIT_DISTANCE:=$(shell LANG=C; export LANG; git --git-dir $(TOP)/.git log `git --git-dir $(TOP)/.git blame -L '/^[#[:blank:]]*NUGET_RELEASE_BRANCH=/,+1' -- ./Make.config HEAD | sed 's/ .*//' `..HEAD --oneline | wc -l | sed -e 's/ //g' -e "s/^/$(NUGET_VERSION_STABLE_COMMIT_DISTANCE_START)+/" | bc)\\n" >> $@
|
||||
@#
|
||||
@if which ccache > /dev/null 2>&1; then printf "ENABLE_CCACHE=1\nexport CCACHE_BASEDIR=$(abspath $(TOP)/..)\n" >> $@; echo "Found ccache on the system, enabling it"; fi
|
||||
@if test -d $(TOP)/../maccore; then printf "ENABLE_XAMARIN=1\n" >> $@; echo "Detected the maccore repository, automatically enabled the Xamarin build"; fi
|
||||
$(Q) cd $(TOP) && ALL_DOTNET_PLATFORMS="$(ALL_DOTNET_PLATFORMS)" ./create-make-config.sh
|
||||
|
||||
include $(TOP)/Make.versions
|
||||
|
||||
|
|
|
@ -0,0 +1,49 @@
|
|||
#!/bin/bash -eu
|
||||
|
||||
set -o pipefail
|
||||
IFS=$'\n\t '
|
||||
|
||||
OUTPUT=Make.config.inc
|
||||
OUTPUT_FILE=Make.config.inc.tmp
|
||||
|
||||
rm -f "$OUTPUT_FILE" "$OUTPUT"
|
||||
|
||||
LANG=C
|
||||
export LANG
|
||||
|
||||
# Support for hardcoding a commit distance start offset.
|
||||
NUGET_VERSION_COMMIT_DISTANCE_START=0
|
||||
NUGET_VERSION_STABLE_COMMIT_DISTANCE_START=0
|
||||
|
||||
# Compute commit distances
|
||||
printf "IOS_COMMIT_DISTANCE:=$(git log $(git blame -- ./Make.versions HEAD | grep IOS_PACKAGE_VERSION= | sed 's/ .*//' )..HEAD --oneline | wc -l | sed 's/ //g')\n" >> "$OUTPUT_FILE"
|
||||
printf "MAC_COMMIT_DISTANCE:=$(git log $(git blame -- ./Make.versions HEAD | grep MAC_PACKAGE_VERSION= | sed 's/ .*//' )..HEAD --oneline | wc -l | sed 's/ //g')\n" >> "$OUTPUT_FILE"
|
||||
|
||||
for platform in $ALL_DOTNET_PLATFORMS; do
|
||||
PLATFORM=$(echo "$platform" | tr '[:lower:]' '[:upper:]')
|
||||
COMMIT=$(git blame -- ./Make.versions HEAD | grep "${PLATFORM}_NUGET_OS_VERSION=" | sed 's/ .*//')
|
||||
COMMIT_DISTANCE=$(git log "$COMMIT..HEAD" --oneline | wc -l | sed -e 's/ //g')
|
||||
TOTAL_DISTANCE=$((NUGET_VERSION_COMMIT_DISTANCE_START+COMMIT_DISTANCE))
|
||||
printf "${PLATFORM}_NUGET_COMMIT_DISTANCE:=$TOTAL_DISTANCE\\n" >> "$OUTPUT_FILE"
|
||||
done
|
||||
|
||||
STABLE_COMMIT=$(git blame -L '/^[#[:blank:]]*NUGET_RELEASE_BRANCH=/,+1' -- ./Make.config HEAD | sed 's/ .*//')
|
||||
STABLE_COMMIT_DISTANCE=$(git log "$STABLE_COMMIT..HEAD" --oneline | wc -l | sed -e 's/ //g')
|
||||
STABLE_TOTAL_DISTANCE=$((STABLE_COMMIT_DISTANCE+NUGET_VERSION_STABLE_COMMIT_DISTANCE_START))
|
||||
|
||||
printf "NUGET_STABLE_COMMIT_DISTANCE:=$STABLE_TOTAL_DISTANCE\\n" >> "$OUTPUT_FILE"
|
||||
|
||||
# Detect ccache
|
||||
if which ccache > /dev/null 2>&1; then
|
||||
printf "ENABLE_CCACHE=1\n" >> "$OUTPUT_FILE"
|
||||
printf "export CCACHE_BASEDIR=$(cd .. && pwd)\n" >> "$OUTPUT_FILE"
|
||||
echo "Found ccache on the system, enabling it"
|
||||
fi
|
||||
|
||||
# Detect maccore / xamarin
|
||||
if test -d ../maccore; then
|
||||
printf "ENABLE_XAMARIN=1\n" >> "$OUTPUT_FILE"
|
||||
echo "Detected the maccore repository, automatically enabled the Xamarin build"
|
||||
fi
|
||||
|
||||
mv "$OUTPUT_FILE" "$OUTPUT"
|
|
@ -8,6 +8,7 @@
|
|||
//
|
||||
|
||||
using System;
|
||||
using System.Threading;
|
||||
|
||||
using Foundation;
|
||||
using CoreFoundation;
|
||||
|
@ -77,16 +78,19 @@ namespace MonoTouchFixtures.CoreFoundation {
|
|||
public void TestNullNameAndObserver ()
|
||||
{
|
||||
var d = CFNotificationCenter.Local;
|
||||
bool mornNotification = false;
|
||||
var mornNotification = new ManualResetEvent (false);
|
||||
|
||||
var token = d.AddObserver (null, null, (n, i) => mornNotification = n == "MornNotification");
|
||||
var token = d.AddObserver (null, null, (n, i) => {
|
||||
if (n == "MornNotification")
|
||||
mornNotification.Set ();
|
||||
});
|
||||
|
||||
// When not listening for a specific name nor observing an specific object
|
||||
// we will get all notifications posted to NSNotificationCenter/Local CFNotificationCenter
|
||||
NSNotificationCenter.DefaultCenter.PostNotificationName ("MornNotification", null);
|
||||
|
||||
d.RemoveObserver (token);
|
||||
Assert.IsTrue (mornNotification);
|
||||
Assert.IsTrue (mornNotification.WaitOne (TimeSpan.FromSeconds (10)), "Didn't get a notification after waiting 10 seconds.");
|
||||
}
|
||||
|
||||
[Test]
|
||||
|
|
|
@ -8,11 +8,9 @@ using NUnit.Framework;
|
|||
using Xamarin.Tests;
|
||||
using System.Linq;
|
||||
|
||||
namespace Xamarin.MacDev.Tasks
|
||||
{
|
||||
namespace Xamarin.MacDev.Tasks {
|
||||
[TestFixture]
|
||||
public class FrameworkListTests
|
||||
{
|
||||
public class FrameworkListTests {
|
||||
[TestCase ("Xamarin.iOS-FrameworkList.xml.in")]
|
||||
[TestCase ("Xamarin.TVOS-FrameworkList.xml.in")]
|
||||
[TestCase ("Xamarin.WatchOS-FrameworkList.xml.in")]
|
||||
|
@ -23,7 +21,7 @@ namespace Xamarin.MacDev.Tasks
|
|||
Configuration.AssertLegacyXamarinAvailable ();
|
||||
|
||||
var fameworkListFileParts = frameworkListFile.Split ('-');
|
||||
string frameworkName = fameworkListFileParts[0];
|
||||
string frameworkName = fameworkListFileParts [0];
|
||||
switch (frameworkName) {
|
||||
case "Xamarin.iOS":
|
||||
if (!Configuration.include_ios)
|
||||
|
@ -43,7 +41,7 @@ namespace Xamarin.MacDev.Tasks
|
|||
break;
|
||||
}
|
||||
var isMac = frameworkName == "Xamarin.Mac";
|
||||
var isFull = fameworkListFileParts[1] == "Full";
|
||||
var isFull = fameworkListFileParts [1] == "Full";
|
||||
var frameworkListAssemblies = ScanFrameworkListXml (frameworkListFile, isMac);
|
||||
var installedAssemblies = ScanAssemblyDirectory (frameworkName, isMac, isFull);
|
||||
|
||||
|
@ -149,8 +147,7 @@ namespace Xamarin.MacDev.Tasks
|
|||
}
|
||||
}
|
||||
|
||||
class AssemblyInfo
|
||||
{
|
||||
class AssemblyInfo {
|
||||
public string Name;
|
||||
|
||||
public string Version;
|
||||
|
@ -181,7 +178,8 @@ namespace Xamarin.MacDev.Tasks
|
|||
PublicKeyToken = fn.Substring (i, j - i);
|
||||
}
|
||||
|
||||
public bool Equals (AssemblyInfo other) {
|
||||
public bool Equals (AssemblyInfo other)
|
||||
{
|
||||
// ignore Culture and InGac for equality since those are not mentioned in the FrameworkList.xml
|
||||
return other.Name == this.Name &&
|
||||
other.Version == this.Version &&
|
||||
|
|
|
@ -7,10 +7,8 @@ using NUnit.Framework;
|
|||
|
||||
using Xamarin.iOS.Tasks;
|
||||
|
||||
namespace Xamarin.MacDev.Tasks
|
||||
{
|
||||
class CustomBTouchTask : BTouch
|
||||
{
|
||||
namespace Xamarin.MacDev.Tasks {
|
||||
class CustomBTouchTask : BTouch {
|
||||
public string GetCommandLineCommands ()
|
||||
{
|
||||
return base.GenerateCommandLineCommands ();
|
||||
|
@ -18,15 +16,14 @@ namespace Xamarin.MacDev.Tasks
|
|||
}
|
||||
|
||||
[TestFixture]
|
||||
public class BTouchTaskTests : TestBase
|
||||
{
|
||||
public class BTouchTaskTests : TestBase {
|
||||
[Test]
|
||||
public void StandardCommandline ()
|
||||
{
|
||||
var task = CreateTask<CustomBTouchTask> ();
|
||||
|
||||
task.ApiDefinitions = new[] { new TaskItem ("apidefinition.cs") };
|
||||
task.References = new[] { new TaskItem ("a.dll"), new TaskItem ("b.dll"), new TaskItem ("c.dll") };
|
||||
task.ApiDefinitions = new [] { new TaskItem ("apidefinition.cs") };
|
||||
task.References = new [] { new TaskItem ("a.dll"), new TaskItem ("b.dll"), new TaskItem ("c.dll") };
|
||||
task.ResponseFilePath = Path.Combine (Cache.CreateTemporaryDirectory (), "response-file.txt");
|
||||
|
||||
var args = task.GetCommandLineCommands () + " " + File.ReadAllText (task.ResponseFilePath);
|
||||
|
@ -40,8 +37,8 @@ namespace Xamarin.MacDev.Tasks
|
|||
{
|
||||
var task = CreateTask<CustomBTouchTask> ();
|
||||
|
||||
task.ApiDefinitions = new[] { new TaskItem ("apidefinition.cs") };
|
||||
task.References = new[] { new TaskItem ("a.dll"), new TaskItem ("b.dll"), new TaskItem ("c.dll") };
|
||||
task.ApiDefinitions = new [] { new TaskItem ("apidefinition.cs") };
|
||||
task.References = new [] { new TaskItem ("a.dll"), new TaskItem ("b.dll"), new TaskItem ("c.dll") };
|
||||
task.ProjectDir = "~/"; // not important, but required (so can't be null)
|
||||
task.ResponseFilePath = Path.Combine (Cache.CreateTemporaryDirectory (), "response-file.txt");
|
||||
|
||||
|
|
|
@ -10,10 +10,8 @@ using Xamarin.MacDev;
|
|||
|
||||
#nullable enable
|
||||
|
||||
namespace Xamarin.MacDev.Tasks
|
||||
{
|
||||
class CustomCompileEntitlements : CompileEntitlements
|
||||
{
|
||||
namespace Xamarin.MacDev.Tasks {
|
||||
class CustomCompileEntitlements : CompileEntitlements {
|
||||
protected override MobileProvision? GetMobileProvision (MobileProvisionPlatform platform, string uuid)
|
||||
{
|
||||
if (File.Exists (ProvisioningProfile))
|
||||
|
@ -24,8 +22,7 @@ namespace Xamarin.MacDev.Tasks
|
|||
}
|
||||
|
||||
[TestFixture]
|
||||
public class CompileEntitlementsTaskTests : TestBase
|
||||
{
|
||||
public class CompileEntitlementsTaskTests : TestBase {
|
||||
CustomCompileEntitlements CreateEntitlementsTask (out string compiledEntitlements)
|
||||
{
|
||||
var task = CreateTask<CustomCompileEntitlements> ();
|
||||
|
@ -73,7 +70,7 @@ namespace Xamarin.MacDev.Tasks
|
|||
if (value is not null)
|
||||
dict ["Value"] = value;
|
||||
|
||||
var customEntitlements = new TaskItem[] {
|
||||
var customEntitlements = new TaskItem [] {
|
||||
new TaskItem ("com.xamarin.custom.entitlement", dict)
|
||||
};
|
||||
var task = CreateEntitlementsTask (out var compiledEntitlements);
|
||||
|
@ -93,7 +90,7 @@ namespace Xamarin.MacDev.Tasks
|
|||
{ "Type", "String" },
|
||||
{ "Value", value },
|
||||
};
|
||||
var customEntitlements = new TaskItem[] {
|
||||
var customEntitlements = new TaskItem [] {
|
||||
new TaskItem ("com.xamarin.custom.entitlement", dict)
|
||||
};
|
||||
var task = CreateEntitlementsTask (out var compiledEntitlements);
|
||||
|
@ -134,14 +131,14 @@ namespace Xamarin.MacDev.Tasks
|
|||
{ "Value", $"A;B;C{separator}D{separator}E" },
|
||||
{ "ArraySeparator", separator },
|
||||
};
|
||||
var customEntitlements = new TaskItem[] {
|
||||
var customEntitlements = new TaskItem [] {
|
||||
new TaskItem ("com.xamarin.custom.entitlement", dict)
|
||||
};
|
||||
var task = CreateEntitlementsTask(out var compiledEntitlements);
|
||||
var task = CreateEntitlementsTask (out var compiledEntitlements);
|
||||
task.TargetFrameworkMoniker = ".NETCoreApp,Version=v6.0,Profile=maccatalyst";
|
||||
task.CustomEntitlements = customEntitlements;
|
||||
ExecuteTask(task);
|
||||
var compiled = PDictionary.FromFile(compiledEntitlements);
|
||||
ExecuteTask (task);
|
||||
var compiled = PDictionary.FromFile (compiledEntitlements);
|
||||
var array = compiled.GetArray ("com.xamarin.custom.entitlement");
|
||||
Assert.NotNull (array, "array");
|
||||
Assert.AreEqual (new string [] { "A;B;C", "D", "E" }, array.ToStringArray (), "array contents");
|
||||
|
@ -160,28 +157,28 @@ namespace Xamarin.MacDev.Tasks
|
|||
[Test]
|
||||
public void AllowJit_True ()
|
||||
{
|
||||
var customEntitlements = new TaskItem[] {
|
||||
var customEntitlements = new TaskItem [] {
|
||||
new TaskItem ("com.apple.security.cs.allow-jit", new Dictionary<string, string> { { "Type", "Boolean" }, { "Value", "true" } }),
|
||||
};
|
||||
var task = CreateEntitlementsTask (out var compiledEntitlements);
|
||||
task.TargetFrameworkMoniker = ".NETCoreApp,Version=v6.0,Profile=maccatalyst";
|
||||
task.CustomEntitlements = customEntitlements;
|
||||
ExecuteTask (task);
|
||||
var compiled = PDictionary.FromFile(compiledEntitlements);
|
||||
var compiled = PDictionary.FromFile (compiledEntitlements);
|
||||
Assert.IsTrue (compiled.ContainsKey (EntitlementKeys.AllowExecutionOfJitCode), "#1");
|
||||
Assert.IsTrue (compiled.Get<PBoolean>(EntitlementKeys.AllowExecutionOfJitCode).Value, "#2");
|
||||
Assert.IsTrue (compiled.Get<PBoolean> (EntitlementKeys.AllowExecutionOfJitCode).Value, "#2");
|
||||
}
|
||||
|
||||
[Test]
|
||||
public void AllowJit_False ()
|
||||
{
|
||||
var customEntitlements = new TaskItem[] {
|
||||
var customEntitlements = new TaskItem [] {
|
||||
new TaskItem ("com.apple.security.cs.allow-jit", new Dictionary<string, string> { { "Type", "Boolean" }, { "Value", "false" } }),
|
||||
};
|
||||
var task = CreateEntitlementsTask(out var compiledEntitlements);
|
||||
var task = CreateEntitlementsTask (out var compiledEntitlements);
|
||||
task.TargetFrameworkMoniker = ".NETCoreApp,Version=v6.0,Profile=maccatalyst";
|
||||
task.CustomEntitlements = customEntitlements;
|
||||
ExecuteTask(task);
|
||||
ExecuteTask (task);
|
||||
var compiled = PDictionary.FromFile (compiledEntitlements);
|
||||
Assert.IsTrue (compiled.ContainsKey (EntitlementKeys.AllowExecutionOfJitCode), "#1");
|
||||
Assert.IsFalse (compiled.Get<PBoolean> (EntitlementKeys.AllowExecutionOfJitCode).Value, "#2");
|
||||
|
@ -190,14 +187,14 @@ namespace Xamarin.MacDev.Tasks
|
|||
[Test]
|
||||
public void AllowJit_None ()
|
||||
{
|
||||
var customEntitlements = new TaskItem[] {
|
||||
var customEntitlements = new TaskItem [] {
|
||||
new TaskItem ("com.apple.security.cs.allow-jit", new Dictionary<string, string> { { "Type", "Remove" } }),
|
||||
};
|
||||
var task = CreateEntitlementsTask(out var compiledEntitlements);
|
||||
var task = CreateEntitlementsTask (out var compiledEntitlements);
|
||||
task.TargetFrameworkMoniker = ".NETCoreApp,Version=v6.0,Profile=maccatalyst";
|
||||
task.CustomEntitlements = customEntitlements;
|
||||
ExecuteTask(task);
|
||||
var compiled = PDictionary.FromFile(compiledEntitlements);
|
||||
ExecuteTask (task);
|
||||
var compiled = PDictionary.FromFile (compiledEntitlements);
|
||||
Assert.IsFalse (compiled.ContainsKey (EntitlementKeys.AllowExecutionOfJitCode), "#1");
|
||||
}
|
||||
|
||||
|
|
|
@ -510,7 +510,7 @@ namespace Xamarin.MacDev.Tasks {
|
|||
Environment.CurrentDirectory = currentDir;
|
||||
}
|
||||
}
|
||||
void VerifyCodesigningResults (CodesignInfo [] infos, ITaskItem[] outputCodesignItems, ApplePlatform platform)
|
||||
void VerifyCodesigningResults (CodesignInfo [] infos, ITaskItem [] outputCodesignItems, ApplePlatform platform)
|
||||
{
|
||||
Assert.That (outputCodesignItems.Select (v => v.ItemSpec), Is.Unique, "Uniqueness");
|
||||
|
||||
|
|
|
@ -150,7 +150,7 @@ namespace Xamarin.MacDev.Tasks {
|
|||
Assert.AreEqual (manifest, File.ReadAllText (Path.Combine (directory, "manifest")), "Manifest");
|
||||
}
|
||||
|
||||
ITaskItem[] CreateNativeReferences (string tmpdir, bool symlinks)
|
||||
ITaskItem [] CreateNativeReferences (string tmpdir, bool symlinks)
|
||||
{
|
||||
var rv = new List<ITaskItem> ();
|
||||
|
||||
|
|
|
@ -7,11 +7,9 @@ using Xamarin.iOS.Tasks;
|
|||
|
||||
using Xamarin.Tests;
|
||||
|
||||
namespace Xamarin.MacDev.Tasks
|
||||
{
|
||||
namespace Xamarin.MacDev.Tasks {
|
||||
[TestFixture]
|
||||
public class DetectSdkLocationsTaskTests : TestBase
|
||||
{
|
||||
public class DetectSdkLocationsTaskTests : TestBase {
|
||||
[Test]
|
||||
public void InvalidXamarinSdkRoot ()
|
||||
{
|
||||
|
|
|
@ -76,8 +76,7 @@ namespace Xamarin.MacDev.Tasks {
|
|||
</dict>
|
||||
</plist>";
|
||||
|
||||
public class EntitlementTestCase
|
||||
{
|
||||
public class EntitlementTestCase {
|
||||
public string Name = string.Empty;
|
||||
public string Entitlements = string.Empty;
|
||||
public bool Required;
|
||||
|
@ -90,9 +89,9 @@ namespace Xamarin.MacDev.Tasks {
|
|||
}
|
||||
}
|
||||
|
||||
static EntitlementTestCase[] GetEntitlementsTestCases ()
|
||||
static EntitlementTestCase [] GetEntitlementsTestCases ()
|
||||
{
|
||||
return new EntitlementTestCase[]
|
||||
return new EntitlementTestCase []
|
||||
{
|
||||
new EntitlementTestCase { Name = nameof (EmptyEntitlements1), Entitlements = EmptyEntitlements1, Required = false, IsSimulator = true },
|
||||
new EntitlementTestCase { Name = nameof (EmptyEntitlements2), Entitlements = EmptyEntitlements2, Required = false, IsSimulator = true },
|
||||
|
|
|
@ -11,11 +11,9 @@ using Xamarin.MacDev.Tasks;
|
|||
using Xamarin.Tests;
|
||||
using Xamarin.Utils;
|
||||
|
||||
namespace Xamarin.MacDev.Tasks
|
||||
{
|
||||
namespace Xamarin.MacDev.Tasks {
|
||||
[TestFixture]
|
||||
public abstract class GeneratePlistTaskTests_Core : TestBase
|
||||
{
|
||||
public abstract class GeneratePlistTaskTests_Core : TestBase {
|
||||
protected const string appBundleName = "BundleName";
|
||||
protected const string assemblyName = "AssemblyName";
|
||||
protected const string bundleIdentifier = "DefaultIdentifier";
|
||||
|
|
|
@ -5,12 +5,10 @@ using Xamarin.MacDev;
|
|||
using Xamarin.Tests;
|
||||
using Xamarin.Utils;
|
||||
|
||||
namespace Xamarin.MacDev.Tasks
|
||||
{
|
||||
namespace Xamarin.MacDev.Tasks {
|
||||
[TestFixture (true)]
|
||||
[TestFixture (false)]
|
||||
public class GeneratePlistTaskTests_iOS : GeneratePlistTaskTests_Core
|
||||
{
|
||||
public class GeneratePlistTaskTests_iOS : GeneratePlistTaskTests_Core {
|
||||
protected override ApplePlatform Platform => ApplePlatform.iOS;
|
||||
|
||||
public GeneratePlistTaskTests_iOS (bool isDotNet)
|
||||
|
|
|
@ -1,12 +1,10 @@
|
|||
using NUnit.Framework;
|
||||
using Xamarin.MacDev;
|
||||
|
||||
namespace Xamarin.MacDev.Tasks
|
||||
{
|
||||
namespace Xamarin.MacDev.Tasks {
|
||||
[TestFixture (true)]
|
||||
[TestFixture (false)]
|
||||
public class GeneratePlistTaskTests_iOS_AppExtension : GeneratePlistTaskTests_iOS
|
||||
{
|
||||
public class GeneratePlistTaskTests_iOS_AppExtension : GeneratePlistTaskTests_iOS {
|
||||
public GeneratePlistTaskTests_iOS_AppExtension (bool isDotNet)
|
||||
: base (isDotNet)
|
||||
{
|
||||
|
|
|
@ -4,12 +4,10 @@ using Xamarin.MacDev;
|
|||
using Xamarin.Tests;
|
||||
using Xamarin.Utils;
|
||||
|
||||
namespace Xamarin.MacDev.Tasks
|
||||
{
|
||||
namespace Xamarin.MacDev.Tasks {
|
||||
[TestFixture (true)]
|
||||
[TestFixture (false)]
|
||||
public class GeneratePlistTaskTests_tvOS : GeneratePlistTaskTests_Core
|
||||
{
|
||||
public class GeneratePlistTaskTests_tvOS : GeneratePlistTaskTests_Core {
|
||||
protected override ApplePlatform Platform => ApplePlatform.TVOS;
|
||||
|
||||
public GeneratePlistTaskTests_tvOS (bool isDotNet)
|
||||
|
@ -23,7 +21,7 @@ namespace Xamarin.MacDev.Tasks
|
|||
|
||||
base.ConfigureTask (isDotNet);
|
||||
Task.DefaultSdkVersion = Sdks.TVOS.GetClosestInstalledSdk (AppleSdkVersion.V9_0, true).ToString ();
|
||||
Task.TargetFrameworkMoniker = isDotNet ? TargetFramework.DotNet_tvOS_String : TargetFramework.Xamarin_TVOS_1_0.ToString ();
|
||||
Task.TargetFrameworkMoniker = isDotNet ? TargetFramework.DotNet_tvOS_String : TargetFramework.Xamarin_TVOS_1_0.ToString ();
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
|
@ -4,12 +4,10 @@ using Xamarin.MacDev;
|
|||
using Xamarin.Tests;
|
||||
using Xamarin.Utils;
|
||||
|
||||
namespace Xamarin.MacDev.Tasks
|
||||
{
|
||||
namespace Xamarin.MacDev.Tasks {
|
||||
[TestFixture (true)]
|
||||
[TestFixture (false)]
|
||||
public abstract class GeneratePlistTaskTests_watchOS: GeneratePlistTaskTests_Core
|
||||
{
|
||||
public abstract class GeneratePlistTaskTests_watchOS : GeneratePlistTaskTests_Core {
|
||||
protected override ApplePlatform Platform => ApplePlatform.WatchOS;
|
||||
|
||||
public GeneratePlistTaskTests_watchOS (bool isDotNet)
|
||||
|
|
|
@ -1,11 +1,9 @@
|
|||
using NUnit.Framework;
|
||||
|
||||
namespace Xamarin.MacDev.Tasks
|
||||
{
|
||||
namespace Xamarin.MacDev.Tasks {
|
||||
[TestFixture (true)]
|
||||
[TestFixture (false)]
|
||||
public class GeneratePlistTaskTests_watchOS_WatchKitApp : GeneratePlistTaskTests_watchOS
|
||||
{
|
||||
public class GeneratePlistTaskTests_watchOS_WatchKitApp : GeneratePlistTaskTests_watchOS {
|
||||
public GeneratePlistTaskTests_watchOS_WatchKitApp (bool isDotNet)
|
||||
: base (isDotNet)
|
||||
{
|
||||
|
|
|
@ -2,12 +2,10 @@ using System.Linq;
|
|||
using NUnit.Framework;
|
||||
using Xamarin.MacDev;
|
||||
|
||||
namespace Xamarin.MacDev.Tasks
|
||||
{
|
||||
namespace Xamarin.MacDev.Tasks {
|
||||
[TestFixture (true)]
|
||||
[TestFixture (false)]
|
||||
public class GeneratePlistTaskTests_watchOS_WatchKitExtension : GeneratePlistTaskTests_watchOS
|
||||
{
|
||||
public class GeneratePlistTaskTests_watchOS_WatchKitExtension : GeneratePlistTaskTests_watchOS {
|
||||
public GeneratePlistTaskTests_watchOS_WatchKitExtension (bool isDotNet)
|
||||
: base (isDotNet)
|
||||
{
|
||||
|
|
|
@ -4,11 +4,9 @@ using NUnit.Framework;
|
|||
|
||||
using Xamarin.MacDev.Tasks;
|
||||
|
||||
namespace Xamarin.MacDev.Tasks
|
||||
{
|
||||
namespace Xamarin.MacDev.Tasks {
|
||||
[TestFixture]
|
||||
public class GetBundleNameTaskTests : TestBase
|
||||
{
|
||||
public class GetBundleNameTaskTests : TestBase {
|
||||
[Test]
|
||||
public void GetBundleName_MissingName ()
|
||||
{
|
||||
|
|
|
@ -13,11 +13,9 @@ using Xamarin.MacDev.Tasks;
|
|||
using Xamarin.Tests;
|
||||
using Xamarin.Utils;
|
||||
|
||||
namespace Xamarin.MacDev.Tasks
|
||||
{
|
||||
namespace Xamarin.MacDev.Tasks {
|
||||
[TestFixture]
|
||||
public class IBToolTaskTests : TestBase
|
||||
{
|
||||
public class IBToolTaskTests : TestBase {
|
||||
IBTool CreateIBToolTask (ApplePlatform framework, string projectDir, string intermediateOutputPath)
|
||||
{
|
||||
var interfaceDefinitions = new List<ITaskItem> ();
|
||||
|
@ -158,7 +156,7 @@ namespace Xamarin.MacDev.Tasks
|
|||
Assert.That (unexpectedResource, Is.Empty, "No extra resources");
|
||||
}
|
||||
|
||||
IBTool CreateIBToolTask (ApplePlatform framework, string projectDir, string intermediateOutputPath, params string[] fileNames)
|
||||
IBTool CreateIBToolTask (ApplePlatform framework, string projectDir, string intermediateOutputPath, params string [] fileNames)
|
||||
{
|
||||
var ibtool = CreateIBToolTask (framework, projectDir, intermediateOutputPath);
|
||||
var interfaceDefinitions = new List<ITaskItem> ();
|
||||
|
@ -171,7 +169,7 @@ namespace Xamarin.MacDev.Tasks
|
|||
return ibtool;
|
||||
}
|
||||
|
||||
void TestGenericAndDeviceSpecificXibsGeneric (params string[] fileNames)
|
||||
void TestGenericAndDeviceSpecificXibsGeneric (params string [] fileNames)
|
||||
{
|
||||
var tmp = Cache.CreateTemporaryDirectory ("advanced-ibtool");
|
||||
IBTool ibtool;
|
||||
|
|
|
@ -44,8 +44,8 @@ namespace Xamarin.MacDev.Tasks {
|
|||
|
||||
Assert.IsFalse (task.Execute (), "Execute failure");
|
||||
Assert.AreEqual (1, Engine.Logger.ErrorEvents.Count, "ErrorCount");
|
||||
bool isTranslated = Engine.Logger.ErrorEvents[0].Message.Contains (errorMessage);
|
||||
Assert.IsTrue (isTranslated, $"Should contain \"{errorMessage}\", but instead has value: \"{Engine.Logger.ErrorEvents[0].Message}\"");
|
||||
bool isTranslated = Engine.Logger.ErrorEvents [0].Message.Contains (errorMessage);
|
||||
Assert.IsTrue (isTranslated, $"Should contain \"{errorMessage}\", but instead has value: \"{Engine.Logger.ErrorEvents [0].Message}\"");
|
||||
} finally {
|
||||
Thread.CurrentThread.CurrentUICulture = originalUICulture;
|
||||
Thread.CurrentThread.CurrentCulture = originalCulture;
|
||||
|
@ -78,7 +78,7 @@ namespace Xamarin.MacDev.Tasks {
|
|||
string newCultureError = TranslateError (culture, errorCode);
|
||||
|
||||
Assert.AreNotEqual (englishError, newCultureError, $"\"{errorCode}\" is not translated in {culture}.");
|
||||
} catch (NullReferenceException){
|
||||
} catch (NullReferenceException) {
|
||||
Assert.Fail ($"Error code \"{errorCode}\" was not found");
|
||||
} finally {
|
||||
Thread.CurrentThread.CurrentUICulture = originalUICulture;
|
||||
|
|
|
@ -10,10 +10,8 @@ using NUnit.Framework;
|
|||
using Xamarin.iOS.Tasks;
|
||||
using Xamarin.MacDev;
|
||||
|
||||
namespace Xamarin.MacDev.Tasks
|
||||
{
|
||||
class CustomMTouchTask : MTouch
|
||||
{
|
||||
namespace Xamarin.MacDev.Tasks {
|
||||
class CustomMTouchTask : MTouch {
|
||||
public CustomMTouchTask ()
|
||||
{
|
||||
Architectures = "Default";
|
||||
|
@ -26,7 +24,7 @@ namespace Xamarin.MacDev.Tasks
|
|||
SdkIsSimulator = true;
|
||||
UseLlvm = false;
|
||||
UseThumb = false;
|
||||
AppExtensionReferences = new Microsoft.Build.Framework.ITaskItem[] { };
|
||||
AppExtensionReferences = new Microsoft.Build.Framework.ITaskItem [] { };
|
||||
}
|
||||
|
||||
public string ResponseFile = "";
|
||||
|
@ -47,8 +45,7 @@ namespace Xamarin.MacDev.Tasks
|
|||
}
|
||||
|
||||
[TestFixture]
|
||||
public class MTouchTaskTests : TestBase
|
||||
{
|
||||
public class MTouchTaskTests : TestBase {
|
||||
CustomMTouchTask Task {
|
||||
get; set;
|
||||
}
|
||||
|
@ -141,7 +138,7 @@ namespace Xamarin.MacDev.Tasks
|
|||
[Test]
|
||||
public void StandardCommandline_WithBitcodeEnabled_iOS ()
|
||||
{
|
||||
MTouchEnableBitcode("Xamarin.iOS");
|
||||
MTouchEnableBitcode ("Xamarin.iOS");
|
||||
|
||||
var ex = Assert.Throws<InvalidOperationException> (() => Task.GenerateCommandLineCommands (), "Exception");
|
||||
Assert.AreEqual ("Bitcode is currently not supported on iOS.", ex.Message, "Message");
|
||||
|
@ -150,7 +147,7 @@ namespace Xamarin.MacDev.Tasks
|
|||
[Test]
|
||||
public void StandardCommandline_WithBitcodeEnabled_watchOS ()
|
||||
{
|
||||
MTouchEnableBitcode("Xamarin.WatchOS");
|
||||
MTouchEnableBitcode ("Xamarin.WatchOS");
|
||||
|
||||
var args = Task.GenerateCommandLineCommands ();
|
||||
Assert.IsTrue (Task.ResponseFile.Contains ("--bitcode=full"));
|
||||
|
@ -159,7 +156,7 @@ namespace Xamarin.MacDev.Tasks
|
|||
[Test]
|
||||
public void StandardCommandline_WithBitcodeEnabled_tvOS ()
|
||||
{
|
||||
MTouchEnableBitcode("Xamarin.TVOS");
|
||||
MTouchEnableBitcode ("Xamarin.TVOS");
|
||||
|
||||
var args = Task.GenerateCommandLineCommands ();
|
||||
Assert.IsTrue (Task.ResponseFile.Contains ("--bitcode=asmonly"));
|
||||
|
@ -211,14 +208,14 @@ namespace Xamarin.MacDev.Tasks
|
|||
}
|
||||
|
||||
[Test]
|
||||
public void ReferenceFrameworkFileResolution_WhenReceivedReferencePathExists()
|
||||
public void ReferenceFrameworkFileResolution_WhenReceivedReferencePathExists ()
|
||||
{
|
||||
using (var sdk = new TempSdk()) {
|
||||
using (var sdk = new TempSdk ()) {
|
||||
Task.TargetFrameworkMoniker = "MonoTouch,v1.0";
|
||||
|
||||
var expectedPath = Path.Combine (Cache.CreateTemporaryDirectory (), "tmpfile");
|
||||
|
||||
Task.References = new[] { new TaskItem (expectedPath, new Dictionary<string, string> { { "FrameworkFile", "true" } }) };
|
||||
Task.References = new [] { new TaskItem (expectedPath, new Dictionary<string, string> { { "FrameworkFile", "true" } }) };
|
||||
|
||||
var args = Task.GenerateCommandLineCommands ();
|
||||
|
||||
|
@ -237,16 +234,16 @@ namespace Xamarin.MacDev.Tasks
|
|||
Assert.IsTrue (args.Contains ($"@{Task.ResponseFilePath}"), "#@response-file");
|
||||
}
|
||||
|
||||
[TestCase("Xamarin.iOS,v1.0", "Xamarin.iOS")]
|
||||
public void ReferenceFrameworkFileResolution_WhenFacadeFileExists(string targetFrameworkMoniker, string frameworkDir)
|
||||
[TestCase ("Xamarin.iOS,v1.0", "Xamarin.iOS")]
|
||||
public void ReferenceFrameworkFileResolution_WhenFacadeFileExists (string targetFrameworkMoniker, string frameworkDir)
|
||||
{
|
||||
using (var sdk = new TempSdk()) {
|
||||
using (var sdk = new TempSdk ()) {
|
||||
Task.TargetFrameworkMoniker = targetFrameworkMoniker;
|
||||
var expectedPath = Path.Combine (Sdks.XamIOS.LibDir, "mono", frameworkDir, "Facades", "System.Collections.dll");
|
||||
Directory.CreateDirectory (Path.GetDirectoryName (expectedPath));
|
||||
File.WriteAllText (expectedPath, "");
|
||||
|
||||
Task.References = new[] { new TaskItem ("System.Collections.dll", new Dictionary<string, string> { { "FrameworkFile", "true" } }) };
|
||||
Task.References = new [] { new TaskItem ("System.Collections.dll", new Dictionary<string, string> { { "FrameworkFile", "true" } }) };
|
||||
|
||||
var args = Task.GenerateCommandLineCommands ();
|
||||
|
||||
|
@ -254,7 +251,7 @@ namespace Xamarin.MacDev.Tasks
|
|||
// In Windows, the path slashes are escaped.
|
||||
expectedPath = expectedPath.Replace ("\\", "\\\\");
|
||||
|
||||
Assert.IsTrue (Task.ResponseFile.Contains (expectedPath), string.Format(
|
||||
Assert.IsTrue (Task.ResponseFile.Contains (expectedPath), string.Format (
|
||||
@"Failed to resolve facade assembly to the Sdk path.
|
||||
Expected path:{0}
|
||||
|
||||
|
@ -262,16 +259,16 @@ namespace Xamarin.MacDev.Tasks
|
|||
}
|
||||
}
|
||||
|
||||
[TestCase("Xamarin.iOS,v1.0", "Xamarin.iOS")]
|
||||
public void ReferenceFrameworkFileResolution_WhenFrameworkFileExists(string targetFrameworkMoniker, string frameworkDir)
|
||||
[TestCase ("Xamarin.iOS,v1.0", "Xamarin.iOS")]
|
||||
public void ReferenceFrameworkFileResolution_WhenFrameworkFileExists (string targetFrameworkMoniker, string frameworkDir)
|
||||
{
|
||||
using (var sdk = new TempSdk()) {
|
||||
using (var sdk = new TempSdk ()) {
|
||||
Task.TargetFrameworkMoniker = targetFrameworkMoniker;
|
||||
var expectedPath = Path.Combine (Sdks.XamIOS.LibDir, "mono", frameworkDir, "System.Collections.dll");
|
||||
Directory.CreateDirectory (Path.GetDirectoryName (expectedPath));
|
||||
File.WriteAllText (expectedPath, "");
|
||||
|
||||
Task.References = new[] { new TaskItem ("System.Collections.dll", new Dictionary<string, string> { { "FrameworkFile", "true" } }) };
|
||||
Task.References = new [] { new TaskItem ("System.Collections.dll", new Dictionary<string, string> { { "FrameworkFile", "true" } }) };
|
||||
|
||||
var args = Task.GenerateCommandLineCommands ();
|
||||
|
||||
|
@ -279,7 +276,7 @@ namespace Xamarin.MacDev.Tasks
|
|||
// In Windows, the path slashes are escaped.
|
||||
expectedPath = expectedPath.Replace ("\\", "\\\\");
|
||||
|
||||
Assert.IsTrue (Task.ResponseFile.Contains (expectedPath), string.Format(
|
||||
Assert.IsTrue (Task.ResponseFile.Contains (expectedPath), string.Format (
|
||||
@"Failed to resolve facade assembly to the Sdk path.
|
||||
Expected path:{0}
|
||||
|
||||
|
@ -287,13 +284,13 @@ namespace Xamarin.MacDev.Tasks
|
|||
}
|
||||
}
|
||||
|
||||
[TestCase("Xamarin.iOS,v1.0", "Xamarin.iOS")]
|
||||
public void ReferenceFrameworkFileResolution_WhenResolutionFails(string targetFrameworkMoniker, string frameworkDir)
|
||||
[TestCase ("Xamarin.iOS,v1.0", "Xamarin.iOS")]
|
||||
public void ReferenceFrameworkFileResolution_WhenResolutionFails (string targetFrameworkMoniker, string frameworkDir)
|
||||
{
|
||||
using (var sdk = new TempSdk()) {
|
||||
using (var sdk = new TempSdk ()) {
|
||||
Task.TargetFrameworkMoniker = targetFrameworkMoniker;
|
||||
|
||||
Task.References = new[] { new TaskItem ("/usr/foo/System.Collections.dll", new Dictionary<string, string> { { "FrameworkFile", "true" } }) };
|
||||
Task.References = new [] { new TaskItem ("/usr/foo/System.Collections.dll", new Dictionary<string, string> { { "FrameworkFile", "true" } }) };
|
||||
|
||||
var args = Task.GenerateCommandLineCommands ();
|
||||
|
||||
|
@ -349,8 +346,7 @@ namespace Xamarin.MacDev.Tasks
|
|||
Assert.That (items.Count (), Is.EqualTo (3), "framework files");
|
||||
}
|
||||
|
||||
class TempSdk : IDisposable
|
||||
{
|
||||
class TempSdk : IDisposable {
|
||||
MonoTouchSdk sdk;
|
||||
|
||||
public TempSdk ()
|
||||
|
|
|
@ -27,7 +27,7 @@ namespace Xamarin.MacDev.Tasks {
|
|||
RunMake (Path.Combine (Configuration.RootPath, "tests", "common", "TestProjects", "ComplexAssembly"), environment: env);
|
||||
}
|
||||
|
||||
static void RunMake (string directory, Dictionary<string, string> environment = null)
|
||||
static void RunMake (string directory, Dictionary<string, string> environment = null)
|
||||
{
|
||||
var arguments = new List<string> {
|
||||
"-C",
|
||||
|
@ -51,7 +51,7 @@ namespace Xamarin.MacDev.Tasks {
|
|||
}
|
||||
}
|
||||
|
||||
MergeAppBundles CreateTask (string outputBundle, params string[] inputBundles)
|
||||
MergeAppBundles CreateTask (string outputBundle, params string [] inputBundles)
|
||||
{
|
||||
var inputItems = new List<TaskItem> ();
|
||||
for (var i = 0; i < inputBundles.Length; i++) {
|
||||
|
@ -66,7 +66,7 @@ namespace Xamarin.MacDev.Tasks {
|
|||
}
|
||||
|
||||
// Create two app bundles, one with fileA, and one with fileB, in the root directory
|
||||
string[] CreateAppBundles (string fileA, string fileB, string fileName = null)
|
||||
string [] CreateAppBundles (string fileA, string fileB, string fileName = null)
|
||||
{
|
||||
var appBundleA = Path.Combine (Cache.CreateTemporaryDirectory (), "MergeMe.app");
|
||||
var appBundleB = Path.Combine (Cache.CreateTemporaryDirectory (), "MergeMe.app");
|
||||
|
@ -77,7 +77,7 @@ namespace Xamarin.MacDev.Tasks {
|
|||
return new string [] { appBundleA, appBundleB };
|
||||
}
|
||||
|
||||
string CreateAppBundle (string directory, params string[] files)
|
||||
string CreateAppBundle (string directory, params string [] files)
|
||||
{
|
||||
var appBundle = Path.Combine (Cache.CreateTemporaryDirectory (), "MergeMe.app");
|
||||
Directory.CreateDirectory (appBundle);
|
||||
|
|
|
@ -6,12 +6,10 @@ using NUnit.Framework;
|
|||
|
||||
using Xamarin.MacDev.Tasks;
|
||||
|
||||
namespace Xamarin.MacDev.Tasks
|
||||
{
|
||||
namespace Xamarin.MacDev.Tasks {
|
||||
[TestFixture]
|
||||
public class ParseBundlerArgumentsTests : TestBase
|
||||
{
|
||||
class CustomParseBundlerArguments : ParseBundlerArgumentsTaskBase {}
|
||||
public class ParseBundlerArgumentsTests : TestBase {
|
||||
class CustomParseBundlerArguments : ParseBundlerArgumentsTaskBase { }
|
||||
|
||||
[Test]
|
||||
public void NoExtraArgs ()
|
||||
|
|
|
@ -5,18 +5,16 @@ using NUnit.Framework;
|
|||
using Xamarin.MacDev;
|
||||
using Xamarin.MacDev.Tasks;
|
||||
|
||||
namespace Xamarin.MacDev.Tasks
|
||||
{
|
||||
namespace Xamarin.MacDev.Tasks {
|
||||
[TestFixture]
|
||||
public class PropertyListEditorTaskTests : TestBase
|
||||
{
|
||||
public class PropertyListEditorTaskTests : TestBase {
|
||||
static void CheckArray (PArray array, PArray expected)
|
||||
{
|
||||
Assert.AreEqual (expected.Count, array.Count, "Unexpected number of array elements");
|
||||
|
||||
for (int i = 0; i < expected.Count; i++) {
|
||||
Assert.AreEqual (expected[i].Type, array[i].Type, "Type-mismatch for array element {0}", i);
|
||||
CheckValue (array[i], expected[i]);
|
||||
Assert.AreEqual (expected [i].Type, array [i].Type, "Type-mismatch for array element {0}", i);
|
||||
CheckValue (array [i], expected [i]);
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -215,7 +213,7 @@ namespace Xamarin.MacDev.Tasks
|
|||
files.Add ("icon2");
|
||||
|
||||
var expected = (PDictionary) plist.Clone ();
|
||||
files[0] = new PString ("icon");
|
||||
files [0] = new PString ("icon");
|
||||
|
||||
TestExecuteTask (plist, PropertyListEditorAction.Set, ":CFBundleIcons:CFBundlePrimaryIcon:CFBundleIconFiles:0", "string", "icon0", expected);
|
||||
|
||||
|
@ -239,7 +237,7 @@ namespace Xamarin.MacDev.Tasks
|
|||
TestExecuteTask (plist, PropertyListEditorAction.Clear, null, "integer", null, new PNumber (0));
|
||||
TestExecuteTask (plist, PropertyListEditorAction.Clear, null, "real", null, new PReal (0));
|
||||
TestExecuteTask (plist, PropertyListEditorAction.Clear, null, "string", null, new PString (string.Empty));
|
||||
TestExecuteTask (plist, PropertyListEditorAction.Clear, null, "data", null, new PData (new byte[0]));
|
||||
TestExecuteTask (plist, PropertyListEditorAction.Clear, null, "data", null, new PData (new byte [0]));
|
||||
}
|
||||
|
||||
[Test]
|
||||
|
|
|
@ -12,7 +12,7 @@ using Xamarin.Utils;
|
|||
namespace Xamarin.MacDev.Tasks {
|
||||
[TestFixture]
|
||||
public class ReadAppManifestTaskTests : TestBase {
|
||||
ReadAppManifest CreateTask (ApplePlatform platform = ApplePlatform.iOS, Action<PDictionary>? createDictionary = null)
|
||||
ReadAppManifest CreateTask (ApplePlatform platform = ApplePlatform.iOS, Action<PDictionary>? createDictionary = null)
|
||||
{
|
||||
var tmpdir = Cache.CreateTemporaryDirectory ();
|
||||
|
||||
|
|
|
@ -17,11 +17,11 @@ namespace Xamarin.MacDev.Tasks.Tests {
|
|||
[TestCase ("watchOS", null, "arm64_32", "watchos-arm64_32_armv7k/Universal.framework/Universal")]
|
||||
[TestCase ("watchOS", "simulator", "x86_64", "watchos-arm64_x86_64-simulator/Universal.framework/Universal")] // subset
|
||||
[TestCase ("macOS", null, "x86_64", "macos-arm64_x86_64/Universal.framework/Universal")] // subset
|
||||
// multiple arch request (all must be present)
|
||||
// multiple arch request (all must be present)
|
||||
[TestCase ("macOS", null, "x86_64, arm64", "macos-arm64_x86_64/Universal.framework/Universal")]
|
||||
// failure to resolve requested architecture
|
||||
[TestCase ("iOS", "simulator", "i386, x86_64", "")] // i386 not available
|
||||
// failure to resolve mismatched variant
|
||||
// failure to resolve mismatched variant
|
||||
[TestCase ("macOS", "maccatalyst", "x86_64", "")] // maccatalyst not available on macOS (it's on iOS)
|
||||
public void Xcode12_x (string platform, string variant, string architecture, string expected)
|
||||
{
|
||||
|
|
|
@ -55,7 +55,7 @@ namespace Xamarin.MacDev.Tasks {
|
|||
RedirectStandardOutput = true,
|
||||
RedirectStandardError = true,
|
||||
};
|
||||
psi.EnvironmentVariables ["DEVELOPER_DIR"] =Configuration.xcode_root;
|
||||
psi.EnvironmentVariables ["DEVELOPER_DIR"] = Configuration.xcode_root;
|
||||
psi.EnvironmentVariables.Remove ("XCODE_DEVELOPER_DIR_PATH"); // VSfM sets XCODE_DEVELOPER_DIR_PATH, which confuses the command-line tools if it doesn't match xcode-select, so just unset it.
|
||||
var proc = Process.Start (psi);
|
||||
|
||||
|
|
|
@ -2,10 +2,8 @@ using System.Collections.Generic;
|
|||
|
||||
using Microsoft.Build.Framework;
|
||||
|
||||
namespace Xamarin.MacDev.Tasks
|
||||
{
|
||||
public class Logger : ILogger
|
||||
{
|
||||
namespace Xamarin.MacDev.Tasks {
|
||||
public class Logger : ILogger {
|
||||
public List<CustomBuildEventArgs> CustomEvents {
|
||||
get; set;
|
||||
}
|
||||
|
|
|
@ -7,10 +7,8 @@ using NUnit.Framework;
|
|||
|
||||
using Xamarin.Tests;
|
||||
|
||||
namespace Xamarin.MacDev.Tasks
|
||||
{
|
||||
public abstract class TestBase
|
||||
{
|
||||
namespace Xamarin.MacDev.Tasks {
|
||||
public abstract class TestBase {
|
||||
TestEngine engine;
|
||||
public TestEngine Engine {
|
||||
get {
|
||||
|
@ -80,7 +78,7 @@ namespace Xamarin.MacDev.Tasks
|
|||
protected string CreateTempFile (string path)
|
||||
{
|
||||
path = Path.Combine (Cache.CreateTemporaryDirectory ("msbuild-tests"), path);
|
||||
using (new FileStream (path, FileMode.CreateNew)) {}
|
||||
using (new FileStream (path, FileMode.CreateNew)) { }
|
||||
return path;
|
||||
}
|
||||
}
|
||||
|
|
|
@ -6,11 +6,9 @@ using Microsoft.Build.Framework;
|
|||
using Microsoft.Build.Evaluation;
|
||||
using Microsoft.Build.Logging;
|
||||
|
||||
namespace Xamarin.MacDev.Tasks
|
||||
{
|
||||
namespace Xamarin.MacDev.Tasks {
|
||||
|
||||
public class TestEngine : IBuildEngine, IBuildEngine2, IBuildEngine3, IBuildEngine4
|
||||
{
|
||||
public class TestEngine : IBuildEngine, IBuildEngine2, IBuildEngine3, IBuildEngine4 {
|
||||
public Logger Logger {
|
||||
get; set;
|
||||
}
|
||||
|
@ -61,7 +59,7 @@ namespace Xamarin.MacDev.Tasks
|
|||
get { return true; }
|
||||
}
|
||||
public int LineNumberOfTaskNode {
|
||||
get {return 0;}
|
||||
get { return 0; }
|
||||
}
|
||||
public string ProjectFileOfTaskNode {
|
||||
get { return ""; }
|
||||
|
|
|
@ -10,11 +10,9 @@ using Xamarin.MacDev;
|
|||
using Xamarin.MacDev.Tasks;
|
||||
using Xamarin.Utils;
|
||||
|
||||
namespace Xamarin.MacDev.Tasks
|
||||
{
|
||||
namespace Xamarin.MacDev.Tasks {
|
||||
[TestFixture]
|
||||
public class UtilityTests
|
||||
{
|
||||
public class UtilityTests {
|
||||
[Test]
|
||||
public void TestAbsoluteToRelativePath ()
|
||||
{
|
||||
|
|
|
@ -11,12 +11,10 @@ using Xamarin;
|
|||
using Xamarin.Tests;
|
||||
using Xamarin.Utils;
|
||||
|
||||
namespace Xamarin.MMP.Tests
|
||||
{
|
||||
namespace Xamarin.MMP.Tests {
|
||||
[TestFixture]
|
||||
public partial class MMPTests
|
||||
{
|
||||
void RunMSBuildTest (Action <string> test, string directory_name = null)
|
||||
public partial class MMPTests {
|
||||
void RunMSBuildTest (Action<string> test, string directory_name = null)
|
||||
{
|
||||
test (Cache.CreateTemporaryDirectory (directory_name ?? "msbuild-tests"));
|
||||
}
|
||||
|
@ -150,7 +148,7 @@ namespace Xamarin.MMP.Tests
|
|||
}
|
||||
|
||||
[Test]
|
||||
public void BuildUnifiedProject_WithJustNativeRefNoLinkWith_Builds()
|
||||
public void BuildUnifiedProject_WithJustNativeRefNoLinkWith_Builds ()
|
||||
{
|
||||
Configuration.IgnoreIfIgnoredPlatform (ApplePlatform.MacOSX);
|
||||
Configuration.AssertLegacyXamarinAvailable (); // Investigate whether this test should be ported to .NET
|
||||
|
|
|
@ -4,12 +4,10 @@ using System.IO;
|
|||
using Xamarin.Tests;
|
||||
using Xamarin.Utils;
|
||||
|
||||
namespace Xamarin.MacDev.Tasks
|
||||
{
|
||||
namespace Xamarin.MacDev.Tasks {
|
||||
[TestFixture ("iPhone")]
|
||||
[TestFixture ("iPhoneSimulator")]
|
||||
public class BindingProject : TestBase
|
||||
{
|
||||
public class BindingProject : TestBase {
|
||||
public BindingProject (string platform)
|
||||
: base (platform)
|
||||
{
|
||||
|
|
|
@ -10,11 +10,9 @@ using NUnit.Framework;
|
|||
using Xamarin.Tests;
|
||||
using Xamarin.Utils;
|
||||
|
||||
namespace Xamarin.MacDev.Tasks
|
||||
{
|
||||
namespace Xamarin.MacDev.Tasks {
|
||||
[TestFixture]
|
||||
public class Bug60536 : ProjectTest
|
||||
{
|
||||
public class Bug60536 : ProjectTest {
|
||||
public Bug60536 ()
|
||||
: base ("iPhoneSimulator", "Debug")
|
||||
{
|
||||
|
@ -55,12 +53,12 @@ namespace Xamarin.MacDev.Tasks
|
|||
RunTarget (MonoTouchProject, "Build", expectedErrorCount: 1);
|
||||
|
||||
var expectedFile = Path.Combine ("obj", Platform, Config, "actool", "cloned-assets", "Assets.xcassets", "AppIcon.appiconset", "Contents.json");
|
||||
Assert.AreEqual (expectedFile, Engine.Logger.ErrorEvents[0].File, "File");
|
||||
Assert.AreEqual (197, Engine.Logger.ErrorEvents[0].LineNumber, "LineNumber");
|
||||
Assert.AreEqual (4, Engine.Logger.ErrorEvents[0].ColumnNumber, "ColumnNumber");
|
||||
Assert.AreEqual (197, Engine.Logger.ErrorEvents[0].EndLineNumber, "EndLineNumber");
|
||||
Assert.AreEqual (4, Engine.Logger.ErrorEvents[0].EndColumnNumber, "EndColumnNumber");
|
||||
Assert.AreEqual ("']' is invalid without a matching open. LineNumber: 196 | BytePositionInLine: 3.", Engine.Logger.ErrorEvents[0].Message, "Message");
|
||||
Assert.AreEqual (expectedFile, Engine.Logger.ErrorEvents [0].File, "File");
|
||||
Assert.AreEqual (197, Engine.Logger.ErrorEvents [0].LineNumber, "LineNumber");
|
||||
Assert.AreEqual (4, Engine.Logger.ErrorEvents [0].ColumnNumber, "ColumnNumber");
|
||||
Assert.AreEqual (197, Engine.Logger.ErrorEvents [0].EndLineNumber, "EndLineNumber");
|
||||
Assert.AreEqual (4, Engine.Logger.ErrorEvents [0].EndColumnNumber, "EndColumnNumber");
|
||||
Assert.AreEqual ("']' is invalid without a matching open. LineNumber: 196 | BytePositionInLine: 3.", Engine.Logger.ErrorEvents [0].Message, "Message");
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
|
@ -11,15 +11,13 @@ using Xamarin.MacDev;
|
|||
using Xamarin.Tests;
|
||||
using Xamarin.Utils;
|
||||
|
||||
namespace Xamarin.MacDev.Tasks
|
||||
{
|
||||
namespace Xamarin.MacDev.Tasks {
|
||||
[TestFixture ("iPhone", "Debug")]
|
||||
[TestFixture ("iPhone", "Release")]
|
||||
// Note: Disabled because Simulator builds aren't consistently signed or not-signed, while device builds are.
|
||||
//[TestFixture ("iPhoneSimulator", "Debug")]
|
||||
//[TestFixture ("iPhoneSimulator", "Release")]
|
||||
public class CodesignAppBundle : ProjectTest
|
||||
{
|
||||
public class CodesignAppBundle : ProjectTest {
|
||||
public CodesignAppBundle (string platform, string configuration)
|
||||
: base (platform, configuration)
|
||||
{
|
||||
|
@ -93,7 +91,7 @@ namespace Xamarin.MacDev.Tasks
|
|||
if (Path.GetFileName (file) == "MyTabbedApplication" || Path.GetExtension (file) == ".dylib")
|
||||
continue;
|
||||
|
||||
Assert.AreEqual (timestamps[file], newTimestamps[file], "App Bundle timestamp changed: " + file);
|
||||
Assert.AreEqual (timestamps [file], newTimestamps [file], "App Bundle timestamp changed: " + file);
|
||||
}
|
||||
|
||||
if (Platform != "iPhoneSimulator") {
|
||||
|
@ -103,9 +101,9 @@ namespace Xamarin.MacDev.Tasks
|
|||
foreach (var file in dsymTimestamps.Keys) {
|
||||
// The Info.plist should be newer because it gets touched
|
||||
if (Path.GetFileName (file) == "Info.plist") {
|
||||
Assert.IsTrue (dsymTimestamps[file] < newDsymTimestamps[file], "App Bundle dSYMs Info.plist not touched: " + file);
|
||||
Assert.IsTrue (dsymTimestamps [file] < newDsymTimestamps [file], "App Bundle dSYMs Info.plist not touched: " + file);
|
||||
} else {
|
||||
Assert.AreEqual (dsymTimestamps[file], newDsymTimestamps[file], "App Bundle dSYMs changed: " + file);
|
||||
Assert.AreEqual (dsymTimestamps [file], newDsymTimestamps [file], "App Bundle dSYMs changed: " + file);
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -115,7 +113,7 @@ namespace Xamarin.MacDev.Tasks
|
|||
// Note: we could fix this by not using `ditto` and instead implementing this ourselves to only overwrite files if they've changed
|
||||
// and then setting some [Output] params that specify whether or not we need to re-codesign and/or strip debug symbols.
|
||||
foreach (var file in appexDsymTimestamps.Keys)
|
||||
Assert.IsTrue (appexDsymTimestamps[file] < newAppexDsymTimestamps[file], "App Extension dSYMs should be newer: " + file);
|
||||
Assert.IsTrue (appexDsymTimestamps [file] < newAppexDsymTimestamps [file], "App Extension dSYMs should be newer: " + file);
|
||||
}
|
||||
}
|
||||
|
||||
|
|
|
@ -10,12 +10,10 @@ using NUnit.Framework;
|
|||
using Xamarin.Tests;
|
||||
using Xamarin.Utils;
|
||||
|
||||
namespace Xamarin.MacDev.Tasks
|
||||
{
|
||||
namespace Xamarin.MacDev.Tasks {
|
||||
// [TestFixture ("iPhone")] // Skip this to speed things up a bit.
|
||||
[TestFixture ("iPhoneSimulator")]
|
||||
public class CompileSceneKitAssetsTest : ProjectTest
|
||||
{
|
||||
public class CompileSceneKitAssetsTest : ProjectTest {
|
||||
public CompileSceneKitAssetsTest (string platform) : base (platform)
|
||||
{
|
||||
}
|
||||
|
|
|
@ -9,19 +9,17 @@ using Xamarin.Utils;
|
|||
|
||||
using NUnit.Framework;
|
||||
|
||||
namespace Xamarin.MacDev.Tasks
|
||||
{
|
||||
namespace Xamarin.MacDev.Tasks {
|
||||
[TestFixture ("iPhone")]
|
||||
[TestFixture ("iPhoneSimulator")]
|
||||
public class CoreMLCompiler : ProjectTest
|
||||
{
|
||||
public class CoreMLCompiler : ProjectTest {
|
||||
public CoreMLCompiler (string platform) : base (platform)
|
||||
{
|
||||
}
|
||||
|
||||
void AssertCompiledModelExists (string modelName)
|
||||
{
|
||||
var expected = new string[] { "coremldata.bin", "model.espresso.net", "model.espresso.shape", "model.espresso.weights", "model/coremldata.bin", "neural_network_optionals/coremldata.bin" };
|
||||
var expected = new string [] { "coremldata.bin", "model.espresso.net", "model.espresso.shape", "model.espresso.weights", "model/coremldata.bin", "neural_network_optionals/coremldata.bin" };
|
||||
var mlmodelc = Path.Combine (AppBundlePath, modelName + ".mlmodelc");
|
||||
|
||||
Assert.IsTrue (Directory.Exists (mlmodelc));
|
||||
|
|
|
@ -25,7 +25,7 @@ namespace Xamarin.MacDev.Tasks {
|
|||
var proj = SetupProjectPaths ("NativeExtensionEmbedding/managed/ManagedContainer");
|
||||
MonoTouchProject = proj;
|
||||
|
||||
var xcodeProjectFolder = Path.Combine (proj.ProjectPath , "..", "..", "native");
|
||||
var xcodeProjectFolder = Path.Combine (proj.ProjectPath, "..", "..", "native");
|
||||
string [] xcodeBuildArgs = new [] { "-configuration", "Debug", "-target", "NativeTodayExtension", "-sdk", Platform == "iPhoneSimulator" ? "iphonesimulator" : "iphoneos" };
|
||||
var env = new System.Collections.Generic.Dictionary<string, string> { { "DEVELOPER_DIR", Configuration.XcodeLocation } };
|
||||
Assert.AreEqual (0, ExecutionHelper.Execute ("/usr/bin/xcodebuild", xcodeBuildArgs.Concat (new [] { "clean" }).ToList (), xcodeProjectFolder, Console.WriteLine, Console.Error.WriteLine));
|
||||
|
|
|
@ -6,9 +6,8 @@ using Xamarin.Utils;
|
|||
namespace Xamarin.MacDev.Tasks {
|
||||
[TestFixture ("iPhone")]
|
||||
[TestFixture ("iPhoneSimulator")]
|
||||
public class ActionTests : ExtensionTestBase
|
||||
{
|
||||
public ActionTests (string platform) : base (platform)
|
||||
public class ActionTests : ExtensionTestBase {
|
||||
public ActionTests (string platform) : base (platform)
|
||||
{
|
||||
}
|
||||
|
||||
|
|
|
@ -9,16 +9,17 @@ namespace Xamarin.MacDev.Tasks {
|
|||
[TestFixture ("iPhone")]
|
||||
[TestFixture ("iPhoneSimulator")]
|
||||
public class CustomKeyboardTests : ExtensionTestBase {
|
||||
public CustomKeyboardTests(string platform) : base(platform) {
|
||||
ExpectedAppFiles = new string [] {
|
||||
"MainStoryboard_iPad.storyboardc",
|
||||
"MainStoryboard_iPhone.storyboardc",
|
||||
public CustomKeyboardTests (string platform) : base (platform)
|
||||
{
|
||||
ExpectedAppFiles = new string [] {
|
||||
"MainStoryboard_iPad.storyboardc",
|
||||
"MainStoryboard_iPhone.storyboardc",
|
||||
"default.metallib"
|
||||
};
|
||||
}
|
||||
|
||||
[Test]
|
||||
public void BasicTest ()
|
||||
public void BasicTest ()
|
||||
{
|
||||
Configuration.IgnoreIfIgnoredPlatform (ApplePlatform.iOS);
|
||||
Configuration.AssertLegacyXamarinAvailable (); // Investigate whether this test should be ported to .NET
|
||||
|
|
|
@ -9,12 +9,12 @@ namespace Xamarin.MacDev.Tasks {
|
|||
[TestFixture ("iPhoneSimulator")]
|
||||
public class DocumentPickerTests : ExtensionTestBase {
|
||||
|
||||
public DocumentPickerTests (string platform) : base(platform)
|
||||
public DocumentPickerTests (string platform) : base (platform)
|
||||
{
|
||||
}
|
||||
|
||||
[Test]
|
||||
public void BasicTest ()
|
||||
public void BasicTest ()
|
||||
{
|
||||
Configuration.IgnoreIfIgnoredPlatform (ApplePlatform.iOS);
|
||||
Configuration.AssertLegacyXamarinAvailable (); // Investigate whether this test should be ported to .NET
|
||||
|
|
|
@ -5,8 +5,7 @@ using NUnit.Framework;
|
|||
|
||||
using Xamarin.Tests;
|
||||
|
||||
namespace Xamarin.MacDev.Tasks
|
||||
{
|
||||
namespace Xamarin.MacDev.Tasks {
|
||||
public class ExtensionTestBase : TestBase {
|
||||
public ExtensionTestBase () { }
|
||||
|
||||
|
@ -30,7 +29,7 @@ namespace Xamarin.MacDev.Tasks
|
|||
|
||||
RunTarget (mtouchPaths, "Clean");
|
||||
Assert.IsFalse (Directory.Exists (AppBundlePath), "App bundle exists after cleanup: {0} ", AppBundlePath);
|
||||
|
||||
|
||||
RunTarget (mtouchPaths, "Build", expectedErrorCount: expectedErrorCount);
|
||||
|
||||
if (expectedErrorCount > 0)
|
||||
|
@ -38,11 +37,11 @@ namespace Xamarin.MacDev.Tasks
|
|||
|
||||
Assert.IsTrue (Directory.Exists (AppBundlePath), "App Bundle does not exist: {0} ", AppBundlePath);
|
||||
|
||||
TestPList (AppBundlePath, new string[] {"CFBundleExecutable", "CFBundleVersion"});
|
||||
TestPList (AppBundlePath, new string [] { "CFBundleExecutable", "CFBundleVersion" });
|
||||
|
||||
Assert.IsTrue (Directory.Exists (extensionPath), "Appex directory does not exist: {0} ", extensionPath);
|
||||
|
||||
TestPList (extensionPath, new string[] {"CFBundleExecutable", "CFBundleVersion"});
|
||||
TestPList (extensionPath, new string [] { "CFBundleExecutable", "CFBundleVersion" });
|
||||
|
||||
TestFilesExists (AppBundlePath, ExpectedAppFiles);
|
||||
TestFilesDoNotExist (AppBundlePath, UnexpectedAppFiles);
|
||||
|
|
|
@ -8,18 +8,18 @@ namespace Xamarin.MacDev.Tasks {
|
|||
[TestFixture ("iPhoneSimulator")]
|
||||
public class WatchKit : ExtensionTestBase {
|
||||
|
||||
public WatchKit (string platform) : base(platform)
|
||||
public WatchKit (string platform) : base (platform)
|
||||
{
|
||||
}
|
||||
|
||||
[Test]
|
||||
public void BasicTest ()
|
||||
public void BasicTest ()
|
||||
{
|
||||
Configuration.IgnoreIfIgnoredPlatform (ApplePlatform.WatchOS);
|
||||
Configuration.AssertLegacyXamarinAvailable ();
|
||||
|
||||
BuildExtension ("MyWatchApp", "MyWatchKitExtension", expectedErrorCount: 1);
|
||||
Assert.AreEqual ("Xamarin.iOS 14+ does not support watchOS 1 apps. Please migrate your project to watchOS 2+.", Engine.Logger.ErrorEvents[0].Message, "WK 1 error message");
|
||||
Assert.AreEqual ("Xamarin.iOS 14+ does not support watchOS 1 apps. Please migrate your project to watchOS 2+.", Engine.Logger.ErrorEvents [0].Message, "WK 1 error message");
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
|
@ -11,12 +11,12 @@ namespace Xamarin.MacDev.Tasks {
|
|||
[TestFixture ("iPhoneSimulator")]
|
||||
public class WatchKit2 : ExtensionTestBase {
|
||||
|
||||
public WatchKit2 (string platform) : base(platform)
|
||||
public WatchKit2 (string platform) : base (platform)
|
||||
{
|
||||
}
|
||||
|
||||
[Test]
|
||||
public void BasicTest ()
|
||||
public void BasicTest ()
|
||||
{
|
||||
Configuration.IgnoreIfIgnoredPlatform (ApplePlatform.WatchOS);
|
||||
Configuration.AssertLegacyXamarinAvailable (); // Investigate whether this test should be ported to .NET
|
||||
|
|
|
@ -3,12 +3,10 @@ using NUnit.Framework;
|
|||
using Xamarin.Tests;
|
||||
using Xamarin.Utils;
|
||||
|
||||
namespace Xamarin.MacDev.Tasks
|
||||
{
|
||||
namespace Xamarin.MacDev.Tasks {
|
||||
[TestFixture ("iPhone")]
|
||||
[TestFixture ("iPhoneSimulator")]
|
||||
public class IBToolLinking : ProjectTest
|
||||
{
|
||||
public class IBToolLinking : ProjectTest {
|
||||
public IBToolLinking (string platform) : base (platform)
|
||||
{
|
||||
}
|
||||
|
|
|
@ -5,13 +5,11 @@ using NUnit.Framework;
|
|||
using Xamarin.Tests;
|
||||
using Xamarin.Utils;
|
||||
|
||||
namespace Xamarin.MacDev.Tasks
|
||||
{
|
||||
namespace Xamarin.MacDev.Tasks {
|
||||
[TestFixture ("iPhone")]
|
||||
[TestFixture ("iPhoneSimulator")]
|
||||
public class LinkedAssets : ProjectTest
|
||||
{
|
||||
static readonly string[] IconNames = { "AppIcon29x29.png", "AppIcon29x29@2x.png", "AppIcon40x40@2x.png", "AppIcon57x57.png", "AppIcon57x57@2x.png", "AppIcon60x60@2x.png" };
|
||||
public class LinkedAssets : ProjectTest {
|
||||
static readonly string [] IconNames = { "AppIcon29x29.png", "AppIcon29x29@2x.png", "AppIcon40x40@2x.png", "AppIcon57x57.png", "AppIcon57x57@2x.png", "AppIcon60x60@2x.png" };
|
||||
|
||||
public LinkedAssets (string platform) : base (platform)
|
||||
{
|
||||
|
|
|
@ -12,8 +12,8 @@ namespace Xamarin.MacDev.Tasks {
|
|||
[TestFixture ("iPhone")]
|
||||
[TestFixture ("iPhoneSimulator")]
|
||||
public class NativeReferencesTests : ProjectTest {
|
||||
|
||||
public NativeReferencesTests (string platform) : base (platform)
|
||||
|
||||
public NativeReferencesTests (string platform) : base (platform)
|
||||
{
|
||||
}
|
||||
|
||||
|
@ -49,7 +49,7 @@ namespace Xamarin.MacDev.Tasks {
|
|||
{
|
||||
Configuration.IgnoreIfIgnoredPlatform (ApplePlatform.iOS);
|
||||
Configuration.AssertLegacyXamarinAvailable (); // Investigate whether this test should be ported to .NET
|
||||
|
||||
|
||||
if (Platform.Contains ("Simulator"))
|
||||
return; // incremental builds on the simulator doesn't make much sense.
|
||||
|
||||
|
|
|
@ -6,8 +6,7 @@ using NUnit.Framework;
|
|||
using Xamarin.Tests;
|
||||
using Xamarin.Utils;
|
||||
|
||||
namespace Xamarin.MacDev.Tasks
|
||||
{
|
||||
namespace Xamarin.MacDev.Tasks {
|
||||
[TestFixture ("iPhone")]
|
||||
[TestFixture ("iPhoneSimulator")]
|
||||
public class NativeReferencesNoEmbedding : ProjectTest {
|
||||
|
@ -80,7 +79,7 @@ namespace Xamarin.MacDev.Tasks
|
|||
ClearMessages ();
|
||||
|
||||
// No change build should not
|
||||
BuildProjectNoEmbedding (bindingLib, clean : false);
|
||||
BuildProjectNoEmbedding (bindingLib, clean: false);
|
||||
Assert.False (GetMessages ().Contains (CreatePackageString), "Rebuild build did create package?");
|
||||
ClearMessages ();
|
||||
|
||||
|
|
|
@ -6,12 +6,10 @@ using NUnit.Framework;
|
|||
using Xamarin.Tests;
|
||||
using Xamarin.Utils;
|
||||
|
||||
namespace Xamarin.MacDev.Tasks
|
||||
{
|
||||
namespace Xamarin.MacDev.Tasks {
|
||||
[TestFixture ("iPhone")]
|
||||
[TestFixture ("iPhoneSimulator")]
|
||||
public class ProjectReferenceTests : ProjectTest
|
||||
{
|
||||
public class ProjectReferenceTests : ProjectTest {
|
||||
|
||||
public ProjectReferenceTests (string platform) : base (platform)
|
||||
{
|
||||
|
|
|
@ -6,8 +6,7 @@ using NUnit.Framework;
|
|||
|
||||
using Xamarin.Tests;
|
||||
|
||||
namespace Xamarin.MacDev.Tasks
|
||||
{
|
||||
namespace Xamarin.MacDev.Tasks {
|
||||
public class ProjectTest : TestBase {
|
||||
public ProjectTest (string platform)
|
||||
: base (platform)
|
||||
|
|
|
@ -9,7 +9,7 @@ namespace Xamarin.MacDev.Tasks {
|
|||
[TestFixture ("iPhone")]
|
||||
[TestFixture ("iPhoneSimulator")]
|
||||
public class ProjectWithFrameworksTests : ExtensionTestBase {
|
||||
public ProjectWithFrameworksTests (string platform) : base (platform)
|
||||
public ProjectWithFrameworksTests (string platform) : base (platform)
|
||||
{
|
||||
}
|
||||
|
||||
|
|
|
@ -5,12 +5,10 @@ using NUnit.Framework;
|
|||
using Xamarin.Tests;
|
||||
using Xamarin.Utils;
|
||||
|
||||
namespace Xamarin.MacDev.Tasks
|
||||
{
|
||||
namespace Xamarin.MacDev.Tasks {
|
||||
[TestFixture ("iPhone")]
|
||||
[TestFixture ("iPhoneSimulator")]
|
||||
public class ProjectWithSpacesTests : ProjectTest
|
||||
{
|
||||
public class ProjectWithSpacesTests : ProjectTest {
|
||||
public ProjectWithSpacesTests (string platform) : base (platform)
|
||||
{
|
||||
}
|
||||
|
|
|
@ -7,11 +7,9 @@ using NUnit.Framework;
|
|||
using Xamarin.Tests;
|
||||
using Xamarin.Utils;
|
||||
|
||||
namespace Xamarin.MacDev.Tasks
|
||||
{
|
||||
namespace Xamarin.MacDev.Tasks {
|
||||
[TestFixture ("iPhone")]
|
||||
public class ReleaseBuild : ProjectTest
|
||||
{
|
||||
public class ReleaseBuild : ProjectTest {
|
||||
public ReleaseBuild (string platform)
|
||||
: base (platform, "Release")
|
||||
{
|
||||
|
@ -52,10 +50,10 @@ namespace Xamarin.MacDev.Tasks
|
|||
var newDSymTimestamps = Directory.EnumerateFiles (dsymDir, "*.*", SearchOption.AllDirectories).ToDictionary (file => file, file => GetLastModified (file));
|
||||
|
||||
foreach (var file in timestamps.Keys)
|
||||
Assert.AreEqual (timestamps[file], newTimestamps[file], "#1: " + file);
|
||||
Assert.AreEqual (timestamps [file], newTimestamps [file], "#1: " + file);
|
||||
|
||||
foreach (var file in dsymTimestamps.Keys)
|
||||
Assert.AreEqual (dsymTimestamps[file], newDSymTimestamps[file], "#2: " + file);
|
||||
Assert.AreEqual (dsymTimestamps [file], newDSymTimestamps [file], "#2: " + file);
|
||||
|
||||
EnsureFilestampChange ();
|
||||
|
||||
|
@ -78,7 +76,7 @@ namespace Xamarin.MacDev.Tasks
|
|||
} else if (fileName == "MyReleaseBuild") {
|
||||
// the executable must of course be modified
|
||||
isModificationExpected = true;
|
||||
} else if (fileName == "CodeResources") {
|
||||
} else if (fileName == "CodeResources") {
|
||||
// the signature has of course changed too
|
||||
isModificationExpected = true;
|
||||
} else if (fileName.EndsWith (".dll", StringComparison.Ordinal) || fileName.EndsWith (".exe", StringComparison.Ordinal)) {
|
||||
|
@ -87,13 +85,13 @@ namespace Xamarin.MacDev.Tasks
|
|||
}
|
||||
|
||||
if (isModificationExpected)
|
||||
Assert.AreNotEqual (timestamps[file], newTimestamps[file], "#3: " + file);
|
||||
Assert.AreNotEqual (timestamps [file], newTimestamps [file], "#3: " + file);
|
||||
else
|
||||
Assert.AreEqual (timestamps[file], newTimestamps[file], "#3: " + file);
|
||||
Assert.AreEqual (timestamps [file], newTimestamps [file], "#3: " + file);
|
||||
}
|
||||
|
||||
foreach (var file in dsymTimestamps.Keys)
|
||||
Assert.AreNotEqual (dsymTimestamps[file], newDSymTimestamps[file], "#4: " + file);
|
||||
Assert.AreNotEqual (dsymTimestamps [file], newDSymTimestamps [file], "#4: " + file);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
|
@ -6,10 +6,8 @@ using NUnit.Framework;
|
|||
using Xamarin.Tests;
|
||||
using Xamarin.Utils;
|
||||
|
||||
namespace Xamarin.MacDev.Tasks
|
||||
{
|
||||
public class ResponseFileArguments : ProjectTest
|
||||
{
|
||||
namespace Xamarin.MacDev.Tasks {
|
||||
public class ResponseFileArguments : ProjectTest {
|
||||
public ResponseFileArguments () : base ("iPhoneSimulator")
|
||||
{
|
||||
}
|
||||
|
|
|
@ -12,8 +12,8 @@ namespace Xamarin.MacDev.Tasks {
|
|||
[TestFixture ("iPhone")]
|
||||
[TestFixture ("iPhoneSimulator")]
|
||||
public class SystemMemoryReferenceTests : ProjectTest {
|
||||
|
||||
public SystemMemoryReferenceTests (string platform) : base (platform)
|
||||
|
||||
public SystemMemoryReferenceTests (string platform) : base (platform)
|
||||
{
|
||||
}
|
||||
|
||||
|
|
|
@ -5,18 +5,16 @@ using NUnit.Framework;
|
|||
using Xamarin.Tests;
|
||||
using Xamarin.Utils;
|
||||
|
||||
namespace Xamarin.MacDev.Tasks
|
||||
{
|
||||
namespace Xamarin.MacDev.Tasks {
|
||||
[TestFixture ("iPhone")]
|
||||
[TestFixture ("iPhoneSimulator")]
|
||||
public class TVAppTests : ExtensionTestBase
|
||||
{
|
||||
public class TVAppTests : ExtensionTestBase {
|
||||
public TVAppTests (string platform) : base (platform)
|
||||
{
|
||||
}
|
||||
|
||||
[Test]
|
||||
public void BasicTest()
|
||||
public void BasicTest ()
|
||||
{
|
||||
Configuration.IgnoreIfIgnoredPlatform (ApplePlatform.TVOS);
|
||||
Configuration.AssertLegacyXamarinAvailable (); // Investigate whether this test should be ported to .NET
|
||||
|
|
|
@ -4,12 +4,10 @@ using NUnit.Framework;
|
|||
using Xamarin.Tests;
|
||||
using Xamarin.Utils;
|
||||
|
||||
namespace Xamarin.MacDev.Tasks
|
||||
{
|
||||
namespace Xamarin.MacDev.Tasks {
|
||||
[TestFixture ("iPhone")]
|
||||
[TestFixture ("iPhoneSimulator")]
|
||||
public class XamarinForms : ProjectTest
|
||||
{
|
||||
public class XamarinForms : ProjectTest {
|
||||
public XamarinForms (string platform) : base (platform)
|
||||
{
|
||||
}
|
||||
|
|
|
@ -6,11 +6,9 @@ using NUnit.Framework;
|
|||
using Xamarin.Tests;
|
||||
using Xamarin.Utils;
|
||||
|
||||
namespace Xamarin.MMP.Tests
|
||||
{
|
||||
namespace Xamarin.MMP.Tests {
|
||||
[TestFixture]
|
||||
public partial class MMPTests
|
||||
{
|
||||
public partial class MMPTests {
|
||||
public string RoslynTestProjectRoot => Path.Combine (Configuration.TestProjectsDirectory, "RoslynTestApp");
|
||||
|
||||
[Test]
|
||||
|
|
|
@ -7,11 +7,9 @@ using NUnit.Framework;
|
|||
using Xamarin.Tests;
|
||||
using Xamarin.Utils;
|
||||
|
||||
namespace Xamarin.MMP.Tests
|
||||
{
|
||||
namespace Xamarin.MMP.Tests {
|
||||
[TestFixture]
|
||||
public class RuntimeTests
|
||||
{
|
||||
public class RuntimeTests {
|
||||
[Test]
|
||||
public void AssemblyRegistration ()
|
||||
{
|
||||
|
|
|
@ -9,17 +9,15 @@ using Xamarin.MacDev;
|
|||
using Xamarin.Tests;
|
||||
using Xamarin.Utils;
|
||||
|
||||
namespace Xamarin.MacDev.Tasks
|
||||
{
|
||||
namespace Xamarin.MacDev.Tasks {
|
||||
[TestFixture]
|
||||
public class TargetTests : TestBase
|
||||
{
|
||||
public class TargetTests : TestBase {
|
||||
public TargetTests ()
|
||||
: base ("iPhoneSimulator")
|
||||
{
|
||||
}
|
||||
|
||||
string[] ExpectedExecutableBundleResources {
|
||||
string [] ExpectedExecutableBundleResources {
|
||||
get {
|
||||
var files = new [] {
|
||||
Path.Combine ("Folder", "BundleResource.txt"),
|
||||
|
@ -50,7 +48,7 @@ namespace Xamarin.MacDev.Tasks
|
|||
}
|
||||
}
|
||||
|
||||
string[] ExpectedLibraryBundleResources {
|
||||
string [] ExpectedLibraryBundleResources {
|
||||
get {
|
||||
var files = new [] {
|
||||
Path.Combine ("LibrarySecondStoryboard.storyboardc", "43-view-49.nib"),
|
||||
|
@ -69,7 +67,7 @@ namespace Xamarin.MacDev.Tasks
|
|||
}
|
||||
}
|
||||
|
||||
string[] ExpectedExecutableFiles {
|
||||
string [] ExpectedExecutableFiles {
|
||||
get {
|
||||
var files = new [] {
|
||||
"MonoTouchDebugConfiguration.txt",
|
||||
|
@ -101,8 +99,8 @@ namespace Xamarin.MacDev.Tasks
|
|||
return expected.ToArray ();
|
||||
}
|
||||
}
|
||||
|
||||
static string[] ExpectedLibraryEmbeddedResources {
|
||||
|
||||
static string [] ExpectedLibraryEmbeddedResources {
|
||||
get {
|
||||
return new [] {
|
||||
"MyLibrary.MyLibraryFolder.LibraryLinkedEmbeddedResource.txt",
|
||||
|
@ -149,7 +147,7 @@ namespace Xamarin.MacDev.Tasks
|
|||
|
||||
RunTarget (MonoTouchProject, TargetName.ResolveReferences);
|
||||
var references = MonoTouchProjectInstance.GetItems ("ReferencePath").ToArray ();
|
||||
var expected_references = new string[] {
|
||||
var expected_references = new string [] {
|
||||
"MyLibrary.dll",
|
||||
"System.dll",
|
||||
"System.Xml.dll",
|
||||
|
@ -172,7 +170,7 @@ namespace Xamarin.MacDev.Tasks
|
|||
|
||||
RunTarget (LibraryProject, TargetName.ResolveReferences);
|
||||
var references = LibraryProjectInstance.GetItems ("ReferencePath").ToArray ();
|
||||
var expected_references = new string[] {
|
||||
var expected_references = new string [] {
|
||||
"System.dll",
|
||||
"System.Xml.dll",
|
||||
"System.Core.dll",
|
||||
|
@ -208,13 +206,13 @@ namespace Xamarin.MacDev.Tasks
|
|||
|
||||
// Verify that we have not bundled BundleResource or Content items as embedded resources
|
||||
var assemblyDef = AssemblyDefinition.ReadAssembly (Path.Combine (AppBundlePath, "MySingleView.exe"));
|
||||
Assert.AreEqual (2, assemblyDef.MainModule.Resources.OfType <EmbeddedResource> ().Count (), "#3");
|
||||
|
||||
Assert.AreEqual (2, assemblyDef.MainModule.Resources.OfType<EmbeddedResource> ().Count (), "#3");
|
||||
|
||||
var plist = PDictionary.FromFile (Path.Combine (AppBundlePath, "Info.plist"));
|
||||
Assert.IsTrue (plist.ContainsKey ("CFBundleExecutable"));
|
||||
Assert.IsTrue (plist.ContainsKey ("CFBundleVersion"));
|
||||
Assert.IsNotEmpty (((PString)plist["CFBundleExecutable"]).Value);
|
||||
Assert.IsNotEmpty (((PString)plist["CFBundleVersion"]).Value);
|
||||
Assert.IsNotEmpty (((PString) plist ["CFBundleExecutable"]).Value);
|
||||
Assert.IsNotEmpty (((PString) plist ["CFBundleVersion"]).Value);
|
||||
}
|
||||
|
||||
[Test]
|
||||
|
@ -403,10 +401,10 @@ namespace Xamarin.MacDev.Tasks
|
|||
Configuration.AssertLegacyXamarinAvailable (); // Investigate whether this test should be ported to .NET
|
||||
|
||||
var libraryPath = Path.Combine (LibraryProjectBinPath, "MyLibrary.dll");
|
||||
|
||||
|
||||
RunTarget (LibraryProject, TargetName.Build);
|
||||
var timestamp = GetLastModified (libraryPath);
|
||||
|
||||
|
||||
Touch (Path.Combine (LibraryProjectPath, "LibraryStoryboard.storyboard"));
|
||||
RunTarget (LibraryProject, TargetName.Build);
|
||||
Assert.AreNotEqual (timestamp, GetLastModified (libraryPath));
|
||||
|
@ -428,30 +426,30 @@ namespace Xamarin.MacDev.Tasks
|
|||
Configuration.AssertLegacyXamarinAvailable (); // Investigate whether this test should be ported to .NET
|
||||
|
||||
LibraryProjectInstance.RemoveItems ("InterfaceDefinition");
|
||||
|
||||
|
||||
BuildLibraryCore (ExpectedLibraryEmbeddedResources.Where (s => !s.Contains ("storyboardc")).ToArray ());
|
||||
}
|
||||
|
||||
void BuildLibraryCore (string[] expectedResources)
|
||||
void BuildLibraryCore (string [] expectedResources)
|
||||
{
|
||||
Configuration.IgnoreIfIgnoredPlatform (ApplePlatform.iOS);
|
||||
Configuration.AssertLegacyXamarinAvailable (); // Investigate whether this test should be ported to .NET
|
||||
|
||||
var library = Path.Combine (LibraryProjectBinPath, "MyLibrary.dll");
|
||||
RunTarget (LibraryProject, TargetName.Build);
|
||||
|
||||
|
||||
Assert.IsTrue (string.IsNullOrEmpty (LibraryProjectInstance.GetPropertyValue ("AppBundleDir")), "#1");
|
||||
var entries = Directory.GetFileSystemEntries (LibraryProjectBinPath);
|
||||
Assert.AreEqual (2, entries.Length, "#1");
|
||||
Assert.IsTrue (File.Exists (library), "#2");
|
||||
Assert.IsTrue (File.Exists (Path.ChangeExtension (library, ".pdb")), "#3");
|
||||
|
||||
|
||||
var assemblyDef = AssemblyDefinition.ReadAssembly (library);
|
||||
var actualResources = assemblyDef.MainModule.Resources.Select (n => n.Name).ToList ();
|
||||
|
||||
|
||||
foreach (var resource in expectedResources)
|
||||
Assert.IsTrue (actualResources.Contains (resource), "#1. " + resource);
|
||||
Assert.AreEqual (expectedResources.Length, assemblyDef.MainModule.Resources.OfType <EmbeddedResource> ().Count (), "#2");
|
||||
Assert.AreEqual (expectedResources.Length, assemblyDef.MainModule.Resources.OfType<EmbeddedResource> ().Count (), "#2");
|
||||
}
|
||||
|
||||
[Test]
|
||||
|
@ -481,8 +479,8 @@ namespace Xamarin.MacDev.Tasks
|
|||
RunTarget (MonoTouchProject, TargetName.PackLibraryResources);
|
||||
var embeddedResources = MonoTouchProjectInstance.GetItems ("EmbeddedResource").ToArray ();
|
||||
Assert.AreEqual (2, embeddedResources.Length, "#1");
|
||||
Assert.IsTrue (embeddedResources.Any (i => i.EvaluatedInclude == "LinkedEmbeddedResource.txt"), "#1");
|
||||
Assert.IsTrue (embeddedResources.Any (i => i.EvaluatedInclude == Path.Combine ("Folder", "EmbeddedResource.txt")), "#2");
|
||||
Assert.IsTrue (embeddedResources.Any (i => i.EvaluatedInclude == "LinkedEmbeddedResource.txt"), "#1");
|
||||
Assert.IsTrue (embeddedResources.Any (i => i.EvaluatedInclude == Path.Combine ("Folder", "EmbeddedResource.txt")), "#2");
|
||||
}
|
||||
|
||||
[Test]
|
||||
|
@ -566,7 +564,7 @@ namespace Xamarin.MacDev.Tasks
|
|||
}
|
||||
|
||||
[Test (Description = "Xambug #39137")]
|
||||
public void AddAppIcon_NoClean()
|
||||
public void AddAppIcon_NoClean ()
|
||||
{
|
||||
Configuration.IgnoreIfIgnoredPlatform (ApplePlatform.iOS);
|
||||
Configuration.AssertLegacyXamarinAvailable (); // Investigate whether this test should be ported to .NET
|
||||
|
@ -577,7 +575,7 @@ namespace Xamarin.MacDev.Tasks
|
|||
var plistCopy = PDictionary.FromFile (path);
|
||||
|
||||
// Start without app icon.
|
||||
plist.Remove("XSAppIconAssets");
|
||||
plist.Remove ("XSAppIconAssets");
|
||||
plist.SetMinimumOSVersion ("7.0");
|
||||
plist.Save (path, true);
|
||||
|
||||
|
|
|
@ -9,11 +9,9 @@ using Xamarin.MacDev;
|
|||
using Xamarin.Tests;
|
||||
using Xamarin.Utils;
|
||||
|
||||
namespace Xamarin.MacDev.Tasks
|
||||
{
|
||||
namespace Xamarin.MacDev.Tasks {
|
||||
[TestFixture]
|
||||
public class ValidateAppBundleTaskTests : ExtensionTestBase
|
||||
{
|
||||
public class ValidateAppBundleTaskTests : ExtensionTestBase {
|
||||
string extensionBundlePath;
|
||||
string mainAppPlistPath;
|
||||
string extensionPlistPath;
|
||||
|
@ -55,7 +53,7 @@ namespace Xamarin.MacDev.Tasks
|
|||
void MissingPlist_Extension ()
|
||||
{
|
||||
var contents = File.ReadAllBytes (extensionPlistPath);
|
||||
try {
|
||||
try {
|
||||
File.Delete (extensionPlistPath);
|
||||
RunTarget (MonoTouchProject, "_ValidateAppBundle", 1);
|
||||
Assert.IsTrue (Engine.Logger.ErrorEvents.Count > 0, "#2");
|
||||
|
|
|
@ -5,15 +5,14 @@ using System.Linq;
|
|||
using System.Text;
|
||||
|
||||
using Xamarin.Utils;
|
||||
|
||||
|
||||
using Microsoft.Build.Framework;
|
||||
using Microsoft.Build.Logging.StructuredLogger;
|
||||
|
||||
#nullable enable
|
||||
|
||||
namespace Xamarin.Tests {
|
||||
public class BuildEngine
|
||||
{
|
||||
public class BuildEngine {
|
||||
public Dictionary<string, string> Properties { get; private set; } = new Dictionary<string, string> ();
|
||||
|
||||
public void SetGlobalProperty (string name, string value)
|
||||
|
@ -108,7 +107,7 @@ namespace Xamarin.Tests {
|
|||
if (parent?.Name != name)
|
||||
return false;
|
||||
|
||||
if (!(parent is Parameter || parent is AddItem))
|
||||
if (!(parent is Parameter || parent is AddItem))
|
||||
return false;
|
||||
|
||||
parent = parent.Parent as NamedNode;
|
||||
|
|
|
@ -9,10 +9,8 @@ using Xamarin.MacDev;
|
|||
|
||||
using Xamarin.Utils;
|
||||
|
||||
namespace Xamarin.Tests
|
||||
{
|
||||
public abstract class TestBase
|
||||
{
|
||||
namespace Xamarin.Tests {
|
||||
public abstract class TestBase {
|
||||
public ExecutionMode Mode = ExecutionMode.MSBuild;
|
||||
public string Platform;
|
||||
public string Config = "Debug";
|
||||
|
@ -32,8 +30,7 @@ namespace Xamarin.Tests
|
|||
Config = config;
|
||||
}
|
||||
|
||||
protected static class TargetName
|
||||
{
|
||||
protected static class TargetName {
|
||||
public static string Build = "Build";
|
||||
public static string Clean = "Clean";
|
||||
public static string CollectBundleResources = "_CollectBundleResources";
|
||||
|
@ -74,7 +71,7 @@ namespace Xamarin.Tests
|
|||
public string [] ExpectedAppFiles = { };
|
||||
public string [] UnexpectedAppFiles = { "monotouch.dll" };
|
||||
|
||||
public string[] GetCoreAppFiles (string managedExe, string nativeExe)
|
||||
public string [] GetCoreAppFiles (string managedExe, string nativeExe)
|
||||
{
|
||||
var coreFiles = new List<string> ();
|
||||
|
||||
|
@ -238,13 +235,13 @@ namespace Xamarin.Tests
|
|||
get { return TargetFrameworkIdentifier == "Xamarin.TVOS"; }
|
||||
}
|
||||
|
||||
public void TestFilesDoNotExist(string baseDir, IEnumerable<string> files)
|
||||
public void TestFilesDoNotExist (string baseDir, IEnumerable<string> files)
|
||||
{
|
||||
foreach (var v in files.Select (s => Path.Combine (baseDir, s)))
|
||||
Assert.IsFalse (File.Exists (v) || Directory.Exists (v), "Unexpected file: {0} exists", v);
|
||||
}
|
||||
|
||||
public void TestFilesExists (string baseDir, string[] files)
|
||||
public void TestFilesExists (string baseDir, string [] files)
|
||||
{
|
||||
foreach (var v in files.Select (s => Path.Combine (baseDir, s)))
|
||||
Assert.IsTrue (File.Exists (v) || Directory.Exists (v), "Expected file: {0} does not exist", v);
|
||||
|
@ -260,19 +257,19 @@ namespace Xamarin.Tests
|
|||
}
|
||||
}
|
||||
|
||||
public void TestStoryboardC (string path)
|
||||
public void TestStoryboardC (string path)
|
||||
{
|
||||
Assert.IsTrue (Directory.Exists (path), "Storyboard {0} does not exist", path);
|
||||
Assert.IsTrue (File.Exists (Path.Combine (path, "Info.plist")));
|
||||
TestPList (path, new string [] {"CFBundleVersion", "CFBundleExecutable"});
|
||||
TestPList (path, new string [] { "CFBundleVersion", "CFBundleExecutable" });
|
||||
}
|
||||
|
||||
public void TestPList (string path, string[] keys)
|
||||
public void TestPList (string path, string [] keys)
|
||||
{
|
||||
var plist = PDictionary.FromFile (Path.Combine (path, "Info.plist"));
|
||||
foreach (var x in keys) {
|
||||
Assert.IsTrue (plist.ContainsKey (x), "Key {0} is not present in {1} Info.plist", x, path);
|
||||
Assert.IsNotEmpty (((PString)plist[x]).Value, "Key {0} is empty in {1} Info.plist", x, path);
|
||||
Assert.IsNotEmpty (((PString) plist [x]).Value, "Key {0} is empty in {1} Info.plist", x, path);
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -280,7 +277,7 @@ namespace Xamarin.Tests
|
|||
{
|
||||
var dir = Cache.CreateTemporaryDirectory ();
|
||||
path = Path.Combine (dir, path);
|
||||
using (new FileStream (path, FileMode.CreateNew)) {}
|
||||
using (new FileStream (path, FileMode.CreateNew)) { }
|
||||
return path;
|
||||
}
|
||||
|
||||
|
@ -308,7 +305,7 @@ namespace Xamarin.Tests
|
|||
public static bool IsAPFS {
|
||||
get {
|
||||
if (!is_apfs.HasValue) {
|
||||
var exit_code = ExecutionHelper.Execute ("/bin/df", new string[] { "-t", "apfs", "/" }, out var output, TimeSpan.FromSeconds (10));
|
||||
var exit_code = ExecutionHelper.Execute ("/bin/df", new string [] { "-t", "apfs", "/" }, out var output, TimeSpan.FromSeconds (10));
|
||||
is_apfs = exit_code == 0 && output.Trim ().Split ('\n').Length >= 2;
|
||||
}
|
||||
return is_apfs.Value;
|
||||
|
@ -350,7 +347,7 @@ namespace Xamarin.Tests
|
|||
|
||||
public static void NugetRestore (string project)
|
||||
{
|
||||
var rv = ExecutionHelper.Execute ("nuget", new string[] { "restore", project }, out var output);
|
||||
var rv = ExecutionHelper.Execute ("nuget", new string [] { "restore", project }, out var output);
|
||||
if (rv != 0) {
|
||||
Console.WriteLine ("nuget restore failed:");
|
||||
Console.WriteLine (output);
|
||||
|
|
|
@ -44,11 +44,10 @@ export HTML_NO_BREAKING_CHANGES_MESSAGE=No breaking changes
|
|||
export MARKDOWN_BREAKING_CHANGES_MESSAGE=:heavy_exclamation_mark: Breaking changes :heavy_exclamation_mark:
|
||||
export MARKDOWN_NO_BREAKING_CHANGES_MESSAGE=No breaking changes
|
||||
|
||||
ifeq ($(DOTNET_TFM_REFERENCE),)
|
||||
# Change the below to net7.0 once we have reference assemblies from net7.0 (i.e. once net7.0 goes stable).
|
||||
DOTNET_TFM_REFERENCE_iOS=net6.0
|
||||
DOTNET_TFM_REFERENCE_tvOS=net6.0
|
||||
DOTNET_TFM_REFERENCE_macOS=net6.0
|
||||
DOTNET_TFM_REFERENCE_MacCatalyst=net6.0
|
||||
DOTNET_TFM_REFERENCE=net6.0
|
||||
endif
|
||||
|
||||
# I18N are excluded - but otherwise if should be like ../../builds/Makefile + what XI adds
|
||||
# in the order to the api-diff.html merged file
|
||||
|
@ -130,9 +129,9 @@ $(APIDIFF_DIR)/temp/dotnet/%.xml: $(DOTNET_DESTDIR)/%.dll $(MONO_API_INFO)
|
|||
# dependencies changed)
|
||||
|
||||
define DotNetComputeDiff
|
||||
$(OUTPUT_DIR)/diff/dotnet/Microsoft.$(1).Ref/ref/$(DOTNET_TFM)/Microsoft.$(1)%html $(OUTPUT_DIR)/diff/dotnet/Microsoft.$(1).Ref/ref/$(DOTNET_TFM)/Microsoft.$(1)%md: $(APIDIFF_DIR)/temp/dotnet/Microsoft.$(1).Ref/ref/$(DOTNET_TFM)/Microsoft.$(1)%xml $(APIDIFF_DIR)/references/dotnet/Microsoft.$(1).Ref/ref/$(DOTNET_TFM_REFERENCE_$(1))/Microsoft.$(1).xml $(MONO_API_HTML)
|
||||
$(OUTPUT_DIR)/diff/dotnet/Microsoft.$(1).Ref/ref/$(DOTNET_TFM)/Microsoft.$(1)%html $(OUTPUT_DIR)/diff/dotnet/Microsoft.$(1).Ref/ref/$(DOTNET_TFM)/Microsoft.$(1)%md: $(APIDIFF_DIR)/temp/dotnet/Microsoft.$(1).Ref/ref/$(DOTNET_TFM)/Microsoft.$(1)%xml $(APIDIFF_DIR)/references/dotnet/Microsoft.$(1).Ref/ref/$(DOTNET_TFM_REFERENCE)/Microsoft.$(1).xml $(MONO_API_HTML)
|
||||
$$(Q) mkdir -p $$(dir $$@)
|
||||
$$(QF_GEN) $(MONO_API_HTML_EXEC) $(NEW_REGEX) $(ADD_REGEX) $$(abspath $(APIDIFF_DIR)/references/dotnet/Microsoft.$(1).Ref/ref/$(DOTNET_TFM_REFERENCE_$(1))/Microsoft.$(1).xml) $$(abspath $(APIDIFF_DIR)/temp/dotnet/Microsoft.$(1).Ref/ref/$(DOTNET_TFM)/Microsoft.$(1).xml) $(APIDIFF_IGNORE) --html "$$(abspath $$(basename $$@).html)" --markdown "$$(abspath $$(basename $$@).md)"
|
||||
$$(QF_GEN) $(MONO_API_HTML_EXEC) $(NEW_REGEX) $(ADD_REGEX) $$(abspath $(APIDIFF_DIR)/references/dotnet/Microsoft.$(1).Ref/ref/$(DOTNET_TFM_REFERENCE)/Microsoft.$(1).xml) $$(abspath $(APIDIFF_DIR)/temp/dotnet/Microsoft.$(1).Ref/ref/$(DOTNET_TFM)/Microsoft.$(1).xml) $(APIDIFF_IGNORE) --html "$$(abspath $$(basename $$@).html)" --markdown "$$(abspath $$(basename $$@).md)"
|
||||
$$(Q) touch $$@
|
||||
endef
|
||||
$(foreach platform,$(DOTNET_PLATFORMS),$(eval $(call DotNetComputeDiff,$(platform))))
|
||||
|
@ -413,7 +412,7 @@ APIDIFF_UNIQUE_HASHES=$(foreach url,$(APIDIFF_UNIQUE_URLS),$(word 5,$(subst /, ,
|
|||
|
||||
AUTH_TOKEN_GITHUB_COM_FILE=$(HOME)/.config/AUTH_TOKEN_GITHUB_COM
|
||||
ifeq ($(AUTH_TOKEN_GITHUB_COM),)
|
||||
ifeq ($(AUTH_TOKEN_GITHUB_COM_FILE),$(shell ls -1 $(AUTH_TOKEN_GITHUB_COM_FILE 2>/dev/null)))
|
||||
ifeq ($(AUTH_TOKEN_GITHUB_COM_FILE),$(shell ls -1 $(AUTH_TOKEN_GITHUB_COM_FILE) 2>/dev/null))
|
||||
AUTH_TOKEN_GITHUB_COM:=$(shell cat $(AUTH_TOKEN_GITHUB_COM_FILE))
|
||||
endif
|
||||
endif
|
||||
|
@ -510,7 +509,7 @@ $(APIDIFF_DIR)/updated-references/xm/%.xml: $(MAC_DESTDIR)$(MAC_FRAMEWORK_CURREN
|
|||
$(QF_GEN) $(MONO_API_INFO_EXEC) -d $(dir $<) $(abspath $<) -o $(abspath $(APIDIFF_DIR)/references/xm/$*.xml)
|
||||
|
||||
define DotNetGenerateReferenceXml
|
||||
$(APIDIFF_DIR)/references/dotnet/Microsoft.$(1).Ref/ref/$(DOTNET_TFM_REFERENCE_$(1))/Microsoft.$(1).xml: $(UNZIP_DIR_DOTNET_$(1))/Microsoft.$(1).Ref/ref/$(DOTNET_TFM_REFERENCE_$(1))/Microsoft.$(1).dll $(MONO_API_INFO)
|
||||
$(APIDIFF_DIR)/references/dotnet/Microsoft.$(1).Ref/ref/$(DOTNET_TFM_REFERENCE)/Microsoft.$(1).xml: $(UNZIP_DIR_DOTNET_$(1))/Microsoft.$(1).Ref/ref/$(DOTNET_TFM_REFERENCE)/Microsoft.$(1).dll $(MONO_API_INFO)
|
||||
$$(Q) mkdir -p $$(dir $$@)
|
||||
$$(QF_GEN) $(MONO_API_INFO_EXEC) $$(abspath $$<) -o $$(abspath $$@)
|
||||
endef
|
||||
|
|
|
@ -39,6 +39,7 @@ dotnet format whitespace "$SRC_DIR/tests/xtro-sharpie/u2todo/u2todo.csproj"
|
|||
dotnet format whitespace "$SRC_DIR/tests/xtro-sharpie/xtro-report/xtro-report.csproj"
|
||||
dotnet format whitespace "$SRC_DIR/tests/xtro-sharpie/xtro-sanity/xtro-sanity.csproj"
|
||||
dotnet format whitespace --folder "$SRC_DIR/tests/monotouch-test"
|
||||
dotnet format whitespace --folder "$SRC_DIR/tests/msbuild"
|
||||
dotnet format whitespace --folder "$SRC_DIR/tests/xtro-sharpie"
|
||||
|
||||
dotnet format whitespace --folder "$SRC_DIR/src/Accelerate"
|
||||
|
|
|
@ -361,10 +361,14 @@ if test -n "$ENABLE_API_DIFF"; then
|
|||
#
|
||||
echo "💪 ${BLUE}Computing API diff vs ${WHITE}${BASE_HASH}${BLUE}${CLEAR} 💪"
|
||||
|
||||
# Compute the TFM of the previous hash
|
||||
PREVIOUS_DOTNET_TFM=$(make -C "$OUTPUT_SRC_DIR/xamarin-macios/tools/devops" print-variable VARIABLE=DOTNET_TFM)
|
||||
PREVIOUS_DOTNET_TFM=${PREVIOUS_DOTNET_TFM#*=}
|
||||
|
||||
# Calculate apidiff references according to the temporary build
|
||||
echo " ${BLUE}Updating apidiff references...${CLEAR}"
|
||||
rm -rf "$APIDIFF_RESULTS_DIR" "$APIDIFF_TMP_DIR"
|
||||
if ! make update-refs -C "$ROOT_DIR/tools/apidiff" -j8 APIDIFF_DIR="$APIDIFF_TMP_DIR" OUTPUT_DIR="$APIDIFF_RESULTS_DIR" IOS_DESTDIR="$OUTPUT_SRC_DIR/xamarin-macios/_ios-build" MAC_DESTDIR="$OUTPUT_SRC_DIR/xamarin-macios/_mac-build" DOTNET_DESTDIR="$OUTPUT_SRC_DIR/xamarin-macios/_build" 2>&1 | sed 's/^/ /'; then
|
||||
if ! make update-refs -C "$ROOT_DIR/tools/apidiff" -j8 APIDIFF_DIR="$APIDIFF_TMP_DIR" OUTPUT_DIR="$APIDIFF_RESULTS_DIR" IOS_DESTDIR="$OUTPUT_SRC_DIR/xamarin-macios/_ios-build" MAC_DESTDIR="$OUTPUT_SRC_DIR/xamarin-macios/_mac-build" DOTNET_DESTDIR="$OUTPUT_SRC_DIR/xamarin-macios/_build" DOTNET_TFM_REFERENCE="$PREVIOUS_DOTNET_TFM" 2>&1 | sed 's/^/ /'; then
|
||||
EC=${PIPESTATUS[0]}
|
||||
report_error_line "${RED}Failed to update apidiff references${CLEAR}"
|
||||
exit "$EC"
|
||||
|
@ -373,7 +377,7 @@ if test -n "$ENABLE_API_DIFF"; then
|
|||
# Now compare the current build against those references
|
||||
echo " ${BLUE}Running apidiff...${CLEAR}"
|
||||
APIDIFF_FILE=$APIDIFF_RESULTS_DIR/api-diff.html
|
||||
if ! make all-local -C "$ROOT_DIR/tools/apidiff" -j8 APIDIFF_DIR="$APIDIFF_TMP_DIR" OUTPUT_DIR="$APIDIFF_RESULTS_DIR" SKIP_XAMARIN_VS_DOTNET=1 SKIP_IOS_VS_MACCATALYST=1 2>&1 | sed 's/^/ /'; then
|
||||
if ! make all-local -C "$ROOT_DIR/tools/apidiff" -j8 APIDIFF_DIR="$APIDIFF_TMP_DIR" OUTPUT_DIR="$APIDIFF_RESULTS_DIR" SKIP_XAMARIN_VS_DOTNET=1 SKIP_IOS_VS_MACCATALYST=1 DOTNET_TFM_REFERENCE="$PREVIOUS_DOTNET_TFM" 2>&1 | sed 's/^/ /'; then
|
||||
EC=${PIPESTATUS[0]}
|
||||
report_error_line "${RED}Failed to run apidiff${CLEAR}"
|
||||
exit "$EC"
|
||||
|
@ -381,7 +385,7 @@ if test -n "$ENABLE_API_DIFF"; then
|
|||
|
||||
# Now create the markdowns with these references
|
||||
echo " ${BLUE}Creating markdowns...${CLEAR}"
|
||||
if ! make all-markdowns -C "$ROOT_DIR/tools/apidiff" -j8 APIDIFF_DIR="$APIDIFF_TMP_DIR" OUTPUT_DIR="$APIDIFF_RESULTS_DIR" 2>&1 | sed 's/^/ /'; then
|
||||
if ! make all-markdowns -C "$ROOT_DIR/tools/apidiff" -j8 APIDIFF_DIR="$APIDIFF_TMP_DIR" OUTPUT_DIR="$APIDIFF_RESULTS_DIR" DOTNET_TFM_REFERENCE="$PREVIOUS_DOTNET_TFM" 2>&1 | sed 's/^/ /'; then
|
||||
EC=${PIPESTATUS[0]}
|
||||
report_error_line "${RED}Failed to create markdowns${CLEAR}"
|
||||
exit "$EC"
|
||||
|
|
|
@ -5,6 +5,39 @@ IFS=$'\n\t '
|
|||
|
||||
env | sort
|
||||
|
||||
# This script can be executed locally by downloading the 'WorkloadRollback'
|
||||
# and 'not-signed-package' artifacts from an Azure DevOps build, and then
|
||||
# extracting the files into the xamarin-macios/../artifacts directory.
|
||||
|
||||
# If BUILD_SOURCESDIRECTORY is not set, it's likely we're executing locally.
|
||||
# In which case we can figure out where we are from the current git checkout
|
||||
# (and also set BUILD_SOURCESDIRECTORY accordingly, since the rest of the
|
||||
# script needs it).
|
||||
if test -z "${BUILD_SOURCESDIRECTORY:-}"; then
|
||||
BUILD_SOURCESDIRECTORY="$(git rev-parse --show-toplevel)/.."
|
||||
fi
|
||||
# Don't assume we're in the right directory (makes it easier to run the script
|
||||
# locally).
|
||||
cd "$BUILD_SOURCESDIRECTORY/xamarin-macios"
|
||||
|
||||
# Validate a few things
|
||||
ARTIFACTS_PATH=$BUILD_SOURCESDIRECTORY/artifacts
|
||||
if ! test -d "$ARTIFACTS_PATH"; then
|
||||
echo "The path to the artifects ($ARTIFACTS_PATH) does not exist!"
|
||||
exit 1
|
||||
elif [[ $(find "$ARTIFACTS_PATH/not-signed-package" -type f -name '*.nupkg' -or -name '*.pkg' -or -name '*.zip' | wc -l) -lt 1 ]]; then
|
||||
echo "No artifacts found in $ARTIFACTS_PATH/not-signed-package"
|
||||
echo "If you're running this locally, download the 'not-signed-package' artifact and extract it into $ARTIFACTS_PATH/not-signed-package"
|
||||
exit 1
|
||||
fi
|
||||
|
||||
ROLLBACK_PATH="$ARTIFACTS_PATH/WorkloadRollback/WorkloadRollback.json"
|
||||
if ! test -f "$ROLLBACK_PATH"; then
|
||||
echo "The rollback file $ROLLBACK_PATH does not exist!"
|
||||
exit 1
|
||||
fi
|
||||
|
||||
# Start working
|
||||
make global.json
|
||||
make -C builds dotnet CUSTOM_DOTNET_RUNTIME_INSTALL=1
|
||||
|
||||
|
@ -20,16 +53,14 @@ var=$(make -C "$BUILD_SOURCESDIRECTORY/xamarin-macios/tools/devops" print-abspat
|
|||
DOTNET_NUPKG_DIR=${var#*=}
|
||||
echo "Using nuget dir $DOTNET_NUPKG_DIR"
|
||||
|
||||
ROLLBACK_PATH="$BUILD_SOURCESDIRECTORY/artifacts/WorkloadRollback/WorkloadRollback.json"
|
||||
|
||||
echo "Rollback file contents:"
|
||||
cat "$ROLLBACK_PATH"
|
||||
|
||||
mkdir -p "$DOTNET_NUPKG_DIR"
|
||||
ls -R "$BUILD_SOURCESDIRECTORY/artifacts/not-signed-package"
|
||||
cp "$BUILD_SOURCESDIRECTORY/artifacts/not-signed-package/"*.nupkg "$DOTNET_NUPKG_DIR"
|
||||
cp "$BUILD_SOURCESDIRECTORY/artifacts/not-signed-package/"*.pkg "$DOTNET_NUPKG_DIR"
|
||||
cp "$BUILD_SOURCESDIRECTORY/artifacts/not-signed-package/"*.zip "$DOTNET_NUPKG_DIR"
|
||||
ls -R "$ARTIFACTS_PATH/not-signed-package"
|
||||
cp "$ARTIFACTS_PATH/not-signed-package/"*.nupkg "$DOTNET_NUPKG_DIR"
|
||||
cp "$ARTIFACTS_PATH/not-signed-package/"*.pkg "$DOTNET_NUPKG_DIR"
|
||||
cp "$ARTIFACTS_PATH/not-signed-package/"*.zip "$DOTNET_NUPKG_DIR"
|
||||
ls -R "$DOTNET_NUPKG_DIR"
|
||||
|
||||
NUGET_SOURCES=$(grep https://pkgs.dev.azure.com ./NuGet.config | sed -e 's/.*value="//' -e 's/".*//')
|
||||
|
|
|
@ -32,6 +32,11 @@ steps:
|
|||
persistCredentials: true
|
||||
path: s/xamarin-macios
|
||||
|
||||
# checkout an extra repo to ensure that we have the same tree structure in the working directory in all pipelines.
|
||||
# if you delete this checkout the unified pipeline will have issues.
|
||||
- checkout: yaml-templates
|
||||
clean: true
|
||||
|
||||
# Download the Html Report that was added by the tests job.
|
||||
- task: DownloadPipelineArtifact@2
|
||||
displayName: Download packages
|
||||
|
@ -112,7 +117,7 @@ steps:
|
|||
Write-Host "Build task not found at $execPath!"
|
||||
}
|
||||
|
||||
$maciosPath="$Env:BUILD_SOURCESDIRECTORY"
|
||||
$maciosPath="$Env:SYSTEM_DEFAULTWORKINGDIRECTORY\xamarin-macios"
|
||||
|
||||
Write-Host "Exect path is $execPath"
|
||||
Write-Host "Macios path is $maciosPath"
|
||||
|
@ -138,7 +143,7 @@ steps:
|
|||
continueOnError: true
|
||||
|
||||
- pwsh: |
|
||||
Import-Module $Env:SYSTEM_DEFAULTWORKINGDIRECTORY\tools\devops\automation\scripts\MaciosCI.psd1
|
||||
Import-Module $Env:SYSTEM_DEFAULTWORKINGDIRECTORY\xamarin-macios\tools\devops\automation\scripts\MaciosCI.psd1
|
||||
$statuses = New-GitHubStatusesObjectFromUrl -Url "$(Build.Repository.Uri)" -Token $(GitHub.Token)
|
||||
|
||||
Dir "$(Build.SourcesDirectory)\\artifacts\\package"
|
||||
|
|
Загрузка…
Ссылка в новой задаче