[msbuild/tests] Add ValidateAppBundleTaskTests

Includes regression test for bug #38673:
https://bugzilla.xamarin.com/show_bug.cgi?id=38673

Description:
"Validate that CFBundleVersion and CFBundleShortVersionString
match across main app and all extensions".
This commit is contained in:
Vincent Dondain 2016-05-11 20:20:54 +02:00
Родитель 0dc4cd2413
Коммит af283be95d
3 изменённых файлов: 79 добавлений и 0 удалений

Просмотреть файл

@ -8,6 +8,8 @@ namespace Xamarin.iOS.Tasks
public string BundlePath; public string BundlePath;
public string Platform; public string Platform;
public ExtensionTestBase () { }
public ExtensionTestBase (string platform) { public ExtensionTestBase (string platform) {
Platform = platform; Platform = platform;
} }

Просмотреть файл

@ -0,0 +1,76 @@
using System.IO;
using NUnit.Framework;
using Xamarin.MacDev;
namespace Xamarin.iOS.Tasks
{
[TestFixture]
public class ValidateAppBundleTaskTests : ExtensionTestBase
{
ValidateAppBundleTask task;
string extensionBundlePath;
string mainAppPlistPath;
string extensionPlistPath;
PDictionary sourcePlist;
public override void Setup ()
{
base.Setup ();
var extensionName = "MyActionExtension";
BuildExtension ("MyTabbedApplication", extensionName, "iPhoneSimulator");
task = CreateTask<ValidateAppBundleTask> ();
task.AppBundlePath = AppBundlePath;
task.SdkIsSimulator = true;
task.TargetFrameworkIdentifier = "Xamarin.iOS";
extensionBundlePath = Path.Combine (AppBundlePath, "PlugIns", extensionName + ".appex");
mainAppPlistPath = Path.Combine (AppBundlePath, "Info.plist");
extensionPlistPath = Path.Combine (extensionBundlePath, "Info.plist");
sourcePlist = PDictionary.FromFile (mainAppPlistPath);
}
[Test]
public void MissingPlist_MainApp ()
{
File.Delete (mainAppPlistPath);
Assert.IsFalse (task.Execute (), "#1");
Assert.IsTrue (Engine.Logger.ErrorEvents.Count > 0, "#2");
}
[Test]
public void MissingPlist_Extension ()
{
File.Delete (extensionPlistPath);
Assert.IsFalse (task.Execute (), "#1");
Assert.IsTrue (Engine.Logger.ErrorEvents.Count > 0, "#2");
}
[Test (Description = "Xambug #38673")]
public void NotMatching_VersionBuildNumbers ()
{
var warningCount = Engine.Logger.WarningsEvents.Count;
// Warning: The App Extension has a CFBundleShortVersionString
// that does not match the main app bundle's CFBundleShortVersionString.
sourcePlist.SetCFBundleShortVersionString ("1");
warningCount++;
// Warning: The App Extension has a CFBundleVersion
// that does not match the main app bundle's CFBundleVersion.
sourcePlist.SetCFBundleVersion ("1");
warningCount++;
sourcePlist.Save (mainAppPlistPath);
Assert.True (task.Execute (), "#1"); // No build error.
Assert.AreEqual (warningCount, Engine.Logger.WarningsEvents.Count, "#2");
}
}
}

Просмотреть файл

@ -99,6 +99,7 @@
<Compile Include="TaskTests\GeneratePlistTaskTests\GeneratePlistTaskTests_watchOS_WatchKitApp.cs" /> <Compile Include="TaskTests\GeneratePlistTaskTests\GeneratePlistTaskTests_watchOS_WatchKitApp.cs" />
<Compile Include="TaskTests\GeneratePlistTaskTests\GeneratePlistTaskTests_tvOS.cs" /> <Compile Include="TaskTests\GeneratePlistTaskTests\GeneratePlistTaskTests_tvOS.cs" />
<Compile Include="TaskTests\SymbolStripTaskTests.cs" /> <Compile Include="TaskTests\SymbolStripTaskTests.cs" />
<Compile Include="TaskTests\ValidateAppBundleTaskTests.cs" />
</ItemGroup> </ItemGroup>
<ItemGroup /> <ItemGroup />
<Import Project="$(MSBuildBinPath)\Microsoft.CSharp.targets" /> <Import Project="$(MSBuildBinPath)\Microsoft.CSharp.targets" />