Skip to content

Commit b994441

Browse files
authored
[tests] Reduce default build output verbosity (#9002)
Sets the default build verbosity for MSBuild desktop and device tests to 'normal' to reduce log sizes and hopefully slightly improve test run timings. Tests that need to validate target outputs or other build details have been configured to use 'detailed' verbosity. Runtime identifier information will no longer be gathered by reading from the build log, we will instead read from the project file or assume a default of 64-bit architectures.
1 parent b521487 commit b994441

24 files changed

+80
-63
lines changed

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

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -8,6 +8,7 @@
88
using NUnit.Framework;
99
using Xamarin.Android.Tools;
1010
using Xamarin.ProjectTools;
11+
using Microsoft.Build.Framework;
1112

1213
namespace Xamarin.Android.Build.Tests
1314
{
@@ -45,6 +46,7 @@ public void InstallAndroidDependenciesTest ([Values ("GoogleV2", "Xamarin")] str
4546
}
4647

4748
using (var b = CreateApkBuilder ()) {
49+
b.Verbosity = LoggerVerbosity.Detailed;
4850
b.CleanupAfterSuccessfulBuild = false;
4951
string defaultTarget = b.Target;
5052
b.Target = "InstallAndroidDependencies";
@@ -108,6 +110,7 @@ public void GetDependencyNdkRequiredConditions (string property, bool ndkRequire
108110
proj.AotAssemblies = true;
109111
proj.SetProperty (property, "true");
110112
using (var builder = CreateApkBuilder ()) {
113+
builder.Verbosity = LoggerVerbosity.Detailed;
111114
builder.Target = "GetAndroidDependencies";
112115
Assert.IsTrue (builder.Build (proj), "Build should have succeeded.");
113116
IEnumerable<string> taskOutput = builder.LastBuildOutput
@@ -141,6 +144,7 @@ public void GetDependencyWhenBuildToolsAreMissingTest ()
141144
};
142145
string buildToolsVersion = GetExpectedBuildToolsVersion ();
143146
using (var builder = CreateApkBuilder (Path.Combine (path, proj.ProjectName), cleanupAfterSuccessfulBuild: false, cleanupOnDispose: false)) {
147+
builder.Verbosity = LoggerVerbosity.Detailed;
144148
builder.ThrowOnBuildFailure = false;
145149
builder.Target = "GetAndroidDependencies";
146150
Assert.True (builder.Build (proj, parameters: parameters),
@@ -178,6 +182,7 @@ public void GetDependencyWhenSDKIsMissingTest ([Values (true, false)] bool creat
178182

179183
string buildToolsVersion = GetExpectedBuildToolsVersion ();
180184
using (var builder = CreateApkBuilder (Path.Combine (path, proj.ProjectName), cleanupAfterSuccessfulBuild: false, cleanupOnDispose: false)) {
185+
builder.Verbosity = LoggerVerbosity.Detailed;
181186
builder.ThrowOnBuildFailure = false;
182187
builder.Target = "GetAndroidDependencies";
183188
Assert.True (builder.Build (proj, parameters: parameters),

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

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -958,6 +958,7 @@ public void BuildAppWithManagedResourceParser()
958958
appProj.SetProperty ("AndroidUseManagedDesignTimeResourceGenerator", "True");
959959
appProj.SetProperty ("AndroidUseDesignerAssembly", "false");
960960
using (var appBuilder = CreateApkBuilder (Path.Combine (path, appProj.ProjectName))) {
961+
appBuilder.Verbosity = LoggerVerbosity.Detailed;
961962
Assert.IsTrue (appBuilder.DesignTimeBuild (appProj), "DesignTime Application Build should have succeeded.");
962963
Assert.IsFalse (appProj.CreateBuildOutput (appBuilder).IsTargetSkipped ("_ManagedUpdateAndroidResgen"),
963964
"Target '_ManagedUpdateAndroidResgen' should have run.");
@@ -1028,10 +1029,12 @@ public void BuildAppWithManagedResourceParserAndLibraries ()
10281029
appProj.SetProperty ("AndroidUseManagedDesignTimeResourceGenerator", "True");
10291030
appProj.SetProperty ("AndroidUseDesignerAssembly", "false");
10301031
using (var libBuilder = CreateDllBuilder (Path.Combine (path, libProj.ProjectName), false, false)) {
1032+
libBuilder.Verbosity = LoggerVerbosity.Detailed;
10311033
libBuilder.AutomaticNuGetRestore = false;
10321034
Assert.IsTrue (libBuilder.RunTarget (libProj, "Restore"), "Library project should have restored.");
10331035
libBuilder.ThrowOnBuildFailure = false;
10341036
using (var appBuilder = CreateApkBuilder (Path.Combine (path, appProj.ProjectName), false, false)) {
1037+
appBuilder.Verbosity = LoggerVerbosity.Detailed;
10351038
appBuilder.AutomaticNuGetRestore = false;
10361039
Assert.IsTrue (appBuilder.RunTarget (appProj, "Restore"), "App project should have restored.");
10371040
appBuilder.ThrowOnBuildFailure = false;
@@ -1209,6 +1212,7 @@ public void CustomViewAddResourceId ()
12091212
proj.LayoutMain = proj.LayoutMain.Replace ("</LinearLayout>", "<android.support.design.widget.BottomNavigationView android:id=\"@+id/navigation\" /></LinearLayout>");
12101213
proj.PackageReferences.Add (KnownPackages.AndroidXAppCompat);
12111214
using (var b = CreateApkBuilder (Path.Combine ("temp", TestName))) {
1215+
b.Verbosity = LoggerVerbosity.Detailed;
12121216
Assert.IsTrue (b.Build (proj), "first build should have succeeded");
12131217

12141218
//Add a new android:id
@@ -1237,6 +1241,7 @@ public void CheckNoVersionVectors ()
12371241
{
12381242
var proj = new XamarinFormsAndroidApplicationProject ();
12391243
using (var b = CreateApkBuilder (Path.Combine ("temp", TestName))) {
1244+
b.Verbosity = LoggerVerbosity.Detailed;
12401245
Assert.IsTrue (b.Build (proj), "Build should have succeeded.");
12411246

12421247
string aaptCommand = "Executing link";

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

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -72,6 +72,7 @@ public void BuildBasicApplicationReleaseProfiledAot ([Values (true, false)] bool
7272
proj.SetProperty ("EnableLLVM", enableLLVM.ToString ());
7373
proj.SetProperty (proj.ActiveConfigurationProperties, "AndroidExtraAotOptions", "--verbose");
7474
using var b = CreateApkBuilder ();
75+
b.Verbosity = LoggerVerbosity.Detailed;
7576
Assert.IsTrue (b.Build (proj), "Build should have succeeded.");
7677
AssertProfiledAotBuildMessages (b);
7778
}
@@ -93,6 +94,7 @@ public void BuildBasicApplicationReleaseWithCustomAotProfile ()
9394
proj.OtherBuildItems.Add (new BuildItem ("AndroidAotProfile", "custom.aotprofile") { BinaryContent = () => custom_aot_profile });
9495

9596
using var b = CreateApkBuilder ();
97+
b.Verbosity = LoggerVerbosity.Detailed;
9698
Assert.IsTrue (b.Build (proj), "Build should have succeeded.");
9799
AssertProfiledAotBuildMessages (b);
98100
}
@@ -106,6 +108,7 @@ public void BuildBasicApplicationReleaseProfiledAotWithoutDefaultProfile ()
106108
};
107109
proj.SetProperty (proj.ActiveConfigurationProperties, "AndroidUseDefaultAotProfile", "false");
108110
using var b = CreateApkBuilder ();
111+
b.Verbosity = LoggerVerbosity.Detailed;
109112
Assert.IsTrue (b.Build (proj), "Build should have succeeded.");
110113
StringAssertEx.DoesNotContainRegex (@$"Using profile data file.*dotnet\.aotprofile", b.LastBuildOutput, "Should not use default AOT profile", RegexOptions.IgnoreCase);
111114
}

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

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -8,6 +8,7 @@
88
using System.Xml.Linq;
99
using Xamarin.ProjectTools;
1010
using Microsoft.Android.Build.Tasks;
11+
using Microsoft.Build.Framework;
1112

1213
namespace Xamarin.Android.Build.Tests
1314
{
@@ -86,6 +87,7 @@ public void BindingLibraryIncremental (string classParser)
8687
});
8788
proj.AndroidClassParser = classParser;
8889
using (var b = CreateDllBuilder ()) {
90+
b.Verbosity = LoggerVerbosity.Detailed;
8991
Assert.IsTrue (b.Build (proj), "Build should have succeeded.");
9092

9193
var assemblyPath = Path.Combine (Root, b.ProjectDirectory, proj.OutputPath, $"{proj.ProjectName}.dll");
@@ -679,6 +681,7 @@ public void BindingWithAndroidJavaSource ()
679681
};
680682
using (var libBuilder = CreateDllBuilder (Path.Combine (path, lib.ProjectName), cleanupAfterSuccessfulBuild: false))
681683
using (var appBuilder = CreateApkBuilder (Path.Combine (path, app.ProjectName))) {
684+
libBuilder.Verbosity = LoggerVerbosity.Detailed;
682685
Assert.IsTrue (libBuilder.Build (lib), "Library build should have succeeded.");
683686
var generatedCode = Path.Combine (Root, libBuilder.ProjectDirectory, lib.IntermediateOutputPath,
684687
"generated", "src", "Com.Xamarin.Android.Test.Msbuildtest.JavaSourceTestExtension.cs");

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

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -363,6 +363,7 @@ public void CheckItemMetadata ([Values (true, false)] bool isRelease)
363363
mainAxml.MetadataValues = "CustomData=ResourceMetaDataOK";
364364

365365
using (var builder = CreateApkBuilder (string.Format ("temp/CheckItemMetadata_{0}", isRelease))) {
366+
builder.Verbosity = LoggerVerbosity.Detailed;
366367
builder.Build (proj);
367368
StringAssertEx.Contains ("AssetMetaDataOK", builder.LastBuildOutput, "Metadata was not copied for AndroidAsset");
368369
StringAssertEx.Contains ("ResourceMetaDataOK", builder.LastBuildOutput, "Metadata was not copied for AndroidResource");
@@ -698,6 +699,7 @@ public void BuildAfterUpgradingNuget ()
698699
//[TearDown] will still delete if test outcome successful, I need logs if assertions fail but build passes
699700
b.CleanupAfterSuccessfulBuild =
700701
b.CleanupOnDispose = false;
702+
b.Verbosity = LoggerVerbosity.Detailed;
701703
var projectDir = Path.Combine (Root, b.ProjectDirectory);
702704
if (Directory.Exists (projectDir))
703705
Directory.Delete (projectDir, true);

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

Lines changed: 7 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -54,6 +54,7 @@ public void MarshalMethodsDefaultEnabledStatus (bool isRelease, bool marshalMeth
5454
bool shouldMarshalMethodsBeEnabled = isRelease && marshalMethodsEnabled;
5555

5656
using (var b = CreateApkBuilder ()) {
57+
b.Verbosity = LoggerVerbosity.Diagnostic;
5758
Assert.IsTrue (b.Build (proj), "Build should have succeeded.");
5859
Assert.IsTrue (
5960
StringAssertEx.ContainsText (b.LastBuildOutput, $"_AndroidUseMarshalMethods = {shouldMarshalMethodsBeEnabled}"),
@@ -455,6 +456,7 @@ public void SkipConvertResourcesCases ()
455456
WebContent = "https://repo1.maven.org/maven2/com/balysv/material-menu/1.1.0/material-menu-1.1.0.aar"
456457
});
457458
using (var b = CreateApkBuilder (Path.Combine ("temp", TestName))) {
459+
b.Verbosity = LoggerVerbosity.Detailed;
458460
Assert.IsTrue (b.Build (proj), "Build should have succeeded.");
459461
Assert.IsFalse (b.Output.IsTargetSkipped (target), $"`{target}` should not be skipped.");
460462

@@ -1207,9 +1209,7 @@ public void BuildBasicApplicationCheckPdb ()
12071209
var proj = new XamarinAndroidApplicationProject ();
12081210
using (var b = CreateApkBuilder ()) {
12091211
Assert.IsTrue (b.Build (proj), "Build should have succeeded.");
1210-
foreach (string rid in b.GetBuildRuntimeIdentifiers ()) {
1211-
string abi = MonoAndroidHelper.RidToAbi (rid);
1212-
1212+
foreach (string abi in proj.GetRuntimeIdentifiersAsAbis ()) {
12131213
Assert.IsTrue (File.Exists (Path.Combine (Root, b.ProjectDirectory, proj.IntermediateOutputPath, $"android/assets/{abi}/UnnamedProject.pdb")),
12141214
$"UnnamedProject.pdb must be copied to the Intermediate directory for ABI {abi}");
12151215
}
@@ -1223,18 +1223,14 @@ public void BuildBasicApplicationCheckPdbRepeatBuild ()
12231223
using (var b = CreateApkBuilder ()) {
12241224
Assert.IsTrue (b.Build (proj), "Build should have succeeded.");
12251225

1226-
foreach (string rid in b.GetBuildRuntimeIdentifiers ()) {
1227-
string abi = MonoAndroidHelper.RidToAbi (rid);
1228-
1226+
foreach (string abi in proj.GetRuntimeIdentifiersAsAbis ()) {
12291227
Assert.IsTrue (File.Exists (Path.Combine (Root, b.ProjectDirectory, proj.IntermediateOutputPath, $"android/assets/{abi}/UnnamedProject.pdb")),
12301228
$"UnnamedProject.pdb must be copied to the Intermediate directory for ABI {abi}");
12311229
}
12321230

12331231
Assert.IsTrue (b.Build (proj), "second build failed");
12341232

1235-
foreach (string rid in b.GetBuildRuntimeIdentifiers ()) {
1236-
string abi = MonoAndroidHelper.RidToAbi (rid);
1237-
1233+
foreach (string abi in proj.GetRuntimeIdentifiersAsAbis ()) {
12381234
Assert.IsTrue (File.Exists (Path.Combine (Root, b.ProjectDirectory, proj.IntermediateOutputPath, $"android/assets/{abi}/UnnamedProject.pdb")),
12391235
$"UnnamedProject.pdb must be copied to the Intermediate directory for ABI {abi}");
12401236
}
@@ -1318,8 +1314,8 @@ public Class2 ()
13181314
};
13191315

13201316
string apkPath = Path.Combine (outputPath, proj.PackageName + "-Signed.apk");
1321-
var helper = new ArchiveAssemblyHelper (apkPath, useAssemblyStores: false, b.GetBuildRuntimeIdentifiers ().ToArray ());
1322-
foreach (string abi in b.GetBuildAbis ()) {
1317+
var helper = new ArchiveAssemblyHelper (apkPath, useAssemblyStores: false, proj.GetRuntimeIdentifiers ().ToArray ());
1318+
foreach (string abi in proj.GetRuntimeIdentifiersAsAbis ()) {
13231319
foreach ((string fileName, bool existsInBin) in fileNames) {
13241320
EnsureFilesAreTheSame (intermediate, existsInBin ? outputPath : null, fileName, abi, helper, uncompressIfNecessary: fileName.EndsWith (".dll", StringComparison.Ordinal));
13251321
}

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

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -427,7 +427,6 @@ public void BuildWithNativeLibraries ([Values (true, false)] bool isRelease)
427427
}
428428
}
429429
}
430-
Directory.Delete (path, recursive: true);
431430
}
432431

433432
[Test]

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

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -20,6 +20,7 @@ sealed class LocalBuilder : Builder
2020
public LocalBuilder ()
2121
{
2222
BuildingInsideVisualStudio = false;
23+
Verbosity = LoggerVerbosity.Detailed;
2324
}
2425

2526
public bool Build (string projectOrSolution, string target, string [] parameters = null, Dictionary<string, string> environmentVariables = null)

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

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,7 @@
11
using NUnit.Framework;
22
using System.IO;
33
using Xamarin.ProjectTools;
4+
using Microsoft.Build.Framework;
45

56
namespace Xamarin.Android.Build.Tests
67
{
@@ -19,6 +20,7 @@ public void SelectivelyRunUpdateAndroidResources ()
1920
app.SetProperty ("AndroidUseIntermediateDesignerFile", "True");
2021

2122
using (var appBuilder = CreateApkBuilder (Path.Combine (path, app.ProjectName))) {
23+
appBuilder.Verbosity = LoggerVerbosity.Detailed;
2224
Assert.IsTrue (appBuilder.DesignTimeBuild (app, parameters: new string[]{
2325
"BuildingInsideVisualStudio=true",
2426
"DeferredBuildSupported=true",

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

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -5,6 +5,7 @@
55
using System.Xml.Linq;
66
using NUnit.Framework;
77
using Xamarin.ProjectTools;
8+
using Microsoft.Build.Framework;
89

910
namespace Xamarin.Android.Build.Tests
1011
{
@@ -214,6 +215,7 @@ public void GetExtraLibraryLocationsForDesigner ()
214215
// Each NuGet package and AAR file are in libraryprojectimports.cache, AndroidJavaSource is not
215216
const int libraryProjectImportsJars = 55;
216217
using (var b = CreateApkBuilder (Path.Combine ("temp", TestName), false, false)) {
218+
b.Verbosity = LoggerVerbosity.Detailed;
217219
// GetExtraLibraryLocationsForDesigner on new project
218220
Assert.IsTrue (b.RunTarget (proj, target, parameters: DesignerParameters), $"build should have succeeded for target `{target}` 1");
219221

0 commit comments

Comments
 (0)