diff --git a/msbuild/Xamarin.Mac.Tasks/Xamarin.Mac.Common.props b/msbuild/Xamarin.Mac.Tasks/Xamarin.Mac.Common.props index db23a7978d1c..410d78dad91d 100644 --- a/msbuild/Xamarin.Mac.Tasks/Xamarin.Mac.Common.props +++ b/msbuild/Xamarin.Mac.Tasks/Xamarin.Mac.Common.props @@ -26,6 +26,20 @@ Copyright (C) 2013-2014 Xamarin. All rights reserved. <_XamarinCommonPropsHasBeenImported>true + + + + Xamarin.Mac.NET + + true false diff --git a/tests/mmptest/mmptest.csproj b/tests/mmptest/mmptest.csproj index d2efabf9332b..76dfeb5f2de1 100644 --- a/tests/mmptest/mmptest.csproj +++ b/tests/mmptest/mmptest.csproj @@ -113,6 +113,7 @@ SdkVersions.cs + diff --git a/tests/mmptest/src/TargetFrameworkMutateTests.cs b/tests/mmptest/src/TargetFrameworkMutateTests.cs new file mode 100644 index 000000000000..74912a241e4c --- /dev/null +++ b/tests/mmptest/src/TargetFrameworkMutateTests.cs @@ -0,0 +1,58 @@ +using System; +using System.Linq; +using NUnit.Framework; +using Xamarin.Utils; + +namespace Xamarin.MMP.Tests +{ + [TestFixture] + public class TargetFrameworkMutateTests + { + const string MigrateCSProjTag = "true"; + + public bool MatchesTFI (string expected, string buildOutput) + { + string tfiLine = buildOutput.SplitLines ().FirstOrDefault (x => x.StartsWith ("TargetFrameworkIdentifier =", StringComparison.Ordinal)); + if (tfiLine == null) + return false; + return tfiLine.Contains (expected); + } + + [TestCase (true)] + [TestCase (false)] + public void ShouldNotMutateWithoutOptInFlag (bool xm45) + { + MMPTests.RunMMPTest (tmpDir => { + TI.UnifiedTestConfig test = new TI.UnifiedTestConfig (tmpDir) { + XM45 = xm45 + }; + var buildOutput = TI.TestUnifiedExecutable (test).BuildOutput; + string standardTFI = xm45 ? ".NETFramework" : "Xamarin.Mac"; + Assert.True (MatchesTFI (standardTFI, buildOutput), $"Build did not have expected TFI: {TI.PrintRedirectIfLong (buildOutput)}"); + }); + } + + [Test] + public void ShouldNotMutateModernWithOptInFlag () + { + MMPTests.RunMMPTest (tmpDir => { + TI.UnifiedTestConfig test = new TI.UnifiedTestConfig (tmpDir) { CSProjConfig = MigrateCSProjTag }; + var buildOutput = TI.TestUnifiedExecutable (test).BuildOutput; + Assert.True (MatchesTFI ("Xamarin.Mac", buildOutput), $"Build did not have expected TFI: {TI.PrintRedirectIfLong (buildOutput)}"); + }); + } + + [Test] + public void ShouldMutateFullWithOptInFlag () + { + MMPTests.RunMMPTest (tmpDir => { + TI.UnifiedTestConfig test = new TI.UnifiedTestConfig (tmpDir) { + XM45 = true, + CSProjConfig = MigrateCSProjTag + }; + var buildOutput = TI.TestUnifiedExecutable (test).BuildOutput; + Assert.True (MatchesTFI ("Xamarin.Mac.NET", buildOutput), $"Build did not have expected TFI: {TI.PrintRedirectIfLong (buildOutput)}"); + }); + } + } +}