Skip to content

Commit 955fbbf

Browse files
committed
Fixed test to run under xbuild
1 parent 9f08b9b commit 955fbbf

File tree

3 files changed

+37
-18
lines changed

3 files changed

+37
-18
lines changed

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

Lines changed: 21 additions & 17 deletions
Original file line numberDiff line numberDiff line change
@@ -2232,7 +2232,8 @@ public void IfAndroidJarDoesNotExistThrowXA5207 ()
22322232
public void ValidateUseLatestAndroid ()
22332233
{
22342234
var path = Path.Combine ("temp", TestName);
2235-
var referencesPath = CreateFauxReferencesDirectory (Path.Combine (path, "xbuild-frameworks"), new ApiInfo[] {
2235+
var referencesPath = CreateFauxReferencesDirectory (Path.Combine (path, "xbuild-frameworks"), new ApiInfo [] {
2236+
new ApiInfo () { Id = 23, Level = 23, Name = "Marshmallow", FrameworkVersion = "v6.0", Stable = true },
22362237
new ApiInfo () { Id = 26, Level = 26, Name = "Oreo", FrameworkVersion = "v8.0", Stable = true },
22372238
new ApiInfo () { Id = 27, Level = 27, Name = "Oreo", FrameworkVersion = "v8.1", Stable = false },
22382239
});
@@ -2241,33 +2242,36 @@ public void ValidateUseLatestAndroid ()
22412242
TargetFrameworkVersion = "v8.0",
22422243
UseLatestPlatformSdk = false,
22432244
};
2245+
var targetFramework = new string [] {
2246+
$"TargetFrameworkRootPath={referencesPath}",
2247+
};
2248+
var envVar = new Dictionary<string, string> {
2249+
{ "XBUILD_FRAMEWORK_FOLDERS_PATH", referencesPath },
2250+
};
22442251
using (var builder = CreateApkBuilder (Path.Combine (path, proj.ProjectName))) {
22452252
builder.ThrowOnBuildFailure = false;
22462253
builder.Target = "_SetLatestTargetFrameworkVersion";
2247-
Assert.True (builder.Build (proj, parameters: new string [] {
2248-
$"TargetFrameworkRootPath={referencesPath}",
2249-
}), string.Format ("Build should have succeeded"));
2250-
Assert.IsTrue (builder.LastBuildOutput.ContainsText ("_TargetFrameworkVersion=v8.0"), "_TargetFrameworkVersion should be v8.0");
2254+
Assert.True (builder.Build (proj, parameters: targetFramework, environmentVariables: envVar),
2255+
string.Format ("First Build should have succeeded"));
2256+
Assert.IsTrue (builder.LastBuildOutput.ContainsOccurances ("TargetFrameworkVersion: v8.0", 2), "TargetFrameworkVersion should be v8.0");
22512257

22522258
proj.TargetFrameworkVersion = "v8.1";
2253-
Assert.True (builder.Build (proj, parameters: new string [] {
2254-
$"TargetFrameworkRootPath={referencesPath}",
2255-
}), string.Format ("Build should have succeeded"));
2256-
Assert.IsTrue (builder.LastBuildOutput.ContainsText ("_TargetFrameworkVersion=v8.1"), "_TargetFrameworkVersion should be v8.1");
2259+
Assert.True (builder.Build (proj, parameters: targetFramework, environmentVariables: envVar),
2260+
string.Format ("Second Build should have succeeded"));
2261+
Assert.IsTrue (builder.LastBuildOutput.ContainsOccurances ("TargetFrameworkVersion: v8.1", 2), "TargetFrameworkVersion should be v8.1");
22572262

22582263
proj.UseLatestPlatformSdk = true;
22592264
proj.TargetFrameworkVersion = "v8.1";
2260-
Assert.True (builder.Build (proj, parameters: new string [] {
2261-
$"TargetFrameworkRootPath={referencesPath}",
2262-
}), string.Format ("Build should have succeeded"));
2263-
Assert.IsTrue (builder.LastBuildOutput.ContainsText ("_TargetFrameworkVersion=v8.1"), "_TargetFrameworkVersion should be v8.1");
2265+
Assert.True (builder.Build (proj, parameters: targetFramework, environmentVariables: envVar),
2266+
string.Format ("Third Build should have succeeded"));
2267+
Assert.IsTrue (builder.LastBuildOutput.ContainsOccurances ("TargetFrameworkVersion: v8.1", 2), "TargetFrameworkVersion should be v8.1");
22642268

22652269
proj.UseLatestPlatformSdk = true;
22662270
proj.TargetFrameworkVersion = "v6.0";
2267-
Assert.True (builder.Build (proj, parameters: new string [] {
2268-
$"TargetFrameworkRootPath={referencesPath}",
2269-
}), string.Format ("Build should have succeeded"));
2270-
Assert.IsTrue (builder.LastBuildOutput.ContainsText ("_TargetFrameworkVersion=v8.0"), "_TargetFrameworkVersion should be v8.0");
2271+
Assert.True (builder.Build (proj, parameters: targetFramework, environmentVariables: envVar),
2272+
string.Format ("Forth Build should have succeeded"));
2273+
Assert.IsTrue (builder.LastBuildOutput.ContainsOccurances ("TargetFrameworkVersion: v6.0", 1), "TargetFrameworkVersion should initially be v6.0");
2274+
Assert.IsTrue (builder.LastBuildOutput.ContainsOccurances ("TargetFrameworkVersion: v8.0", 1), "TargetFrameworkVersion should be v8.0");
22712275

22722276

22732277
}

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)