Skip to content

Commit 37bab77

Browse files
committedApr 9, 2018
add tests for automatic build versioning
1 parent 7caad0e commit 37bab77

File tree

4 files changed

+83
-4
lines changed

4 files changed

+83
-4
lines changed
 
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,75 @@
1+
using System.IO;
2+
using System.Xml;
3+
using Mobile.BuildTools.Generators;
4+
using Mobile.BuildTools.Tests.Mocks;
5+
using Mobile.BuildTools.Versioning;
6+
using Xunit;
7+
using Xunit.Abstractions;
8+
9+
namespace Mobile.BuildTools.Tests.Fixtures
10+
{
11+
public class AndroidAutomaticBuildVersionGeneratorFixture
12+
{
13+
private static readonly string TemplateAndroidManifestPath = @"Templates/MockAndroidManifest.xml";
14+
private static readonly string TemplateAndroidManifestOutputPath = @"Properties/AndroidManifest.xml";
15+
16+
private ITestOutputHelper _testOutputHelper { get; }
17+
18+
public AndroidAutomaticBuildVersionGeneratorFixture(ITestOutputHelper testOutputHelper)
19+
{
20+
_testOutputHelper = testOutputHelper;
21+
Directory.CreateDirectory("Properties");
22+
}
23+
24+
private AndroidAutomaticBuildVersionGenerator CreateGenerator(Behavior behavior = Behavior.Timestamp)
25+
{
26+
if (File.Exists(TemplateAndroidManifestOutputPath))
27+
File.Delete(TemplateAndroidManifestOutputPath);
28+
29+
File.Copy(TemplateAndroidManifestPath, TemplateAndroidManifestOutputPath);
30+
31+
return new AndroidAutomaticBuildVersionGenerator
32+
{
33+
DebugOutput = true,
34+
Log = new XunitLog(_testOutputHelper),
35+
ProjectPath = ".",
36+
VersionOffset = 0,
37+
Behavior = behavior,
38+
VersionEnvironment = VersionEnvironment.All
39+
};
40+
}
41+
42+
[Fact]
43+
public void VersioningDoesNotCorruptManifest()
44+
{
45+
var generator = CreateGenerator();
46+
generator.Execute();
47+
48+
var ex = Record.Exception(() =>
49+
{
50+
var doc = new XmlDocument();
51+
doc.LoadXml(File.ReadAllText(TemplateAndroidManifestOutputPath));
52+
});
53+
54+
Assert.Null(ex);
55+
}
56+
57+
[Fact]
58+
public void VersionCode_SetToBuildNumber()
59+
{
60+
var generator = CreateGenerator();
61+
generator.Execute();
62+
63+
Assert.Contains($"android:versionCode=\"{generator.BuildNumber}\"", File.ReadAllText(TemplateAndroidManifestOutputPath));
64+
}
65+
66+
[Fact]
67+
public void VersionName_UsesBuildNumber()
68+
{
69+
var generator = CreateGenerator();
70+
generator.Execute();
71+
72+
Assert.Contains($"android:versionName=\"1.0.{generator.BuildNumber}\"", File.ReadAllText(TemplateAndroidManifestOutputPath));
73+
}
74+
}
75+
}

‎Mobile.BuildTools.Tests/Mobile.BuildTools.Tests.csproj

-1
Original file line numberDiff line numberDiff line change
@@ -2,7 +2,6 @@
22

33
<PropertyGroup>
44
<TargetFramework>netcoreapp2.0</TargetFramework>
5-
65
<IsPackable>false</IsPackable>
76
</PropertyGroup>
87

‎Mobile.BuildTools/Generators/BuildVersionGeneratorBase.cs

+5-3
Original file line numberDiff line numberDiff line change
@@ -20,6 +20,8 @@ public abstract class BuildVersionGeneratorBase : IGenerator
2020
public ILog Log { get; set; }
2121
public bool? DebugOutput { get; set; }
2222

23+
internal string BuildNumber { get; private set; }
24+
2325
public void Execute()
2426
{
2527
if (DebugOutput == null)
@@ -46,11 +48,11 @@ public void Execute()
4648
return;
4749
}
4850

49-
var buildNumber = GetBuildNumber();
50-
Log.LogMessage($"Build Number: {buildNumber}");
51+
BuildNumber = GetBuildNumber();
52+
Log.LogMessage($"Build Number: {BuildNumber}");
5153

5254
Log.LogMessage("Processing Manifest");
53-
ProcessManifest(manifestPath, buildNumber);
55+
ProcessManifest(manifestPath, BuildNumber);
5456
}
5557

5658
protected abstract void ProcessManifest(string path, string buildNumber);

‎xunit.runner.json

+3
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,3 @@
1+
{
2+
"maxParallelThreads": 1
3+
}

0 commit comments

Comments
 (0)
Please sign in to comment.