Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
2 changes: 1 addition & 1 deletion msbuild/Xamarin.Mac.Tasks/Xamarin.Mac.Common.targets
Original file line number Diff line number Diff line change
Expand Up @@ -500,7 +500,7 @@ Copyright (C) 2014 Xamarin. All rights reserved.

<Target Name="_CompileToNative" DependsOnTargets="_DetectAppManifest;_DetectSdkLocations;_GenerateBundleName;ResolveReferences;_CompileEntitlements;_CompileAppManifest"
Inputs="$(TargetDir)$(TargetFileName)"
Outputs="$(_AppBundlePath)Contents\MacOS\$(TargetFileName)">
Outputs="$(_AppBundlePath)Contents\MonoBundle\$(TargetFileName)">
<Mmp
Condition="'$(IsMacEnabled)' == 'true'"
SessionId="$(BuildSessionId)"
Expand Down
13 changes: 7 additions & 6 deletions tests/common/mac/ProjectTestHelpers.cs
Original file line number Diff line number Diff line change
Expand Up @@ -32,6 +32,7 @@ public class UnifiedTestConfig
// Not necessarly required
public bool FSharp { get; set; }
public bool XM45 { get; set; }
public bool DiagnosticMSBuild { get; set; }
public string ProjectName { get; set; }
public string TestCode { get; set; }
public string CSProjConfig { get; set; }
Expand Down Expand Up @@ -92,7 +93,7 @@ public static string RunAndAssert (string exe, StringBuilder args, string stepNa
return output.ToString ();
}

public static string BuildProject (string csprojTarget, bool isUnified, bool shouldFail = false)
public static string BuildProject (string csprojTarget, bool isUnified, bool diagnosticMSBuild = false, bool shouldFail = false)
{
string rootDirectory = FindRootDirectory ();

Expand All @@ -104,7 +105,7 @@ public static string BuildProject (string csprojTarget, bool isUnified, bool sho
// This is to force build to use our mmp and not system mmp
StringBuilder buildArgs = new StringBuilder ();
if (isUnified) {
buildArgs.Append (" /verbosity:normal ");
buildArgs.Append (diagnosticMSBuild ? " /verbosity:diagnostic " : " /verbosity:normal ");
buildArgs.Append (" /property:XamarinMacFrameworkRoot=" + rootDirectory + "/Library/Frameworks/Xamarin.Mac.framework/Versions/Current ");
} else
buildArgs.Append (" build ");
Expand Down Expand Up @@ -186,7 +187,7 @@ public static string BuildUnifiedExecutable (UnifiedTestConfig config, bool shou
config.ProjectName = projectName + projectExtension;
string csprojTarget = GenerateEXEProject (config);

return BuildProject (csprojTarget, isUnified: true, shouldFail: shouldFail);
return BuildProject (csprojTarget, isUnified: true, diagnosticMSBuild: config.DiagnosticMSBuild, shouldFail: shouldFail);
}

public static OutputText TestUnifiedExecutable (UnifiedTestConfig config, bool shouldFail = false)
Expand All @@ -203,7 +204,7 @@ public static OutputText TestUnifiedExecutable (UnifiedTestConfig config, bool s
config.ProjectName = projectName + projectExtension;
string csprojTarget = GenerateEXEProject (config);

string buildOutput = BuildProject (csprojTarget, isUnified : true, shouldFail : shouldFail);
string buildOutput = BuildProject (csprojTarget, isUnified : true, diagnosticMSBuild: config.DiagnosticMSBuild, shouldFail : shouldFail);
if (shouldFail)
return new OutputText (buildOutput, "");

Expand All @@ -217,7 +218,7 @@ public static OutputText TestClassicExecutable (string tmpDir, string testCode =
{
Guid guid = Guid.NewGuid ();
string csprojTarget = GenerateClassicEXEProject (tmpDir, "ClassicExample.csproj", testCode + GenerateOuputCommand (tmpDir,guid), csprojConfig, "");
string buildOutput = BuildProject (csprojTarget, isUnified : false, shouldFail : shouldFail);
string buildOutput = BuildProject (csprojTarget, isUnified : false, diagnosticMSBuild: false, shouldFail : shouldFail);
if (shouldFail)
return new OutputText (buildOutput, "");

Expand All @@ -234,7 +235,7 @@ public static OutputText TestSystemMonoExecutable (UnifiedTestConfig config, boo
config.ProjectName = $"{projectName}.csproj";
string csprojTarget = GenerateSystemMonoEXEProject (config);

string buildOutput = BuildProject (csprojTarget, isUnified : true, shouldFail : shouldFail);
string buildOutput = BuildProject (csprojTarget, isUnified : true, diagnosticMSBuild: config.DiagnosticMSBuild, shouldFail : shouldFail);
if (shouldFail)
return new OutputText (buildOutput, "");

Expand Down
6 changes: 3 additions & 3 deletions tests/mmptest/src/ExtensionTests.cs
Original file line number Diff line number Diff line change
Expand Up @@ -21,7 +21,7 @@ public void TodayExtension_SmokeTest ()
RunMMPTest (tmpDir =>
{
string testPath = Path.Combine (TI.FindSourceDirectory (), @"Today/TodayExtensionTest.csproj");
TI.BuildProject (testPath, true, false);
TI.BuildProject (testPath, isUnified: true);
});
}

Expand All @@ -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);
});
}

Expand All @@ -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);
});
}
}
Expand Down
18 changes: 18 additions & 0 deletions tests/msbuild-mac/src/MSBuild-Smoke.cs
Original file line number Diff line number Diff line change
Expand Up @@ -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"));
}
});
}
}
}