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");
}
}
}