using System; using System.Collections.Generic; using System.Linq; using System.IO; using NUnit.Framework; using Xamarin.Utils; using Microsoft.Build.Framework; using Microsoft.Build.Logging.StructuredLogger; namespace Xamarin.Tests { public class TemplateProjectTest : TestBaseClass { const string EmptyAppManifest = @" CFBundleIdentifier ID "; const string EmptyMainFile = @"using System; using Foundation; class MainClass { static void Main () { Console.WriteLine (typeof (NSObject)); } } "; [TestCase (ApplePlatform.MacOSX)] public void CreateAppBundleDependsOnTest (ApplePlatform platform) { Configuration.IgnoreIfIgnoredPlatform (platform); var magic = Guid.NewGuid ().ToString (); var csproj = $@" {platform.ToFramework ()} Exe FailTheBuild;$(CreateAppBundleDependsOn) "; var tmpdir = Cache.CreateTemporaryDirectory (); Configuration.CopyDotNetSupportingFiles (tmpdir); var project_path = Path.Combine (tmpdir, "TestProject.csproj"); File.WriteAllText (project_path, csproj); File.WriteAllText (Path.Combine (tmpdir, "Info.plist"), EmptyAppManifest); File.WriteAllText (Path.Combine (tmpdir, "Main.cs"), EmptyMainFile); var properties = GetDefaultProperties (); var result = DotNet.AssertBuildFailure (project_path, properties); var errors = BinLog.GetBuildLogErrors (result.BinLogPath); Assert.That (errors, Has.Some.Matches (v => v.Message.Contains (magic)), "Expected error"); } } }