From 8fa75e30a71ed12dd6af04da87024c97449a648e Mon Sep 17 00:00:00 2001 From: Chris Hamons Date: Thu, 20 Oct 2016 16:00:10 -0500 Subject: [PATCH] Fix XM dependency tracking of mmp bundle to prevent rebuilds - https://bugzilla.xamarin.com/show_bug.cgi?id=45764 - _CompileToNative's output in msbuild was incorrectly set to: $(_AppBundlePath)Contents\MacOS\$(TargetFileName) when the generated file lives at $(_AppBundlePath)Contents\MonoBundle\$(TargetFileName). - This means we'd always try to rebuild, which can be rather time consuming. - The XI target file is just different enough to require a seperate fix. --- .../Xamarin.Mac.Common.targets | 2 +- tests/common/mac/ProjectTestHelpers.cs | 13 +++++++------ tests/mmptest/src/ExtensionTests.cs | 6 +++--- tests/msbuild-mac/src/MSBuild-Smoke.cs | 18 ++++++++++++++++++ 4 files changed, 29 insertions(+), 10 deletions(-) diff --git a/msbuild/Xamarin.Mac.Tasks/Xamarin.Mac.Common.targets b/msbuild/Xamarin.Mac.Tasks/Xamarin.Mac.Common.targets index 4e2d278372f7..6b9bcd63135a 100644 --- a/msbuild/Xamarin.Mac.Tasks/Xamarin.Mac.Common.targets +++ b/msbuild/Xamarin.Mac.Tasks/Xamarin.Mac.Common.targets @@ -500,7 +500,7 @@ Copyright (C) 2014 Xamarin. All rights reserved. + Outputs="$(_AppBundlePath)Contents\MonoBundle\$(TargetFileName)"> { string testPath = Path.Combine (TI.FindSourceDirectory (), @"Today/TodayExtensionTest.csproj"); - TI.BuildProject (testPath, true, false); + TI.BuildProject (testPath, isUnified: true); }); } @@ -34,7 +34,7 @@ public void FinderExtension_SmokeTest () RunMMPTest (tmpDir => { string testPath = Path.Combine (TI.FindSourceDirectory (), @"Finder/FinderExtensionTest.csproj"); - TI.BuildProject (testPath, true, false); + TI.BuildProject (testPath, isUnified: true); }); } @@ -47,7 +47,7 @@ public void ShareExtension_SmokeTest () RunMMPTest (tmpDir => { string testPath = Path.Combine (TI.FindSourceDirectory (), @"Share/ShareExtensionTest.csproj"); - TI.BuildProject (testPath, true, false); + TI.BuildProject (testPath, isUnified: true); }); } } diff --git a/tests/msbuild-mac/src/MSBuild-Smoke.cs b/tests/msbuild-mac/src/MSBuild-Smoke.cs index ca3d38686a48..5df785b14e30 100644 --- a/tests/msbuild-mac/src/MSBuild-Smoke.cs +++ b/tests/msbuild-mac/src/MSBuild-Smoke.cs @@ -151,5 +151,23 @@ public void Build_BindingLibrary_SmokeTest () } }); } + + [Test] + public void BuildingSameProject_TwoTimes_ShallNotInvokeMMPTwoTimes () + { + RunMSBuildTest (tmpDir => + { + foreach (var project in new string[] { "UnifiedExample.csproj", "XM45Example.csproj" }) + { + var config = new TI.UnifiedTestConfig (tmpDir) { ProjectName = project }; + string projectPath = TI.GenerateEXEProject (config); + string buildOutput = TI.BuildProject (projectPath, isUnified: true, diagnosticMSBuild: true); + Assert.IsTrue (buildOutput.Contains ("Target _CompileToNative needs to be built")); + + string secondBuildOutput = TI.BuildProject (projectPath, isUnified: true, diagnosticMSBuild: true); + Assert.IsFalse (secondBuildOutput.Contains ("Target _CompileToNative needs to be built")); + } + }); + } } }