From 466e300e73dc9ad5addf7980e8192b20a1c4e7a0 Mon Sep 17 00:00:00 2001 From: Peter Collins Date: Tue, 4 Jun 2024 11:13:53 -0400 Subject: [PATCH 1/7] [tests] Reduce default build output verbosity --- .../Tests/Xamarin.ProjectTools/Common/Builder.cs | 2 +- .../Tests/Xamarin.ProjectTools/Common/DotNetCLI.cs | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/src/Xamarin.Android.Build.Tasks/Tests/Xamarin.ProjectTools/Common/Builder.cs b/src/Xamarin.Android.Build.Tasks/Tests/Xamarin.ProjectTools/Common/Builder.cs index 8407a3af198..1fb2d27f1f1 100644 --- a/src/Xamarin.Android.Build.Tasks/Tests/Xamarin.ProjectTools/Common/Builder.cs +++ b/src/Xamarin.Android.Build.Tasks/Tests/Xamarin.ProjectTools/Common/Builder.cs @@ -33,7 +33,7 @@ public class Builder : IDisposable /// Passes /m:N to MSBuild, defaults to null to omit the /m parameter completely. /// public int? MaxCpuCount { get; set; } - public LoggerVerbosity Verbosity { get; set; } = LoggerVerbosity.Diagnostic; + public LoggerVerbosity Verbosity { get; set; } = LoggerVerbosity.Detailed; public IEnumerable LastBuildOutput { get { if (lastBuildOutput != null) { diff --git a/src/Xamarin.Android.Build.Tasks/Tests/Xamarin.ProjectTools/Common/DotNetCLI.cs b/src/Xamarin.Android.Build.Tasks/Tests/Xamarin.ProjectTools/Common/DotNetCLI.cs index f33cc4d9c45..9a7fb1d1fe7 100644 --- a/src/Xamarin.Android.Build.Tasks/Tests/Xamarin.ProjectTools/Common/DotNetCLI.cs +++ b/src/Xamarin.Android.Build.Tasks/Tests/Xamarin.ProjectTools/Common/DotNetCLI.cs @@ -11,7 +11,7 @@ public class DotNetCLI { public string BuildLogFile { get; set; } public string ProcessLogFile { get; set; } - public string Verbosity { get; set; } = "diag"; + public string Verbosity { get; set; } = "detailed"; public string AndroidSdkPath { get; set; } = AndroidSdkResolver.GetAndroidSdkPath (); public string JavaSdkPath { get; set; } = AndroidSdkResolver.GetJavaSdkPath (); public string ProjectDirectory { get; set; } From a8c11e4da665bdd65d069414ec7d702a68d2249a Mon Sep 17 00:00:00 2001 From: Peter Collins Date: Tue, 4 Jun 2024 16:15:32 -0400 Subject: [PATCH 2/7] Get rids from project file rather than build output --- .../Xamarin.Android.Build.Tests/BuildTest2.cs | 16 +++------ .../IncrementalBuildTest.cs | 7 ++-- .../PackagingTest.cs | 6 ++-- .../SingleProjectTest.cs | 2 +- .../Tasks/LinkerTests.cs | 8 ++--- .../Xamarin.ProjectTools/Common/Builder.cs | 33 ------------------- .../Utilities/ProjectExtensions.cs | 16 +++++++++ 7 files changed, 30 insertions(+), 58 deletions(-) diff --git a/src/Xamarin.Android.Build.Tasks/Tests/Xamarin.Android.Build.Tests/BuildTest2.cs b/src/Xamarin.Android.Build.Tasks/Tests/Xamarin.Android.Build.Tests/BuildTest2.cs index c37c20efbd0..43d91099189 100644 --- a/src/Xamarin.Android.Build.Tasks/Tests/Xamarin.Android.Build.Tests/BuildTest2.cs +++ b/src/Xamarin.Android.Build.Tasks/Tests/Xamarin.Android.Build.Tests/BuildTest2.cs @@ -1207,9 +1207,7 @@ public void BuildBasicApplicationCheckPdb () var proj = new XamarinAndroidApplicationProject (); using (var b = CreateApkBuilder ()) { Assert.IsTrue (b.Build (proj), "Build should have succeeded."); - foreach (string rid in b.GetBuildRuntimeIdentifiers ()) { - string abi = MonoAndroidHelper.RidToAbi (rid); - + foreach (string abi in proj.GetRuntimeIdentifiersAsAbis ()) { Assert.IsTrue (File.Exists (Path.Combine (Root, b.ProjectDirectory, proj.IntermediateOutputPath, $"android/assets/{abi}/UnnamedProject.pdb")), $"UnnamedProject.pdb must be copied to the Intermediate directory for ABI {abi}"); } @@ -1223,18 +1221,14 @@ public void BuildBasicApplicationCheckPdbRepeatBuild () using (var b = CreateApkBuilder ()) { Assert.IsTrue (b.Build (proj), "Build should have succeeded."); - foreach (string rid in b.GetBuildRuntimeIdentifiers ()) { - string abi = MonoAndroidHelper.RidToAbi (rid); - + foreach (string abi in proj.GetRuntimeIdentifiersAsAbis ()) { Assert.IsTrue (File.Exists (Path.Combine (Root, b.ProjectDirectory, proj.IntermediateOutputPath, $"android/assets/{abi}/UnnamedProject.pdb")), $"UnnamedProject.pdb must be copied to the Intermediate directory for ABI {abi}"); } Assert.IsTrue (b.Build (proj), "second build failed"); - foreach (string rid in b.GetBuildRuntimeIdentifiers ()) { - string abi = MonoAndroidHelper.RidToAbi (rid); - + foreach (string abi in proj.GetRuntimeIdentifiersAsAbis ()) { Assert.IsTrue (File.Exists (Path.Combine (Root, b.ProjectDirectory, proj.IntermediateOutputPath, $"android/assets/{abi}/UnnamedProject.pdb")), $"UnnamedProject.pdb must be copied to the Intermediate directory for ABI {abi}"); } @@ -1318,8 +1312,8 @@ public Class2 () }; string apkPath = Path.Combine (outputPath, proj.PackageName + "-Signed.apk"); - var helper = new ArchiveAssemblyHelper (apkPath, useAssemblyStores: false, b.GetBuildRuntimeIdentifiers ().ToArray ()); - foreach (string abi in b.GetBuildAbis ()) { + var helper = new ArchiveAssemblyHelper (apkPath, useAssemblyStores: false, proj.GetRuntimeIdentifiers ().ToArray ()); + foreach (string abi in proj.GetRuntimeIdentifiersAsAbis ()) { foreach ((string fileName, bool existsInBin) in fileNames) { EnsureFilesAreTheSame (intermediate, existsInBin ? outputPath : null, fileName, abi, helper, uncompressIfNecessary: fileName.EndsWith (".dll", StringComparison.Ordinal)); } diff --git a/src/Xamarin.Android.Build.Tasks/Tests/Xamarin.Android.Build.Tests/IncrementalBuildTest.cs b/src/Xamarin.Android.Build.Tasks/Tests/Xamarin.Android.Build.Tests/IncrementalBuildTest.cs index b4eae1ec907..265018bc4bd 100644 --- a/src/Xamarin.Android.Build.Tasks/Tests/Xamarin.Android.Build.Tests/IncrementalBuildTest.cs +++ b/src/Xamarin.Android.Build.Tasks/Tests/Xamarin.Android.Build.Tests/IncrementalBuildTest.cs @@ -438,7 +438,7 @@ public void AppProjectTargetsDoNotBreak () Path.Combine (output, $"{proj.ProjectName}.dll.config"), }; - foreach (string abi in b.GetBuildAbis ()) { + foreach (string abi in proj.GetRuntimeIdentifiersAsAbis ()) { filesToTouch.Add (Path.Combine (intermediate, "android", "assets", abi, $"{proj.ProjectName}.dll")); } @@ -647,7 +647,7 @@ public void TransitiveDependencyProduceReferenceAssembly () var lib2Output = Path.Combine (path, lib2.ProjectName, "bin", "Debug", "netstandard2.0", $"{lib2.ProjectName}.dll"); - foreach (string abi in appBuilder.GetBuildAbis ()) { + foreach (string abi in app.GetRuntimeIdentifiersAsAbis ()) { var lib2InAppOutput = Path.Combine (path, app.ProjectName, app.IntermediateOutputPath, "android", "assets", abi, $"{lib2.ProjectName}.dll"); FileAssert.AreEqual (lib2Output, lib2InAppOutput, $"new Library2 should have been copied to app output directory for abi '{abi}'"); } @@ -662,8 +662,7 @@ public void LinkAssembliesNoShrink () Assert.IsTrue (b.Build (proj), "build should have succeeded."); // Touch an assembly to a timestamp older than build.props - foreach (string rid in b.GetBuildRuntimeIdentifiers ()) { - string abi = MonoAndroidHelper.RidToAbi (rid); + foreach (string abi in proj.GetRuntimeIdentifiersAsAbis ()) { var formsViewGroup = b.Output.GetIntermediaryPath (Path.Combine ("android", "assets", abi, "FormsViewGroup.dll")); File.SetLastWriteTimeUtc (formsViewGroup, new DateTime (1970, 1, 1)); } diff --git a/src/Xamarin.Android.Build.Tasks/Tests/Xamarin.Android.Build.Tests/PackagingTest.cs b/src/Xamarin.Android.Build.Tasks/Tests/Xamarin.Android.Build.Tests/PackagingTest.cs index 35523031a2d..6cae7187dc4 100644 --- a/src/Xamarin.Android.Build.Tasks/Tests/Xamarin.Android.Build.Tests/PackagingTest.cs +++ b/src/Xamarin.Android.Build.Tasks/Tests/Xamarin.Android.Build.Tests/PackagingTest.cs @@ -466,8 +466,7 @@ public void MissingSatelliteAssemblyInLibrary () var helper = new ArchiveAssemblyHelper (apk); foreach (string lang in languages) { - foreach (string rid in appBuilder.GetBuildRuntimeIdentifiers ()) { - string abi = MonoAndroidHelper.RidToAbi (rid); + foreach (string abi in app.GetRuntimeIdentifiersAsAbis ()) { Assert.IsTrue (helper.Exists ($"assemblies/{abi}/{lang}/{lib.ProjectName}.resources.dll"), $"Apk should contain satellite assembly for language '{lang}'!"); } } @@ -498,8 +497,7 @@ public void MissingSatelliteAssemblyInApp () var apk = Path.Combine (Root, b.ProjectDirectory, proj.OutputPath, $"{proj.PackageName}-Signed.apk"); var helper = new ArchiveAssemblyHelper (apk); - foreach (string rid in b.GetBuildRuntimeIdentifiers ()) { - string abi = MonoAndroidHelper.RidToAbi (rid); + foreach (string abi in proj.GetRuntimeIdentifiersAsAbis ()) { Assert.IsTrue (helper.Exists ($"assemblies/{abi}/es/{proj.ProjectName}.resources.dll"), "Apk should contain satellite assemblies!"); } } diff --git a/src/Xamarin.Android.Build.Tasks/Tests/Xamarin.Android.Build.Tests/SingleProjectTest.cs b/src/Xamarin.Android.Build.Tasks/Tests/Xamarin.Android.Build.Tests/SingleProjectTest.cs index cce32043203..ed018079dd8 100644 --- a/src/Xamarin.Android.Build.Tasks/Tests/Xamarin.Android.Build.Tests/SingleProjectTest.cs +++ b/src/Xamarin.Android.Build.Tasks/Tests/Xamarin.Android.Build.Tests/SingleProjectTest.cs @@ -85,7 +85,7 @@ public void AndroidManifestProperties (string versionName, string versionCode, s $"{versionName}.0.0" : $"{versionName.Substring (0, index)}.0.0"; - foreach (string abi in b.GetBuildAbis ()) { + foreach (string abi in proj.GetRuntimeIdentifiersAsAbis ()) { var assemblyPath = b.Output.GetIntermediaryPath ($"android/assets/{abi}/{proj.ProjectName}.dll"); FileAssert.Exists (assemblyPath); using var assembly = AssemblyDefinition.ReadAssembly (assemblyPath); diff --git a/src/Xamarin.Android.Build.Tasks/Tests/Xamarin.Android.Build.Tests/Tasks/LinkerTests.cs b/src/Xamarin.Android.Build.Tasks/Tests/Xamarin.Android.Build.Tests/Tasks/LinkerTests.cs index 86f2a319cc0..98eaed9a4af 100644 --- a/src/Xamarin.Android.Build.Tasks/Tests/Xamarin.Android.Build.Tests/Tasks/LinkerTests.cs +++ b/src/Xamarin.Android.Build.Tasks/Tests/Xamarin.Android.Build.Tests/Tasks/LinkerTests.cs @@ -235,8 +235,7 @@ public void RemoveDesigner ([Values (true, false)] bool useAssemblyStore) var apk = Path.Combine (Root, b.ProjectDirectory, proj.OutputPath, $"{proj.PackageName}-Signed.apk"); FileAssert.Exists (apk); var helper = new ArchiveAssemblyHelper (apk, useAssemblyStore); - foreach (string rid in b.GetBuildRuntimeIdentifiers ()) { - string abi = MonoAndroidHelper.RidToAbi (rid); + foreach (string abi in proj.GetRuntimeIdentifiersAsAbis ()) { Assert.IsTrue (helper.Exists ($"assemblies/{abi}/{assemblyName}.dll"), $"{assemblyName}.dll should exist in apk!"); using var stream = helper.ReadEntry ($"assemblies/{assemblyName}.dll"); @@ -292,8 +291,7 @@ public void LinkDescription ([Values (true, false)] bool useAssemblyStore) var apk = Path.Combine (Root, b.ProjectDirectory, proj.OutputPath, $"{proj.PackageName}-Signed.apk"); FileAssert.Exists (apk); var helper = new ArchiveAssemblyHelper (apk, useAssemblyStore); - foreach (string rid in b.GetBuildRuntimeIdentifiers ()) { - string abi = MonoAndroidHelper.RidToAbi (rid); + foreach (string abi in proj.GetRuntimeIdentifiersAsAbis ()) { Assert.IsTrue (helper.Exists ($"assemblies/{abi}/{assembly_name}.dll"), $"{assembly_name}.dll should exist in apk!"); } using (var stream = helper.ReadEntry ($"assemblies/{assembly_name}.dll")) { @@ -432,7 +430,7 @@ public unsafe bool MyMethod (Android.OS.IBinder windowToken, [global::Android.Ru string projectDir = Path.Combine (proj.Root, b.ProjectDirectory); var assemblyFile = "UnnamedProject.dll"; if (!isRelease || setLinkModeNone) { - foreach (string abi in b.GetBuildAbis ()) { + foreach (string abi in proj.GetRuntimeIdentifiersAsAbis ()) { CheckAssembly (b.Output.GetIntermediaryPath (Path.Combine ("android", "assets", abi, assemblyFile)), projectDir); } } else { diff --git a/src/Xamarin.Android.Build.Tasks/Tests/Xamarin.ProjectTools/Common/Builder.cs b/src/Xamarin.Android.Build.Tasks/Tests/Xamarin.ProjectTools/Common/Builder.cs index 1fb2d27f1f1..4ddb4597b51 100644 --- a/src/Xamarin.Android.Build.Tasks/Tests/Xamarin.ProjectTools/Common/Builder.cs +++ b/src/Xamarin.Android.Build.Tasks/Tests/Xamarin.ProjectTools/Common/Builder.cs @@ -131,39 +131,6 @@ public void GetTargetFrameworkVersionRange (out string firstApiLevel, out string allFrameworkVersions = allTFVs.ToArray (); } - public HashSet GetBuildRuntimeIdentifiers () - { - var ret = new HashSet (StringComparer.OrdinalIgnoreCase); - foreach (string l in LastBuildOutput) { - string line = l.Trim (); - if (line.Length == 0 || line[0] != 'R') { - continue; - } - - // Here's hoping MSBuild doesn't change the property reporting format - if (!line.StartsWith ("RuntimeIdentifiers =", StringComparison.Ordinal)) { - continue; - } - - foreach (string r in line.Split ('=')[1].Split (';')) { - ret.Add (r.Trim ()); - } - break; - } - - return ret; - } - - public HashSet GetBuildAbis () - { - var ret = new HashSet (StringComparer.OrdinalIgnoreCase); - foreach (string rid in GetBuildRuntimeIdentifiers ()) { - ret.Add (MonoAndroidHelper.RidToAbi (rid)); - } - - return ret; - } - static string GetApiInfoElementValue (string androidApiInfo, string elementPath) { if (!File.Exists (androidApiInfo)) diff --git a/src/Xamarin.Android.Build.Tasks/Tests/Xamarin.ProjectTools/Utilities/ProjectExtensions.cs b/src/Xamarin.Android.Build.Tasks/Tests/Xamarin.ProjectTools/Utilities/ProjectExtensions.cs index 3e737019d26..9492df1738c 100644 --- a/src/Xamarin.Android.Build.Tasks/Tests/Xamarin.ProjectTools/Utilities/ProjectExtensions.cs +++ b/src/Xamarin.Android.Build.Tasks/Tests/Xamarin.ProjectTools/Utilities/ProjectExtensions.cs @@ -50,5 +50,21 @@ public static void SetRuntimeIdentifiers (this IShortFormProject project, params project.SetProperty (KnownProperties.RuntimeIdentifiers, String.Join (";", targetArches.Select (arch => MonoAndroidHelper.ArchToRid (arch)))); } + + public static HashSet GetRuntimeIdentifiers (this XamarinProject project) + { + var ridsPropValue = project.GetProperty (KnownProperties.RuntimeIdentifiers); + + if (string.IsNullOrEmpty (ridsPropValue)) { + return new HashSet () { "android-arm64", "android-x64", }; + } + + return ridsPropValue.Split (';').ToHashSet (StringComparer.OrdinalIgnoreCase); + } + + public static HashSet GetRuntimeIdentifiersAsAbis (this XamarinProject project) + { + return project.GetRuntimeIdentifiers ().Select(r => MonoAndroidHelper.RidToAbi (r)).ToHashSet (StringComparer.OrdinalIgnoreCase); + } } } From 1f80c96d28d0567bbc7e11bd8592a2ca740c01b5 Mon Sep 17 00:00:00 2001 From: Peter Collins Date: Wed, 5 Jun 2024 11:35:15 -0400 Subject: [PATCH 3/7] Try normal verbosity --- .../Tests/Xamarin.Android.Build.Tests/BuildTest2.cs | 1 + .../Tests/Xamarin.ProjectTools/Common/Builder.cs | 2 +- .../Tests/Xamarin.ProjectTools/Common/DotNetCLI.cs | 2 +- 3 files changed, 3 insertions(+), 2 deletions(-) diff --git a/src/Xamarin.Android.Build.Tasks/Tests/Xamarin.Android.Build.Tests/BuildTest2.cs b/src/Xamarin.Android.Build.Tasks/Tests/Xamarin.Android.Build.Tests/BuildTest2.cs index 43d91099189..d9b48da2234 100644 --- a/src/Xamarin.Android.Build.Tasks/Tests/Xamarin.Android.Build.Tests/BuildTest2.cs +++ b/src/Xamarin.Android.Build.Tasks/Tests/Xamarin.Android.Build.Tests/BuildTest2.cs @@ -54,6 +54,7 @@ public void MarshalMethodsDefaultEnabledStatus (bool isRelease, bool marshalMeth bool shouldMarshalMethodsBeEnabled = isRelease && marshalMethodsEnabled; using (var b = CreateApkBuilder ()) { + b.Verbosity = LoggerVerbosity.Diagnostic; Assert.IsTrue (b.Build (proj), "Build should have succeeded."); Assert.IsTrue ( StringAssertEx.ContainsText (b.LastBuildOutput, $"_AndroidUseMarshalMethods = {shouldMarshalMethodsBeEnabled}"), diff --git a/src/Xamarin.Android.Build.Tasks/Tests/Xamarin.ProjectTools/Common/Builder.cs b/src/Xamarin.Android.Build.Tasks/Tests/Xamarin.ProjectTools/Common/Builder.cs index 4ddb4597b51..5ecf6827bd3 100644 --- a/src/Xamarin.Android.Build.Tasks/Tests/Xamarin.ProjectTools/Common/Builder.cs +++ b/src/Xamarin.Android.Build.Tasks/Tests/Xamarin.ProjectTools/Common/Builder.cs @@ -33,7 +33,7 @@ public class Builder : IDisposable /// Passes /m:N to MSBuild, defaults to null to omit the /m parameter completely. /// public int? MaxCpuCount { get; set; } - public LoggerVerbosity Verbosity { get; set; } = LoggerVerbosity.Detailed; + public LoggerVerbosity Verbosity { get; set; } = LoggerVerbosity.Normal; public IEnumerable LastBuildOutput { get { if (lastBuildOutput != null) { diff --git a/src/Xamarin.Android.Build.Tasks/Tests/Xamarin.ProjectTools/Common/DotNetCLI.cs b/src/Xamarin.Android.Build.Tasks/Tests/Xamarin.ProjectTools/Common/DotNetCLI.cs index 9a7fb1d1fe7..33fbb8b1df0 100644 --- a/src/Xamarin.Android.Build.Tasks/Tests/Xamarin.ProjectTools/Common/DotNetCLI.cs +++ b/src/Xamarin.Android.Build.Tasks/Tests/Xamarin.ProjectTools/Common/DotNetCLI.cs @@ -11,7 +11,7 @@ public class DotNetCLI { public string BuildLogFile { get; set; } public string ProcessLogFile { get; set; } - public string Verbosity { get; set; } = "detailed"; + public string Verbosity { get; set; } = "n"; public string AndroidSdkPath { get; set; } = AndroidSdkResolver.GetAndroidSdkPath (); public string JavaSdkPath { get; set; } = AndroidSdkResolver.GetJavaSdkPath (); public string ProjectDirectory { get; set; } From 60281a05b7ac6dea6fb714e6fa8d2a679999d831 Mon Sep 17 00:00:00 2001 From: Peter Collins Date: Wed, 5 Jun 2024 21:27:20 -0400 Subject: [PATCH 4/7] Fix normal issues, try quiet --- .../Xamarin.Android.Build.Tests/AndroidDependenciesTests.cs | 5 +++++ .../AndroidUpdateResourcesTest.cs | 4 ++++ .../Tests/Xamarin.Android.Build.Tests/AotTests.cs | 3 +++ .../Tests/Xamarin.Android.Build.Tests/BindingBuildTest.cs | 3 +++ .../Tests/Xamarin.Android.Build.Tests/BuildTest.cs | 2 ++ .../Tests/Xamarin.Android.Build.Tests/BuildTest2.cs | 1 + .../Tests/Xamarin.Android.Build.Tests/CodeBehindTests.cs | 1 + .../Tests/Xamarin.Android.Build.Tests/DeferredBuildTest.cs | 2 ++ .../Tests/Xamarin.Android.Build.Tests/DesignerTests.cs | 2 ++ .../Xamarin.Android.Build.Tests/IncrementalBuildTest.cs | 2 ++ .../Tests/Xamarin.Android.Build.Tests/PackagingTest.cs | 4 ++++ .../Tasks/CheckClientHandlerTypeTests.cs | 1 + .../Tests/Xamarin.Android.Build.Tests/XASdkTests.cs | 1 + .../Tests/Xamarin.ProjectTools/Common/Builder.cs | 2 +- .../Tests/Xamarin.ProjectTools/Common/DotNetCLI.cs | 2 +- tests/MSBuildDeviceIntegration/Tests/DebuggingTest.cs | 2 ++ tests/MSBuildDeviceIntegration/Tests/InstallTests.cs | 2 ++ tests/MSBuildDeviceIntegration/Tests/InstantRunTest.cs | 5 +++++ 18 files changed, 42 insertions(+), 2 deletions(-) diff --git a/src/Xamarin.Android.Build.Tasks/Tests/Xamarin.Android.Build.Tests/AndroidDependenciesTests.cs b/src/Xamarin.Android.Build.Tasks/Tests/Xamarin.Android.Build.Tests/AndroidDependenciesTests.cs index f51c15da9a6..824d7b0d755 100644 --- a/src/Xamarin.Android.Build.Tasks/Tests/Xamarin.Android.Build.Tests/AndroidDependenciesTests.cs +++ b/src/Xamarin.Android.Build.Tasks/Tests/Xamarin.Android.Build.Tests/AndroidDependenciesTests.cs @@ -8,6 +8,7 @@ using NUnit.Framework; using Xamarin.Android.Tools; using Xamarin.ProjectTools; +using Microsoft.Build.Framework; namespace Xamarin.Android.Build.Tests { @@ -45,6 +46,7 @@ public void InstallAndroidDependenciesTest ([Values ("GoogleV2", "Xamarin")] str } using (var b = CreateApkBuilder ()) { + b.Verbosity = LoggerVerbosity.Detailed; b.CleanupAfterSuccessfulBuild = false; string defaultTarget = b.Target; b.Target = "InstallAndroidDependencies"; @@ -108,6 +110,7 @@ public void GetDependencyNdkRequiredConditions (string property, bool ndkRequire proj.AotAssemblies = true; proj.SetProperty (property, "true"); using (var builder = CreateApkBuilder ()) { + builder.Verbosity = LoggerVerbosity.Detailed; builder.Target = "GetAndroidDependencies"; Assert.IsTrue (builder.Build (proj), "Build should have succeeded."); IEnumerable taskOutput = builder.LastBuildOutput @@ -141,6 +144,7 @@ public void GetDependencyWhenBuildToolsAreMissingTest () }; string buildToolsVersion = GetExpectedBuildToolsVersion (); using (var builder = CreateApkBuilder (Path.Combine (path, proj.ProjectName), cleanupAfterSuccessfulBuild: false, cleanupOnDispose: false)) { + builder.Verbosity = LoggerVerbosity.Detailed; builder.ThrowOnBuildFailure = false; builder.Target = "GetAndroidDependencies"; Assert.True (builder.Build (proj, parameters: parameters), @@ -178,6 +182,7 @@ public void GetDependencyWhenSDKIsMissingTest ([Values (true, false)] bool creat string buildToolsVersion = GetExpectedBuildToolsVersion (); using (var builder = CreateApkBuilder (Path.Combine (path, proj.ProjectName), cleanupAfterSuccessfulBuild: false, cleanupOnDispose: false)) { + builder.Verbosity = LoggerVerbosity.Detailed; builder.ThrowOnBuildFailure = false; builder.Target = "GetAndroidDependencies"; Assert.True (builder.Build (proj, parameters: parameters), diff --git a/src/Xamarin.Android.Build.Tasks/Tests/Xamarin.Android.Build.Tests/AndroidUpdateResourcesTest.cs b/src/Xamarin.Android.Build.Tasks/Tests/Xamarin.Android.Build.Tests/AndroidUpdateResourcesTest.cs index fbe9f4e5536..45588c5607e 100644 --- a/src/Xamarin.Android.Build.Tasks/Tests/Xamarin.Android.Build.Tests/AndroidUpdateResourcesTest.cs +++ b/src/Xamarin.Android.Build.Tasks/Tests/Xamarin.Android.Build.Tests/AndroidUpdateResourcesTest.cs @@ -958,6 +958,7 @@ public void BuildAppWithManagedResourceParser() appProj.SetProperty ("AndroidUseManagedDesignTimeResourceGenerator", "True"); appProj.SetProperty ("AndroidUseDesignerAssembly", "false"); using (var appBuilder = CreateApkBuilder (Path.Combine (path, appProj.ProjectName))) { + appBuilder.Verbosity = LoggerVerbosity.Detailed; Assert.IsTrue (appBuilder.DesignTimeBuild (appProj), "DesignTime Application Build should have succeeded."); Assert.IsFalse (appProj.CreateBuildOutput (appBuilder).IsTargetSkipped ("_ManagedUpdateAndroidResgen"), "Target '_ManagedUpdateAndroidResgen' should have run."); @@ -1032,6 +1033,7 @@ public void BuildAppWithManagedResourceParserAndLibraries () Assert.IsTrue (libBuilder.RunTarget (libProj, "Restore"), "Library project should have restored."); libBuilder.ThrowOnBuildFailure = false; using (var appBuilder = CreateApkBuilder (Path.Combine (path, appProj.ProjectName), false, false)) { + appBuilder.Verbosity = LoggerVerbosity.Detailed; appBuilder.AutomaticNuGetRestore = false; Assert.IsTrue (appBuilder.RunTarget (appProj, "Restore"), "App project should have restored."); appBuilder.ThrowOnBuildFailure = false; @@ -1209,6 +1211,7 @@ public void CustomViewAddResourceId () proj.LayoutMain = proj.LayoutMain.Replace ("", ""); proj.PackageReferences.Add (KnownPackages.AndroidXAppCompat); using (var b = CreateApkBuilder (Path.Combine ("temp", TestName))) { + b.Verbosity = LoggerVerbosity.Detailed; Assert.IsTrue (b.Build (proj), "first build should have succeeded"); //Add a new android:id @@ -1237,6 +1240,7 @@ public void CheckNoVersionVectors () { var proj = new XamarinFormsAndroidApplicationProject (); using (var b = CreateApkBuilder (Path.Combine ("temp", TestName))) { + b.Verbosity = LoggerVerbosity.Detailed; Assert.IsTrue (b.Build (proj), "Build should have succeeded."); string aaptCommand = "Executing link"; diff --git a/src/Xamarin.Android.Build.Tasks/Tests/Xamarin.Android.Build.Tests/AotTests.cs b/src/Xamarin.Android.Build.Tasks/Tests/Xamarin.Android.Build.Tests/AotTests.cs index bf69140c390..cd0da12f83f 100644 --- a/src/Xamarin.Android.Build.Tasks/Tests/Xamarin.Android.Build.Tests/AotTests.cs +++ b/src/Xamarin.Android.Build.Tasks/Tests/Xamarin.Android.Build.Tests/AotTests.cs @@ -72,6 +72,7 @@ public void BuildBasicApplicationReleaseProfiledAot ([Values (true, false)] bool proj.SetProperty ("EnableLLVM", enableLLVM.ToString ()); proj.SetProperty (proj.ActiveConfigurationProperties, "AndroidExtraAotOptions", "--verbose"); using var b = CreateApkBuilder (); + b.Verbosity = LoggerVerbosity.Detailed; Assert.IsTrue (b.Build (proj), "Build should have succeeded."); AssertProfiledAotBuildMessages (b); } @@ -93,6 +94,7 @@ public void BuildBasicApplicationReleaseWithCustomAotProfile () proj.OtherBuildItems.Add (new BuildItem ("AndroidAotProfile", "custom.aotprofile") { BinaryContent = () => custom_aot_profile }); using var b = CreateApkBuilder (); + b.Verbosity = LoggerVerbosity.Detailed; Assert.IsTrue (b.Build (proj), "Build should have succeeded."); AssertProfiledAotBuildMessages (b); } @@ -106,6 +108,7 @@ public void BuildBasicApplicationReleaseProfiledAotWithoutDefaultProfile () }; proj.SetProperty (proj.ActiveConfigurationProperties, "AndroidUseDefaultAotProfile", "false"); using var b = CreateApkBuilder (); + b.Verbosity = LoggerVerbosity.Detailed; Assert.IsTrue (b.Build (proj), "Build should have succeeded."); StringAssertEx.DoesNotContainRegex (@$"Using profile data file.*dotnet\.aotprofile", b.LastBuildOutput, "Should not use default AOT profile", RegexOptions.IgnoreCase); } diff --git a/src/Xamarin.Android.Build.Tasks/Tests/Xamarin.Android.Build.Tests/BindingBuildTest.cs b/src/Xamarin.Android.Build.Tasks/Tests/Xamarin.Android.Build.Tests/BindingBuildTest.cs index 48a46e56b46..df1fb580f45 100644 --- a/src/Xamarin.Android.Build.Tasks/Tests/Xamarin.Android.Build.Tests/BindingBuildTest.cs +++ b/src/Xamarin.Android.Build.Tasks/Tests/Xamarin.Android.Build.Tests/BindingBuildTest.cs @@ -8,6 +8,7 @@ using System.Xml.Linq; using Xamarin.ProjectTools; using Microsoft.Android.Build.Tasks; +using Microsoft.Build.Framework; namespace Xamarin.Android.Build.Tests { @@ -86,6 +87,7 @@ public void BindingLibraryIncremental (string classParser) }); proj.AndroidClassParser = classParser; using (var b = CreateDllBuilder ()) { + b.Verbosity = LoggerVerbosity.Detailed; Assert.IsTrue (b.Build (proj), "Build should have succeeded."); var assemblyPath = Path.Combine (Root, b.ProjectDirectory, proj.OutputPath, $"{proj.ProjectName}.dll"); @@ -679,6 +681,7 @@ public void BindingWithAndroidJavaSource () }; using (var libBuilder = CreateDllBuilder (Path.Combine (path, lib.ProjectName), cleanupAfterSuccessfulBuild: false)) using (var appBuilder = CreateApkBuilder (Path.Combine (path, app.ProjectName))) { + libBuilder.Verbosity = LoggerVerbosity.Detailed; Assert.IsTrue (libBuilder.Build (lib), "Library build should have succeeded."); var generatedCode = Path.Combine (Root, libBuilder.ProjectDirectory, lib.IntermediateOutputPath, "generated", "src", "Com.Xamarin.Android.Test.Msbuildtest.JavaSourceTestExtension.cs"); diff --git a/src/Xamarin.Android.Build.Tasks/Tests/Xamarin.Android.Build.Tests/BuildTest.cs b/src/Xamarin.Android.Build.Tasks/Tests/Xamarin.Android.Build.Tests/BuildTest.cs index fce460a2c6d..f76ef5ed22a 100644 --- a/src/Xamarin.Android.Build.Tasks/Tests/Xamarin.Android.Build.Tests/BuildTest.cs +++ b/src/Xamarin.Android.Build.Tasks/Tests/Xamarin.Android.Build.Tests/BuildTest.cs @@ -363,6 +363,7 @@ public void CheckItemMetadata ([Values (true, false)] bool isRelease) mainAxml.MetadataValues = "CustomData=ResourceMetaDataOK"; using (var builder = CreateApkBuilder (string.Format ("temp/CheckItemMetadata_{0}", isRelease))) { + builder.Verbosity = LoggerVerbosity.Detailed; builder.Build (proj); StringAssertEx.Contains ("AssetMetaDataOK", builder.LastBuildOutput, "Metadata was not copied for AndroidAsset"); StringAssertEx.Contains ("ResourceMetaDataOK", builder.LastBuildOutput, "Metadata was not copied for AndroidResource"); @@ -698,6 +699,7 @@ public void BuildAfterUpgradingNuget () //[TearDown] will still delete if test outcome successful, I need logs if assertions fail but build passes b.CleanupAfterSuccessfulBuild = b.CleanupOnDispose = false; + b.Verbosity = LoggerVerbosity.Detailed; var projectDir = Path.Combine (Root, b.ProjectDirectory); if (Directory.Exists (projectDir)) Directory.Delete (projectDir, true); diff --git a/src/Xamarin.Android.Build.Tasks/Tests/Xamarin.Android.Build.Tests/BuildTest2.cs b/src/Xamarin.Android.Build.Tasks/Tests/Xamarin.Android.Build.Tests/BuildTest2.cs index d9b48da2234..b517429a188 100644 --- a/src/Xamarin.Android.Build.Tasks/Tests/Xamarin.Android.Build.Tests/BuildTest2.cs +++ b/src/Xamarin.Android.Build.Tasks/Tests/Xamarin.Android.Build.Tests/BuildTest2.cs @@ -456,6 +456,7 @@ public void SkipConvertResourcesCases () WebContent = "https://repo1.maven.org/maven2/com/balysv/material-menu/1.1.0/material-menu-1.1.0.aar" }); using (var b = CreateApkBuilder (Path.Combine ("temp", TestName))) { + b.Verbosity = LoggerVerbosity.Detailed; Assert.IsTrue (b.Build (proj), "Build should have succeeded."); Assert.IsFalse (b.Output.IsTargetSkipped (target), $"`{target}` should not be skipped."); diff --git a/src/Xamarin.Android.Build.Tasks/Tests/Xamarin.Android.Build.Tests/CodeBehindTests.cs b/src/Xamarin.Android.Build.Tasks/Tests/Xamarin.Android.Build.Tests/CodeBehindTests.cs index 59a6d1742ed..da088199ffd 100644 --- a/src/Xamarin.Android.Build.Tasks/Tests/Xamarin.Android.Build.Tests/CodeBehindTests.cs +++ b/src/Xamarin.Android.Build.Tasks/Tests/Xamarin.Android.Build.Tests/CodeBehindTests.cs @@ -20,6 +20,7 @@ sealed class LocalBuilder : Builder public LocalBuilder () { BuildingInsideVisualStudio = false; + Verbosity = LoggerVerbosity.Detailed; } public bool Build (string projectOrSolution, string target, string [] parameters = null, Dictionary environmentVariables = null) diff --git a/src/Xamarin.Android.Build.Tasks/Tests/Xamarin.Android.Build.Tests/DeferredBuildTest.cs b/src/Xamarin.Android.Build.Tasks/Tests/Xamarin.Android.Build.Tests/DeferredBuildTest.cs index e486cf3c7a8..73a8f41d9a6 100644 --- a/src/Xamarin.Android.Build.Tasks/Tests/Xamarin.Android.Build.Tests/DeferredBuildTest.cs +++ b/src/Xamarin.Android.Build.Tasks/Tests/Xamarin.Android.Build.Tests/DeferredBuildTest.cs @@ -1,6 +1,7 @@ using NUnit.Framework; using System.IO; using Xamarin.ProjectTools; +using Microsoft.Build.Framework; namespace Xamarin.Android.Build.Tests { @@ -19,6 +20,7 @@ public void SelectivelyRunUpdateAndroidResources () app.SetProperty ("AndroidUseIntermediateDesignerFile", "True"); using (var appBuilder = CreateApkBuilder (Path.Combine (path, app.ProjectName))) { + appBuilder.Verbosity = LoggerVerbosity.Detailed; Assert.IsTrue (appBuilder.DesignTimeBuild (app, parameters: new string[]{ "BuildingInsideVisualStudio=true", "DeferredBuildSupported=true", diff --git a/src/Xamarin.Android.Build.Tasks/Tests/Xamarin.Android.Build.Tests/DesignerTests.cs b/src/Xamarin.Android.Build.Tasks/Tests/Xamarin.Android.Build.Tests/DesignerTests.cs index 50a90784a83..c8288443d5a 100644 --- a/src/Xamarin.Android.Build.Tasks/Tests/Xamarin.Android.Build.Tests/DesignerTests.cs +++ b/src/Xamarin.Android.Build.Tasks/Tests/Xamarin.Android.Build.Tests/DesignerTests.cs @@ -5,6 +5,7 @@ using System.Xml.Linq; using NUnit.Framework; using Xamarin.ProjectTools; +using Microsoft.Build.Framework; namespace Xamarin.Android.Build.Tests { @@ -214,6 +215,7 @@ public void GetExtraLibraryLocationsForDesigner () // Each NuGet package and AAR file are in libraryprojectimports.cache, AndroidJavaSource is not const int libraryProjectImportsJars = 55; using (var b = CreateApkBuilder (Path.Combine ("temp", TestName), false, false)) { + b.Verbosity = LoggerVerbosity.Detailed; // GetExtraLibraryLocationsForDesigner on new project Assert.IsTrue (b.RunTarget (proj, target, parameters: DesignerParameters), $"build should have succeeded for target `{target}` 1"); diff --git a/src/Xamarin.Android.Build.Tasks/Tests/Xamarin.Android.Build.Tests/IncrementalBuildTest.cs b/src/Xamarin.Android.Build.Tasks/Tests/Xamarin.Android.Build.Tests/IncrementalBuildTest.cs index 265018bc4bd..55c05640ea6 100644 --- a/src/Xamarin.Android.Build.Tasks/Tests/Xamarin.Android.Build.Tests/IncrementalBuildTest.cs +++ b/src/Xamarin.Android.Build.Tasks/Tests/Xamarin.Android.Build.Tests/IncrementalBuildTest.cs @@ -750,6 +750,7 @@ public CustomTextView(Context context, IAttributeSet attributes) : base(context, using (var libBuilder = CreateDllBuilder (Path.Combine (path, lib.ProjectName), false)) using (var appBuilder = CreateApkBuilder (Path.Combine (path, app.ProjectName))) { + appBuilder.Verbosity = LoggerVerbosity.Detailed; libBuilder.BuildLogFile = "build.log"; Assert.IsTrue (libBuilder.Build (lib), "first library build should have succeeded."); appBuilder.BuildLogFile = "build.log"; @@ -1175,6 +1176,7 @@ public void DesignTimeBuildSignAndroidPackage () proj.SetProperty ("AndroidUseDesignerAssembly", "true"); var builder = CreateApkBuilder (); var parameters = new [] { "BuildingInsideVisualStudio=true"}; + builder.Verbosity = LoggerVerbosity.Detailed; builder.BuildLogFile = "update.log"; Assert.IsTrue (builder.RunTarget (proj, "Compile", parameters: parameters), $"{proj.ProjectName} should succeed"); builder.Output.AssertTargetIsNotSkipped ("_GenerateResourceCaseMap", occurrence: 1); diff --git a/src/Xamarin.Android.Build.Tasks/Tests/Xamarin.Android.Build.Tests/PackagingTest.cs b/src/Xamarin.Android.Build.Tasks/Tests/Xamarin.Android.Build.Tests/PackagingTest.cs index 6cae7187dc4..72c37fd533f 100644 --- a/src/Xamarin.Android.Build.Tasks/Tests/Xamarin.Android.Build.Tests/PackagingTest.cs +++ b/src/Xamarin.Android.Build.Tasks/Tests/Xamarin.Android.Build.Tests/PackagingTest.cs @@ -9,6 +9,7 @@ using Xamarin.Tools.Zip; using Xamarin.Android.Tasks; using Xamarin.Android.Tools; +using Microsoft.Build.Framework; namespace Xamarin.Android.Build.Tests { @@ -544,6 +545,7 @@ public class Test Assert.IsTrue (zip.ContainsEntry ($"AndroidManifest.xml"), "Jar should contain AndroidManifest.xml"); } using (var b = CreateApkBuilder (Path.Combine (path, app.ProjectName))) { + b.Verbosity = LoggerVerbosity.Detailed; Assert.IsTrue (b.Build (app), "Build of jar should have succeeded."); var jar = "2965D0C9A2D5DB1E.jar"; string expected = $"Ignoring jar entry AndroidManifest.xml from {jar}: the same file already exists in the apk"; @@ -561,6 +563,7 @@ public void CheckExcludedFilesAreMissing () }; proj.PackageReferences.Add (KnownPackages.Xamarin_Kotlin_StdLib_Common); using (var b = CreateApkBuilder ()) { + b.Verbosity = LoggerVerbosity.Detailed; Assert.IsTrue (b.Build (proj), "Build should have succeeded."); var apk = Path.Combine (Root, b.ProjectDirectory, proj.OutputPath, $"{proj.PackageName}-Signed.apk"); @@ -581,6 +584,7 @@ public void CheckExcludedFilesCanBeModified () }; proj.PackageReferences.Add (KnownPackages.Xamarin_Kotlin_StdLib_Common); using (var b = CreateApkBuilder ()) { + b.Verbosity = LoggerVerbosity.Detailed; Assert.IsTrue (b.Build (proj), "Build should have succeeded."); var apk = Path.Combine (Root, b.ProjectDirectory, proj.OutputPath, $"{proj.PackageName}-Signed.apk"); diff --git a/src/Xamarin.Android.Build.Tasks/Tests/Xamarin.Android.Build.Tests/Tasks/CheckClientHandlerTypeTests.cs b/src/Xamarin.Android.Build.Tasks/Tests/Xamarin.Android.Build.Tests/Tasks/CheckClientHandlerTypeTests.cs index a1e0d1b096f..5db3db21aae 100644 --- a/src/Xamarin.Android.Build.Tasks/Tests/Xamarin.Android.Build.Tests/Tasks/CheckClientHandlerTypeTests.cs +++ b/src/Xamarin.Android.Build.Tasks/Tests/Xamarin.Android.Build.Tests/Tasks/CheckClientHandlerTypeTests.cs @@ -28,6 +28,7 @@ public void ErrorIsNotRaised (string handler) }; proj.SetProperty ("AndroidHttpClientHandlerType", handler); using (var b = CreateApkBuilder (path)) { + b.Verbosity = LoggerVerbosity.Detailed; b.Build (proj); intermediatePath = Path.Combine (path,proj.IntermediateOutputPath); targetSkipped = b.Output.IsTargetSkipped ("_CheckAndroidHttpClientHandlerType"); diff --git a/src/Xamarin.Android.Build.Tasks/Tests/Xamarin.Android.Build.Tests/XASdkTests.cs b/src/Xamarin.Android.Build.Tasks/Tests/Xamarin.Android.Build.Tests/XASdkTests.cs index f0d0cecf12b..b8524cc6f7e 100644 --- a/src/Xamarin.Android.Build.Tasks/Tests/Xamarin.Android.Build.Tests/XASdkTests.cs +++ b/src/Xamarin.Android.Build.Tasks/Tests/Xamarin.Android.Build.Tests/XASdkTests.cs @@ -224,6 +224,7 @@ public void DotNetPublish ([Values (false, true)] bool isRelease, [ValueSource(n var projBuilder = CreateDllBuilder (); projBuilder.Save (proj); var dotnet = new DotNetCLI (Path.Combine (Root, projBuilder.ProjectDirectory, proj.ProjectFilePath)); + dotnet.Verbosity = "detailed"; string[] configParam = isRelease ? new [] { "Configuration=Release" } : new [] { "Configuration=Debug" }; Assert.IsTrue (dotnet.Publish (parameters: configParam), "first `dotnet publish` should succeed"); diff --git a/src/Xamarin.Android.Build.Tasks/Tests/Xamarin.ProjectTools/Common/Builder.cs b/src/Xamarin.Android.Build.Tasks/Tests/Xamarin.ProjectTools/Common/Builder.cs index 5ecf6827bd3..b6253e466bc 100644 --- a/src/Xamarin.Android.Build.Tasks/Tests/Xamarin.ProjectTools/Common/Builder.cs +++ b/src/Xamarin.Android.Build.Tasks/Tests/Xamarin.ProjectTools/Common/Builder.cs @@ -33,7 +33,7 @@ public class Builder : IDisposable /// Passes /m:N to MSBuild, defaults to null to omit the /m parameter completely. /// public int? MaxCpuCount { get; set; } - public LoggerVerbosity Verbosity { get; set; } = LoggerVerbosity.Normal; + public LoggerVerbosity Verbosity { get; set; } = LoggerVerbosity.Quiet; public IEnumerable LastBuildOutput { get { if (lastBuildOutput != null) { diff --git a/src/Xamarin.Android.Build.Tasks/Tests/Xamarin.ProjectTools/Common/DotNetCLI.cs b/src/Xamarin.Android.Build.Tasks/Tests/Xamarin.ProjectTools/Common/DotNetCLI.cs index 33fbb8b1df0..5fee4387ba5 100644 --- a/src/Xamarin.Android.Build.Tasks/Tests/Xamarin.ProjectTools/Common/DotNetCLI.cs +++ b/src/Xamarin.Android.Build.Tasks/Tests/Xamarin.ProjectTools/Common/DotNetCLI.cs @@ -11,7 +11,7 @@ public class DotNetCLI { public string BuildLogFile { get; set; } public string ProcessLogFile { get; set; } - public string Verbosity { get; set; } = "n"; + public string Verbosity { get; set; } = "quiet"; public string AndroidSdkPath { get; set; } = AndroidSdkResolver.GetAndroidSdkPath (); public string JavaSdkPath { get; set; } = AndroidSdkResolver.GetJavaSdkPath (); public string ProjectDirectory { get; set; } diff --git a/tests/MSBuildDeviceIntegration/Tests/DebuggingTest.cs b/tests/MSBuildDeviceIntegration/Tests/DebuggingTest.cs index 72fce3201d2..81cccab53d5 100755 --- a/tests/MSBuildDeviceIntegration/Tests/DebuggingTest.cs +++ b/tests/MSBuildDeviceIntegration/Tests/DebuggingTest.cs @@ -9,6 +9,7 @@ using NUnit.Framework; using Xamarin.ProjectTools; using System.Collections.Generic; +using Microsoft.Build.Framework; namespace Xamarin.Android.Build.Tests { @@ -392,6 +393,7 @@ public Foo () app.SetDefaultTargetDevice (); using (var libBuilder = CreateDllBuilder (Path.Combine (path, lib.ProjectName))) using (var appBuilder = CreateApkBuilder (Path.Combine (path, app.ProjectName))) { + appBuilder.Verbosity = LoggerVerbosity.Detailed; Assert.True (libBuilder.Build (lib), "Library should have built."); SetTargetFrameworkAndManifest (app, appBuilder, app.TargetFramework == "net8.0-android" ? 34 : null); diff --git a/tests/MSBuildDeviceIntegration/Tests/InstallTests.cs b/tests/MSBuildDeviceIntegration/Tests/InstallTests.cs index 5f310d91f65..3217c7da035 100644 --- a/tests/MSBuildDeviceIntegration/Tests/InstallTests.cs +++ b/tests/MSBuildDeviceIntegration/Tests/InstallTests.cs @@ -538,6 +538,7 @@ public void IncrementalFastDeployment () long lib1FirstBuildSize = new FileInfo (Path.Combine (rootPath, lib1.ProjectName, lib1.OutputPath, "Library1.dll")).Length; using (var builder = CreateApkBuilder (Path.Combine (rootPath, app.ProjectName))) { + builder.Verbosity = LoggerVerbosity.Detailed; builder.ThrowOnBuildFailure = false; builder.BuildLogFile = "install.log"; Assert.IsTrue (builder.Install (app), "First install should have succeeded."); @@ -653,6 +654,7 @@ public String test(){ }, }; using (var b = CreateApkBuilder ()) { + b.Verbosity = LoggerVerbosity.Detailed; b.ThrowOnBuildFailure = false; Assert.IsTrue (b.Build (proj), "Build should have succeeded."); b.AssertHasNoWarnings (); diff --git a/tests/MSBuildDeviceIntegration/Tests/InstantRunTest.cs b/tests/MSBuildDeviceIntegration/Tests/InstantRunTest.cs index 5df3689abb5..b7b83b7206c 100644 --- a/tests/MSBuildDeviceIntegration/Tests/InstantRunTest.cs +++ b/tests/MSBuildDeviceIntegration/Tests/InstantRunTest.cs @@ -3,6 +3,7 @@ using System.Linq; using NUnit.Framework; using Xamarin.ProjectTools; +using Microsoft.Build.Framework; namespace Xamarin.Android.Build.Tests { @@ -138,6 +139,7 @@ public void SkipFastDevAlreadyInstalledFile () proj.PackageReferences.Add (KnownPackages.AndroidXAppCompat); proj.MainActivity = proj.DefaultMainActivity.Replace (": Activity", ": AndroidX.AppCompat.App.AppCompatActivity"); var b = CreateApkBuilder (Path.Combine ("temp", TestName)); + b.Verbosity = LoggerVerbosity.Detailed; Assert.IsTrue (b.Install (proj), "install should have succeeded."); File.WriteAllLines (Path.Combine (Root, b.ProjectDirectory, b.BuildLogFile + ".bak"), b.LastBuildOutput); @@ -182,6 +184,7 @@ public void SkipFastDevAlreadyInstalledResources (Package [] packages, string ba if (baseActivityClass != null) proj.MainActivity = proj.DefaultMainActivity.Replace (": Activity", ": " + baseActivityClass); var b = CreateApkBuilder ("temp/SkipFastDevAlreadyInstalledResources"); + b.Verbosity = LoggerVerbosity.Detailed; Assert.IsTrue (b.Install (proj), "install should have succeeded."); // slightly (but significantly) modify the resources that causes packaged_resources changes. @@ -206,6 +209,7 @@ public void InstantRunResourceChange () }; proj.SetDefaultTargetDevice (); using (var b = CreateApkBuilder (Path.Combine ("temp", TestName))) { + b.Verbosity = LoggerVerbosity.Detailed; Assert.IsTrue (b.Install (proj), "install should have succeeded. 0"); var logLines = b.LastBuildOutput; Assert.IsTrue (logLines.Any (l => l.Contains ("Building target \"_BuildApkFastDev\" completely.") || @@ -237,6 +241,7 @@ public void InstantRunFastDevDexes ([Values (false, true)] bool useEmbeddedDex) proj.SetDefaultTargetDevice (); proj.AndroidManifest = proj.AndroidManifest.Replace (" l.Contains ("Building target \"_BuildApkFastDev\" completely.") || From 961db584a378acc48e9e2ba6258c0de972fac1e2 Mon Sep 17 00:00:00 2001 From: Peter Collins Date: Thu, 6 Jun 2024 10:42:18 -0400 Subject: [PATCH 5/7] Default to normal verbosity --- .../Tests/Xamarin.ProjectTools/Common/Builder.cs | 2 +- .../Tests/Xamarin.ProjectTools/Common/DotNetCLI.cs | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/src/Xamarin.Android.Build.Tasks/Tests/Xamarin.ProjectTools/Common/Builder.cs b/src/Xamarin.Android.Build.Tasks/Tests/Xamarin.ProjectTools/Common/Builder.cs index b6253e466bc..5ecf6827bd3 100644 --- a/src/Xamarin.Android.Build.Tasks/Tests/Xamarin.ProjectTools/Common/Builder.cs +++ b/src/Xamarin.Android.Build.Tasks/Tests/Xamarin.ProjectTools/Common/Builder.cs @@ -33,7 +33,7 @@ public class Builder : IDisposable /// Passes /m:N to MSBuild, defaults to null to omit the /m parameter completely. /// public int? MaxCpuCount { get; set; } - public LoggerVerbosity Verbosity { get; set; } = LoggerVerbosity.Quiet; + public LoggerVerbosity Verbosity { get; set; } = LoggerVerbosity.Normal; public IEnumerable LastBuildOutput { get { if (lastBuildOutput != null) { diff --git a/src/Xamarin.Android.Build.Tasks/Tests/Xamarin.ProjectTools/Common/DotNetCLI.cs b/src/Xamarin.Android.Build.Tasks/Tests/Xamarin.ProjectTools/Common/DotNetCLI.cs index 5fee4387ba5..bc07fbb44db 100644 --- a/src/Xamarin.Android.Build.Tasks/Tests/Xamarin.ProjectTools/Common/DotNetCLI.cs +++ b/src/Xamarin.Android.Build.Tasks/Tests/Xamarin.ProjectTools/Common/DotNetCLI.cs @@ -11,7 +11,7 @@ public class DotNetCLI { public string BuildLogFile { get; set; } public string ProcessLogFile { get; set; } - public string Verbosity { get; set; } = "quiet"; + public string Verbosity { get; set; } = "normal"; public string AndroidSdkPath { get; set; } = AndroidSdkResolver.GetAndroidSdkPath (); public string JavaSdkPath { get; set; } = AndroidSdkResolver.GetJavaSdkPath (); public string ProjectDirectory { get; set; } From ab8ac26dad692d8355d0574257fdfb8016c02b28 Mon Sep 17 00:00:00 2001 From: Peter Collins Date: Thu, 6 Jun 2024 12:40:29 -0400 Subject: [PATCH 6/7] Fix remaining issues --- .../Xamarin.Android.Build.Tests/AndroidUpdateResourcesTest.cs | 1 + .../Tests/Xamarin.Android.Build.Tests/BuildWithLibraryTests.cs | 1 - .../Tests/Xamarin.Android.Build.Tests/Utilities/BaseTest.cs | 2 +- 3 files changed, 2 insertions(+), 2 deletions(-) diff --git a/src/Xamarin.Android.Build.Tasks/Tests/Xamarin.Android.Build.Tests/AndroidUpdateResourcesTest.cs b/src/Xamarin.Android.Build.Tasks/Tests/Xamarin.Android.Build.Tests/AndroidUpdateResourcesTest.cs index 45588c5607e..e11d2e418af 100644 --- a/src/Xamarin.Android.Build.Tasks/Tests/Xamarin.Android.Build.Tests/AndroidUpdateResourcesTest.cs +++ b/src/Xamarin.Android.Build.Tasks/Tests/Xamarin.Android.Build.Tests/AndroidUpdateResourcesTest.cs @@ -1029,6 +1029,7 @@ public void BuildAppWithManagedResourceParserAndLibraries () appProj.SetProperty ("AndroidUseManagedDesignTimeResourceGenerator", "True"); appProj.SetProperty ("AndroidUseDesignerAssembly", "false"); using (var libBuilder = CreateDllBuilder (Path.Combine (path, libProj.ProjectName), false, false)) { + libBuilder.Verbosity = LoggerVerbosity.Detailed; libBuilder.AutomaticNuGetRestore = false; Assert.IsTrue (libBuilder.RunTarget (libProj, "Restore"), "Library project should have restored."); libBuilder.ThrowOnBuildFailure = false; diff --git a/src/Xamarin.Android.Build.Tasks/Tests/Xamarin.Android.Build.Tests/BuildWithLibraryTests.cs b/src/Xamarin.Android.Build.Tasks/Tests/Xamarin.Android.Build.Tests/BuildWithLibraryTests.cs index 0e8a721998f..43d674f0085 100644 --- a/src/Xamarin.Android.Build.Tasks/Tests/Xamarin.Android.Build.Tests/BuildWithLibraryTests.cs +++ b/src/Xamarin.Android.Build.Tasks/Tests/Xamarin.Android.Build.Tests/BuildWithLibraryTests.cs @@ -427,7 +427,6 @@ public void BuildWithNativeLibraries ([Values (true, false)] bool isRelease) } } } - Directory.Delete (path, recursive: true); } [Test] diff --git a/src/Xamarin.Android.Build.Tasks/Tests/Xamarin.Android.Build.Tests/Utilities/BaseTest.cs b/src/Xamarin.Android.Build.Tasks/Tests/Xamarin.Android.Build.Tests/Utilities/BaseTest.cs index 4b99199d45c..a42ec7ee3f3 100644 --- a/src/Xamarin.Android.Build.Tasks/Tests/Xamarin.Android.Build.Tests/Utilities/BaseTest.cs +++ b/src/Xamarin.Android.Build.Tasks/Tests/Xamarin.Android.Build.Tests/Utilities/BaseTest.cs @@ -606,7 +606,7 @@ protected virtual void CleanupTest () FileSystemUtils.SetDirectoryWriteable (output); try { Directory.Delete (output, recursive: true); - } catch (IOException ex) { + } catch (Exception ex) { // This happens on CI occasionally, let's not fail the test TestContext.Out.WriteLine ($"Failed to delete '{output}': {ex}"); } From ee7ab8491e0f10f38120df24df0d088b8073eace Mon Sep 17 00:00:00 2001 From: Peter Collins Date: Thu, 6 Jun 2024 16:52:36 -0400 Subject: [PATCH 7/7] Another try/catch for test output cleanup --- .../Tests/Xamarin.ProjectTools/Common/SolutionBuilder.cs | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) diff --git a/src/Xamarin.Android.Build.Tasks/Tests/Xamarin.ProjectTools/Common/SolutionBuilder.cs b/src/Xamarin.Android.Build.Tasks/Tests/Xamarin.ProjectTools/Common/SolutionBuilder.cs index 2de2bbabf23..8c3eea39321 100644 --- a/src/Xamarin.Android.Build.Tasks/Tests/Xamarin.ProjectTools/Common/SolutionBuilder.cs +++ b/src/Xamarin.Android.Build.Tasks/Tests/Xamarin.ProjectTools/Common/SolutionBuilder.cs @@ -94,7 +94,11 @@ protected override void Dispose (bool disposing) { if (disposing) if (BuildSucceeded) - Directory.Delete (SolutionPath, recursive: true); + try { + Directory.Delete (SolutionPath, recursive: true); + } catch (Exception) { + // This happens on CI occasionally, let's not fail the test + } } } }