Skip to content

Commit 28d8d62

Browse files
committed
Fixed test to run under xbuild
1 parent 5d2b59e commit 28d8d62

File tree

3 files changed

+38
-18
lines changed

3 files changed

+38
-18
lines changed

src/Xamarin.Android.Build.Tasks/Tests/Xamarin.Android.Build.Tests/BuildTest.cs

Lines changed: 22 additions & 17 deletions
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,5 @@
11
using System;
2+
using System.Collections.Generic;
23
using System.Diagnostics;
34
using System.IO;
45
using System.Linq;
@@ -2198,7 +2199,8 @@ public void IfAndroidJarDoesNotExistThrowXA5207 ()
21982199
public void ValidateUseLatestAndroid ()
21992200
{
22002201
var path = Path.Combine ("temp", TestName);
2201-
var referencesPath = CreateFauxReferencesDirectory (Path.Combine (path, "xbuild-frameworks"), new ApiInfo[] {
2202+
var referencesPath = CreateFauxReferencesDirectory (Path.Combine (path, "xbuild-frameworks"), new ApiInfo [] {
2203+
new ApiInfo () { Id = 23, Level = 23, Name = "Marshmallow", FrameworkVersion = "v6.0", Stable = true },
22022204
new ApiInfo () { Id = 26, Level = 26, Name = "Oreo", FrameworkVersion = "v8.0", Stable = true },
22032205
new ApiInfo () { Id = 27, Level = 27, Name = "Oreo", FrameworkVersion = "v8.1", Stable = false },
22042206
});
@@ -2207,33 +2209,36 @@ public void ValidateUseLatestAndroid ()
22072209
TargetFrameworkVersion = "v8.0",
22082210
UseLatestPlatformSdk = false,
22092211
};
2212+
var targetFramework = new string [] {
2213+
$"TargetFrameworkRootPath={referencesPath}",
2214+
};
2215+
var envVar = new Dictionary<string, string> {
2216+
{ "XBUILD_FRAMEWORK_FOLDERS_PATH", referencesPath },
2217+
};
22102218
using (var builder = CreateApkBuilder (Path.Combine (path, proj.ProjectName))) {
22112219
builder.ThrowOnBuildFailure = false;
22122220
builder.Target = "_SetLatestTargetFrameworkVersion";
2213-
Assert.True (builder.Build (proj, parameters: new string [] {
2214-
$"TargetFrameworkRootPath={referencesPath}",
2215-
}), string.Format ("Build should have succeeded"));
2216-
Assert.IsTrue (builder.LastBuildOutput.ContainsText ("_TargetFrameworkVersion=v8.0"), "_TargetFrameworkVersion should be v8.0");
2221+
Assert.True (builder.Build (proj, parameters: targetFramework, environmentVariables: envVar),
2222+
string.Format ("First Build should have succeeded"));
2223+
Assert.IsTrue (builder.LastBuildOutput.ContainsOccurances ("TargetFrameworkVersion: v8.0", 2), "TargetFrameworkVersion should be v8.0");
22172224

22182225
proj.TargetFrameworkVersion = "v8.1";
2219-
Assert.True (builder.Build (proj, parameters: new string [] {
2220-
$"TargetFrameworkRootPath={referencesPath}",
2221-
}), string.Format ("Build should have succeeded"));
2222-
Assert.IsTrue (builder.LastBuildOutput.ContainsText ("_TargetFrameworkVersion=v8.1"), "_TargetFrameworkVersion should be v8.1");
2226+
Assert.True (builder.Build (proj, parameters: targetFramework, environmentVariables: envVar),
2227+
string.Format ("Second Build should have succeeded"));
2228+
Assert.IsTrue (builder.LastBuildOutput.ContainsOccurances ("TargetFrameworkVersion: v8.1", 2), "TargetFrameworkVersion should be v8.1");
22232229

22242230
proj.UseLatestPlatformSdk = true;
22252231
proj.TargetFrameworkVersion = "v8.1";
2226-
Assert.True (builder.Build (proj, parameters: new string [] {
2227-
$"TargetFrameworkRootPath={referencesPath}",
2228-
}), string.Format ("Build should have succeeded"));
2229-
Assert.IsTrue (builder.LastBuildOutput.ContainsText ("_TargetFrameworkVersion=v8.1"), "_TargetFrameworkVersion should be v8.1");
2232+
Assert.True (builder.Build (proj, parameters: targetFramework, environmentVariables: envVar),
2233+
string.Format ("Third Build should have succeeded"));
2234+
Assert.IsTrue (builder.LastBuildOutput.ContainsOccurances ("TargetFrameworkVersion: v8.1", 2), "TargetFrameworkVersion should be v8.1");
22302235

22312236
proj.UseLatestPlatformSdk = true;
22322237
proj.TargetFrameworkVersion = "v6.0";
2233-
Assert.True (builder.Build (proj, parameters: new string [] {
2234-
$"TargetFrameworkRootPath={referencesPath}",
2235-
}), string.Format ("Build should have succeeded"));
2236-
Assert.IsTrue (builder.LastBuildOutput.ContainsText ("_TargetFrameworkVersion=v8.0"), "_TargetFrameworkVersion should be v8.0");
2238+
Assert.True (builder.Build (proj, parameters: targetFramework, environmentVariables: envVar),
2239+
string.Format ("Forth Build should have succeeded"));
2240+
Assert.IsTrue (builder.LastBuildOutput.ContainsOccurances ("TargetFrameworkVersion: v6.0", 1), "TargetFrameworkVersion should initially be v6.0");
2241+
Assert.IsTrue (builder.LastBuildOutput.ContainsOccurances ("TargetFrameworkVersion: v8.0", 1), "TargetFrameworkVersion should be v8.0");
22372242

22382243

22392244
}

src/Xamarin.Android.Build.Tasks/Tests/Xamarin.Android.Build.Tests/Utilities/BuildHelper.cs

Lines changed: 11 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -60,6 +60,17 @@ public static bool ContainsText (this IEnumerable<string> collection, string exp
6060
}
6161
return false;
6262
}
63+
64+
public static bool ContainsOccurances (this IEnumerable<string> collection, string expected, int count)
65+
{
66+
int found = 0;
67+
foreach (var line in collection) {
68+
if (line.Contains (expected)) {
69+
found++;
70+
}
71+
}
72+
return found == count;
73+
}
6374
}
6475
}
6576

tools/scripts/xabuild

Lines changed: 5 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -133,7 +133,11 @@ case "$MSBUILD" in
133133
XABUILD_FLAGS+=(/p:TargetFrameworkRootPath="$TARGETS_DIR-frameworks/")
134134
;;
135135
*xbuild*)
136-
export XBUILD_FRAMEWORK_FOLDERS_PATH="$TARGETS_DIR-frameworks"
136+
if [ -z "$XBUILD_FRAMEWORK_FOLDERS_PATH" ]; then
137+
export XBUILD_FRAMEWORK_FOLDERS_PATH="$TARGETS_DIR-frameworks"
138+
else
139+
export XBUILD_FRAMEWORK_FOLDERS_PATH="$XBUILD_FRAMEWORK_FOLDERS_PATH"
140+
fi
137141
;;
138142
esac
139143

0 commit comments

Comments
 (0)