xamarin-macios/tests/common/BinLog.cs

215 строки
6.1 KiB
C#
Исходник Обычный вид История

#nullable enable
using System;
[tests] Update .NET unit tests to parse the binlog. (#10031) Update the .NET unit tests to parse the binlog instead of standard output for specific build output, since we're not printing a diagnostic build log to standard output anymore. This fixes numerous test failures in the .NET unit tests: * Xamarin.Tests.DotNetProjectTest.BuildBindingsTest("watchOS"): Assemblies Expected: not <empty> But was: <empty> * Xamarin.Tests.DotNetProjectTest.BuildBundledResources("iOS","monotouch"): Assemblies Expected: not <empty> But was: <empty> * Xamarin.Tests.DotNetProjectTest.BuildEmbeddedResourcesTest("iOS"): Assemblies Expected: not <empty> But was: <empty> * Xamarin.Tests.DotNetProjectTest.BuildBundledResources("watchOS","monotouch"): Assemblies Expected: not <empty> But was: <empty> * Xamarin.Tests.DotNetProjectTest.BuildBindingsTest2("tvOS"): Assemblies Expected: not <empty> But was: <empty> * Xamarin.Tests.DotNetProjectTest.BuildBindingsTest("tvOS"): Assemblies Expected: not <empty> But was: <empty> * Xamarin.Tests.DotNetProjectTest.BuildBindingsTest("iOS"): Assemblies Expected: not <empty> But was: <empty> * Xamarin.Tests.DotNetProjectTest.BuildBundledResources("tvOS","monotouch"): Assemblies Expected: not <empty> But was: <empty> * Xamarin.Tests.DotNetProjectTest.BuildMyTVApp: Linker did not executed as expected. Expected: String containing "Building target "_RunILLink" completely." But was: "Microsoft (R) Build Engine version 16.8.0-preview-20475-05+aed5e7ed0 for .NET [...]" * Xamarin.Tests.DotNetProjectTest.BuildMySingleView: Linker did not executed as expected. Expected: String containing "Building target "_RunILLink" completely." But was: "Microsoft (R) Build Engine version 16.8.0-preview-20475-05+aed5e7ed0 for .NET [...]" * Xamarin.Tests.DotNetProjectTest.BuildInterdependentBindingProjects("iOS"): Assemblies Expected: not <empty> But was: <empty> * Xamarin.Tests.DotNetProjectTest.BuildEmbeddedResourcesTest("tvOS"): Assemblies Expected: not <empty> But was: <empty> * Xamarin.Tests.DotNetProjectTest.BuildBindingsTest2("watchOS"): Assemblies Expected: not <empty> But was: <empty> * Xamarin.Tests.DotNetProjectTest.BuildFSharpLibraryTest("tvOS"): Assemblies Expected: not <empty> But was: <empty> * Xamarin.Tests.DotNetProjectTest.BuildFSharpLibraryTest("watchOS"): Assemblies Expected: not <empty> But was: <empty> * Xamarin.Tests.DotNetProjectTest.BuildEmbeddedResourcesTest("watchOS"): Assemblies Expected: not <empty> But was: <empty> * Xamarin.Tests.DotNetProjectTest.BuildBindingsTest2("iOS"): Assemblies Expected: not <empty> But was: <empty> * Xamarin.Tests.DotNetProjectTest.BuildInterdependentBindingProjects("tvOS"): Assemblies Expected: not <empty> But was: <empty> * Xamarin.Tests.DotNetProjectTest.BuildFSharpLibraryTest("iOS"): Assemblies Expected: not <empty> But was: <empty>
2020-11-03 20:20:33 +03:00
using System.Collections.Generic;
using System.Linq;
[tests] Update .NET unit tests to parse the binlog. (#10031) Update the .NET unit tests to parse the binlog instead of standard output for specific build output, since we're not printing a diagnostic build log to standard output anymore. This fixes numerous test failures in the .NET unit tests: * Xamarin.Tests.DotNetProjectTest.BuildBindingsTest("watchOS"): Assemblies Expected: not <empty> But was: <empty> * Xamarin.Tests.DotNetProjectTest.BuildBundledResources("iOS","monotouch"): Assemblies Expected: not <empty> But was: <empty> * Xamarin.Tests.DotNetProjectTest.BuildEmbeddedResourcesTest("iOS"): Assemblies Expected: not <empty> But was: <empty> * Xamarin.Tests.DotNetProjectTest.BuildBundledResources("watchOS","monotouch"): Assemblies Expected: not <empty> But was: <empty> * Xamarin.Tests.DotNetProjectTest.BuildBindingsTest2("tvOS"): Assemblies Expected: not <empty> But was: <empty> * Xamarin.Tests.DotNetProjectTest.BuildBindingsTest("tvOS"): Assemblies Expected: not <empty> But was: <empty> * Xamarin.Tests.DotNetProjectTest.BuildBindingsTest("iOS"): Assemblies Expected: not <empty> But was: <empty> * Xamarin.Tests.DotNetProjectTest.BuildBundledResources("tvOS","monotouch"): Assemblies Expected: not <empty> But was: <empty> * Xamarin.Tests.DotNetProjectTest.BuildMyTVApp: Linker did not executed as expected. Expected: String containing "Building target "_RunILLink" completely." But was: "Microsoft (R) Build Engine version 16.8.0-preview-20475-05+aed5e7ed0 for .NET [...]" * Xamarin.Tests.DotNetProjectTest.BuildMySingleView: Linker did not executed as expected. Expected: String containing "Building target "_RunILLink" completely." But was: "Microsoft (R) Build Engine version 16.8.0-preview-20475-05+aed5e7ed0 for .NET [...]" * Xamarin.Tests.DotNetProjectTest.BuildInterdependentBindingProjects("iOS"): Assemblies Expected: not <empty> But was: <empty> * Xamarin.Tests.DotNetProjectTest.BuildEmbeddedResourcesTest("tvOS"): Assemblies Expected: not <empty> But was: <empty> * Xamarin.Tests.DotNetProjectTest.BuildBindingsTest2("watchOS"): Assemblies Expected: not <empty> But was: <empty> * Xamarin.Tests.DotNetProjectTest.BuildFSharpLibraryTest("tvOS"): Assemblies Expected: not <empty> But was: <empty> * Xamarin.Tests.DotNetProjectTest.BuildFSharpLibraryTest("watchOS"): Assemblies Expected: not <empty> But was: <empty> * Xamarin.Tests.DotNetProjectTest.BuildEmbeddedResourcesTest("watchOS"): Assemblies Expected: not <empty> But was: <empty> * Xamarin.Tests.DotNetProjectTest.BuildBindingsTest2("iOS"): Assemblies Expected: not <empty> But was: <empty> * Xamarin.Tests.DotNetProjectTest.BuildInterdependentBindingProjects("tvOS"): Assemblies Expected: not <empty> But was: <empty> * Xamarin.Tests.DotNetProjectTest.BuildFSharpLibraryTest("iOS"): Assemblies Expected: not <empty> But was: <empty>
2020-11-03 20:20:33 +03:00
using System.Text;
using Microsoft.Build.Framework;
using Microsoft.Build.Logging;
[tests] Update .NET unit tests to parse the binlog. (#10031) Update the .NET unit tests to parse the binlog instead of standard output for specific build output, since we're not printing a diagnostic build log to standard output anymore. This fixes numerous test failures in the .NET unit tests: * Xamarin.Tests.DotNetProjectTest.BuildBindingsTest("watchOS"): Assemblies Expected: not <empty> But was: <empty> * Xamarin.Tests.DotNetProjectTest.BuildBundledResources("iOS","monotouch"): Assemblies Expected: not <empty> But was: <empty> * Xamarin.Tests.DotNetProjectTest.BuildEmbeddedResourcesTest("iOS"): Assemblies Expected: not <empty> But was: <empty> * Xamarin.Tests.DotNetProjectTest.BuildBundledResources("watchOS","monotouch"): Assemblies Expected: not <empty> But was: <empty> * Xamarin.Tests.DotNetProjectTest.BuildBindingsTest2("tvOS"): Assemblies Expected: not <empty> But was: <empty> * Xamarin.Tests.DotNetProjectTest.BuildBindingsTest("tvOS"): Assemblies Expected: not <empty> But was: <empty> * Xamarin.Tests.DotNetProjectTest.BuildBindingsTest("iOS"): Assemblies Expected: not <empty> But was: <empty> * Xamarin.Tests.DotNetProjectTest.BuildBundledResources("tvOS","monotouch"): Assemblies Expected: not <empty> But was: <empty> * Xamarin.Tests.DotNetProjectTest.BuildMyTVApp: Linker did not executed as expected. Expected: String containing "Building target "_RunILLink" completely." But was: "Microsoft (R) Build Engine version 16.8.0-preview-20475-05+aed5e7ed0 for .NET [...]" * Xamarin.Tests.DotNetProjectTest.BuildMySingleView: Linker did not executed as expected. Expected: String containing "Building target "_RunILLink" completely." But was: "Microsoft (R) Build Engine version 16.8.0-preview-20475-05+aed5e7ed0 for .NET [...]" * Xamarin.Tests.DotNetProjectTest.BuildInterdependentBindingProjects("iOS"): Assemblies Expected: not <empty> But was: <empty> * Xamarin.Tests.DotNetProjectTest.BuildEmbeddedResourcesTest("tvOS"): Assemblies Expected: not <empty> But was: <empty> * Xamarin.Tests.DotNetProjectTest.BuildBindingsTest2("watchOS"): Assemblies Expected: not <empty> But was: <empty> * Xamarin.Tests.DotNetProjectTest.BuildFSharpLibraryTest("tvOS"): Assemblies Expected: not <empty> But was: <empty> * Xamarin.Tests.DotNetProjectTest.BuildFSharpLibraryTest("watchOS"): Assemblies Expected: not <empty> But was: <empty> * Xamarin.Tests.DotNetProjectTest.BuildEmbeddedResourcesTest("watchOS"): Assemblies Expected: not <empty> But was: <empty> * Xamarin.Tests.DotNetProjectTest.BuildBindingsTest2("iOS"): Assemblies Expected: not <empty> But was: <empty> * Xamarin.Tests.DotNetProjectTest.BuildInterdependentBindingProjects("tvOS"): Assemblies Expected: not <empty> But was: <empty> * Xamarin.Tests.DotNetProjectTest.BuildFSharpLibraryTest("iOS"): Assemblies Expected: not <empty> But was: <empty>
2020-11-03 20:20:33 +03:00
using Microsoft.Build.Logging.StructuredLogger;
#nullable enable
namespace Xamarin.Tests {
public class BuildLogEvent {
public BuildLogEventType Type;
public int ColumnNumber;
public int EndColumnNumber;
public int LineNumber;
public int EndLineNumber;
public string? Code;
public string? SubCategory;
public string? File;
public string? ProjectFile;
public string? Message;
}
public enum BuildLogEventType {
Message,
Warning,
Error,
}
public class TargetExecutionResult {
public string TargetName;
public bool Skipped;
public TargetSkipReason SkipReason;
public TargetExecutionResult (string targetName, bool skipped, TargetSkipReason skipReason)
{
TargetName = targetName;
Skipped = skipped;
SkipReason = skipReason;
}
}
[tests] Update .NET unit tests to parse the binlog. (#10031) Update the .NET unit tests to parse the binlog instead of standard output for specific build output, since we're not printing a diagnostic build log to standard output anymore. This fixes numerous test failures in the .NET unit tests: * Xamarin.Tests.DotNetProjectTest.BuildBindingsTest("watchOS"): Assemblies Expected: not <empty> But was: <empty> * Xamarin.Tests.DotNetProjectTest.BuildBundledResources("iOS","monotouch"): Assemblies Expected: not <empty> But was: <empty> * Xamarin.Tests.DotNetProjectTest.BuildEmbeddedResourcesTest("iOS"): Assemblies Expected: not <empty> But was: <empty> * Xamarin.Tests.DotNetProjectTest.BuildBundledResources("watchOS","monotouch"): Assemblies Expected: not <empty> But was: <empty> * Xamarin.Tests.DotNetProjectTest.BuildBindingsTest2("tvOS"): Assemblies Expected: not <empty> But was: <empty> * Xamarin.Tests.DotNetProjectTest.BuildBindingsTest("tvOS"): Assemblies Expected: not <empty> But was: <empty> * Xamarin.Tests.DotNetProjectTest.BuildBindingsTest("iOS"): Assemblies Expected: not <empty> But was: <empty> * Xamarin.Tests.DotNetProjectTest.BuildBundledResources("tvOS","monotouch"): Assemblies Expected: not <empty> But was: <empty> * Xamarin.Tests.DotNetProjectTest.BuildMyTVApp: Linker did not executed as expected. Expected: String containing "Building target "_RunILLink" completely." But was: "Microsoft (R) Build Engine version 16.8.0-preview-20475-05+aed5e7ed0 for .NET [...]" * Xamarin.Tests.DotNetProjectTest.BuildMySingleView: Linker did not executed as expected. Expected: String containing "Building target "_RunILLink" completely." But was: "Microsoft (R) Build Engine version 16.8.0-preview-20475-05+aed5e7ed0 for .NET [...]" * Xamarin.Tests.DotNetProjectTest.BuildInterdependentBindingProjects("iOS"): Assemblies Expected: not <empty> But was: <empty> * Xamarin.Tests.DotNetProjectTest.BuildEmbeddedResourcesTest("tvOS"): Assemblies Expected: not <empty> But was: <empty> * Xamarin.Tests.DotNetProjectTest.BuildBindingsTest2("watchOS"): Assemblies Expected: not <empty> But was: <empty> * Xamarin.Tests.DotNetProjectTest.BuildFSharpLibraryTest("tvOS"): Assemblies Expected: not <empty> But was: <empty> * Xamarin.Tests.DotNetProjectTest.BuildFSharpLibraryTest("watchOS"): Assemblies Expected: not <empty> But was: <empty> * Xamarin.Tests.DotNetProjectTest.BuildEmbeddedResourcesTest("watchOS"): Assemblies Expected: not <empty> But was: <empty> * Xamarin.Tests.DotNetProjectTest.BuildBindingsTest2("iOS"): Assemblies Expected: not <empty> But was: <empty> * Xamarin.Tests.DotNetProjectTest.BuildInterdependentBindingProjects("tvOS"): Assemblies Expected: not <empty> But was: <empty> * Xamarin.Tests.DotNetProjectTest.BuildFSharpLibraryTest("iOS"): Assemblies Expected: not <empty> But was: <empty>
2020-11-03 20:20:33 +03:00
public class BinLog {
public static IEnumerable<TargetExecutionResult> GetAllTargets (string path)
{
var buildEvents = ReadBuildEvents (path).ToArray ();
var targetsStarted = buildEvents.OfType<TargetStartedEventArgs> ();
foreach (var target in targetsStarted) {
var id = target.BuildEventContext.TargetId;
if (id == -1)
throw new InvalidOperationException ($"Target '{target.TargetName}' started but no id?");
var eventsForTarget = buildEvents.Where (v => v.BuildEventContext?.TargetId == id);
var skippedEvent = eventsForTarget.OfType<TargetSkippedEventArgs> ().FirstOrDefault ();
var skipReason = (skippedEvent as TargetSkippedEventArgs2)?.SkipReason ?? TargetSkipReason.None;
yield return new TargetExecutionResult (target.TargetName, skippedEvent != null, skipReason);
}
}
public static IEnumerable<BuildEventArgs> ReadBuildEvents (string path)
[tests] Update .NET unit tests to parse the binlog. (#10031) Update the .NET unit tests to parse the binlog instead of standard output for specific build output, since we're not printing a diagnostic build log to standard output anymore. This fixes numerous test failures in the .NET unit tests: * Xamarin.Tests.DotNetProjectTest.BuildBindingsTest("watchOS"): Assemblies Expected: not <empty> But was: <empty> * Xamarin.Tests.DotNetProjectTest.BuildBundledResources("iOS","monotouch"): Assemblies Expected: not <empty> But was: <empty> * Xamarin.Tests.DotNetProjectTest.BuildEmbeddedResourcesTest("iOS"): Assemblies Expected: not <empty> But was: <empty> * Xamarin.Tests.DotNetProjectTest.BuildBundledResources("watchOS","monotouch"): Assemblies Expected: not <empty> But was: <empty> * Xamarin.Tests.DotNetProjectTest.BuildBindingsTest2("tvOS"): Assemblies Expected: not <empty> But was: <empty> * Xamarin.Tests.DotNetProjectTest.BuildBindingsTest("tvOS"): Assemblies Expected: not <empty> But was: <empty> * Xamarin.Tests.DotNetProjectTest.BuildBindingsTest("iOS"): Assemblies Expected: not <empty> But was: <empty> * Xamarin.Tests.DotNetProjectTest.BuildBundledResources("tvOS","monotouch"): Assemblies Expected: not <empty> But was: <empty> * Xamarin.Tests.DotNetProjectTest.BuildMyTVApp: Linker did not executed as expected. Expected: String containing "Building target "_RunILLink" completely." But was: "Microsoft (R) Build Engine version 16.8.0-preview-20475-05+aed5e7ed0 for .NET [...]" * Xamarin.Tests.DotNetProjectTest.BuildMySingleView: Linker did not executed as expected. Expected: String containing "Building target "_RunILLink" completely." But was: "Microsoft (R) Build Engine version 16.8.0-preview-20475-05+aed5e7ed0 for .NET [...]" * Xamarin.Tests.DotNetProjectTest.BuildInterdependentBindingProjects("iOS"): Assemblies Expected: not <empty> But was: <empty> * Xamarin.Tests.DotNetProjectTest.BuildEmbeddedResourcesTest("tvOS"): Assemblies Expected: not <empty> But was: <empty> * Xamarin.Tests.DotNetProjectTest.BuildBindingsTest2("watchOS"): Assemblies Expected: not <empty> But was: <empty> * Xamarin.Tests.DotNetProjectTest.BuildFSharpLibraryTest("tvOS"): Assemblies Expected: not <empty> But was: <empty> * Xamarin.Tests.DotNetProjectTest.BuildFSharpLibraryTest("watchOS"): Assemblies Expected: not <empty> But was: <empty> * Xamarin.Tests.DotNetProjectTest.BuildEmbeddedResourcesTest("watchOS"): Assemblies Expected: not <empty> But was: <empty> * Xamarin.Tests.DotNetProjectTest.BuildBindingsTest2("iOS"): Assemblies Expected: not <empty> But was: <empty> * Xamarin.Tests.DotNetProjectTest.BuildInterdependentBindingProjects("tvOS"): Assemblies Expected: not <empty> But was: <empty> * Xamarin.Tests.DotNetProjectTest.BuildFSharpLibraryTest("iOS"): Assemblies Expected: not <empty> But was: <empty>
2020-11-03 20:20:33 +03:00
{
var reader = new BinLogReader ();
foreach (var record in reader.ReadRecords (path)) {
if (record is null)
[tests] Update .NET unit tests to parse the binlog. (#10031) Update the .NET unit tests to parse the binlog instead of standard output for specific build output, since we're not printing a diagnostic build log to standard output anymore. This fixes numerous test failures in the .NET unit tests: * Xamarin.Tests.DotNetProjectTest.BuildBindingsTest("watchOS"): Assemblies Expected: not <empty> But was: <empty> * Xamarin.Tests.DotNetProjectTest.BuildBundledResources("iOS","monotouch"): Assemblies Expected: not <empty> But was: <empty> * Xamarin.Tests.DotNetProjectTest.BuildEmbeddedResourcesTest("iOS"): Assemblies Expected: not <empty> But was: <empty> * Xamarin.Tests.DotNetProjectTest.BuildBundledResources("watchOS","monotouch"): Assemblies Expected: not <empty> But was: <empty> * Xamarin.Tests.DotNetProjectTest.BuildBindingsTest2("tvOS"): Assemblies Expected: not <empty> But was: <empty> * Xamarin.Tests.DotNetProjectTest.BuildBindingsTest("tvOS"): Assemblies Expected: not <empty> But was: <empty> * Xamarin.Tests.DotNetProjectTest.BuildBindingsTest("iOS"): Assemblies Expected: not <empty> But was: <empty> * Xamarin.Tests.DotNetProjectTest.BuildBundledResources("tvOS","monotouch"): Assemblies Expected: not <empty> But was: <empty> * Xamarin.Tests.DotNetProjectTest.BuildMyTVApp: Linker did not executed as expected. Expected: String containing "Building target "_RunILLink" completely." But was: "Microsoft (R) Build Engine version 16.8.0-preview-20475-05+aed5e7ed0 for .NET [...]" * Xamarin.Tests.DotNetProjectTest.BuildMySingleView: Linker did not executed as expected. Expected: String containing "Building target "_RunILLink" completely." But was: "Microsoft (R) Build Engine version 16.8.0-preview-20475-05+aed5e7ed0 for .NET [...]" * Xamarin.Tests.DotNetProjectTest.BuildInterdependentBindingProjects("iOS"): Assemblies Expected: not <empty> But was: <empty> * Xamarin.Tests.DotNetProjectTest.BuildEmbeddedResourcesTest("tvOS"): Assemblies Expected: not <empty> But was: <empty> * Xamarin.Tests.DotNetProjectTest.BuildBindingsTest2("watchOS"): Assemblies Expected: not <empty> But was: <empty> * Xamarin.Tests.DotNetProjectTest.BuildFSharpLibraryTest("tvOS"): Assemblies Expected: not <empty> But was: <empty> * Xamarin.Tests.DotNetProjectTest.BuildFSharpLibraryTest("watchOS"): Assemblies Expected: not <empty> But was: <empty> * Xamarin.Tests.DotNetProjectTest.BuildEmbeddedResourcesTest("watchOS"): Assemblies Expected: not <empty> But was: <empty> * Xamarin.Tests.DotNetProjectTest.BuildBindingsTest2("iOS"): Assemblies Expected: not <empty> But was: <empty> * Xamarin.Tests.DotNetProjectTest.BuildInterdependentBindingProjects("tvOS"): Assemblies Expected: not <empty> But was: <empty> * Xamarin.Tests.DotNetProjectTest.BuildFSharpLibraryTest("iOS"): Assemblies Expected: not <empty> But was: <empty>
2020-11-03 20:20:33 +03:00
continue;
if (record.Args is null)
[tests] Update .NET unit tests to parse the binlog. (#10031) Update the .NET unit tests to parse the binlog instead of standard output for specific build output, since we're not printing a diagnostic build log to standard output anymore. This fixes numerous test failures in the .NET unit tests: * Xamarin.Tests.DotNetProjectTest.BuildBindingsTest("watchOS"): Assemblies Expected: not <empty> But was: <empty> * Xamarin.Tests.DotNetProjectTest.BuildBundledResources("iOS","monotouch"): Assemblies Expected: not <empty> But was: <empty> * Xamarin.Tests.DotNetProjectTest.BuildEmbeddedResourcesTest("iOS"): Assemblies Expected: not <empty> But was: <empty> * Xamarin.Tests.DotNetProjectTest.BuildBundledResources("watchOS","monotouch"): Assemblies Expected: not <empty> But was: <empty> * Xamarin.Tests.DotNetProjectTest.BuildBindingsTest2("tvOS"): Assemblies Expected: not <empty> But was: <empty> * Xamarin.Tests.DotNetProjectTest.BuildBindingsTest("tvOS"): Assemblies Expected: not <empty> But was: <empty> * Xamarin.Tests.DotNetProjectTest.BuildBindingsTest("iOS"): Assemblies Expected: not <empty> But was: <empty> * Xamarin.Tests.DotNetProjectTest.BuildBundledResources("tvOS","monotouch"): Assemblies Expected: not <empty> But was: <empty> * Xamarin.Tests.DotNetProjectTest.BuildMyTVApp: Linker did not executed as expected. Expected: String containing "Building target "_RunILLink" completely." But was: "Microsoft (R) Build Engine version 16.8.0-preview-20475-05+aed5e7ed0 for .NET [...]" * Xamarin.Tests.DotNetProjectTest.BuildMySingleView: Linker did not executed as expected. Expected: String containing "Building target "_RunILLink" completely." But was: "Microsoft (R) Build Engine version 16.8.0-preview-20475-05+aed5e7ed0 for .NET [...]" * Xamarin.Tests.DotNetProjectTest.BuildInterdependentBindingProjects("iOS"): Assemblies Expected: not <empty> But was: <empty> * Xamarin.Tests.DotNetProjectTest.BuildEmbeddedResourcesTest("tvOS"): Assemblies Expected: not <empty> But was: <empty> * Xamarin.Tests.DotNetProjectTest.BuildBindingsTest2("watchOS"): Assemblies Expected: not <empty> But was: <empty> * Xamarin.Tests.DotNetProjectTest.BuildFSharpLibraryTest("tvOS"): Assemblies Expected: not <empty> But was: <empty> * Xamarin.Tests.DotNetProjectTest.BuildFSharpLibraryTest("watchOS"): Assemblies Expected: not <empty> But was: <empty> * Xamarin.Tests.DotNetProjectTest.BuildEmbeddedResourcesTest("watchOS"): Assemblies Expected: not <empty> But was: <empty> * Xamarin.Tests.DotNetProjectTest.BuildBindingsTest2("iOS"): Assemblies Expected: not <empty> But was: <empty> * Xamarin.Tests.DotNetProjectTest.BuildInterdependentBindingProjects("tvOS"): Assemblies Expected: not <empty> But was: <empty> * Xamarin.Tests.DotNetProjectTest.BuildFSharpLibraryTest("iOS"): Assemblies Expected: not <empty> But was: <empty>
2020-11-03 20:20:33 +03:00
continue;
yield return record.Args;
}
}
// Returns a diagnostic build log as an enumeration of lines
public static IEnumerable<string> PrintToLines (string path)
{
var eols = new char [] { '\n', '\r' };
foreach (var args in ReadBuildEvents (path)) {
[tests] Update .NET unit tests to parse the binlog. (#10031) Update the .NET unit tests to parse the binlog instead of standard output for specific build output, since we're not printing a diagnostic build log to standard output anymore. This fixes numerous test failures in the .NET unit tests: * Xamarin.Tests.DotNetProjectTest.BuildBindingsTest("watchOS"): Assemblies Expected: not <empty> But was: <empty> * Xamarin.Tests.DotNetProjectTest.BuildBundledResources("iOS","monotouch"): Assemblies Expected: not <empty> But was: <empty> * Xamarin.Tests.DotNetProjectTest.BuildEmbeddedResourcesTest("iOS"): Assemblies Expected: not <empty> But was: <empty> * Xamarin.Tests.DotNetProjectTest.BuildBundledResources("watchOS","monotouch"): Assemblies Expected: not <empty> But was: <empty> * Xamarin.Tests.DotNetProjectTest.BuildBindingsTest2("tvOS"): Assemblies Expected: not <empty> But was: <empty> * Xamarin.Tests.DotNetProjectTest.BuildBindingsTest("tvOS"): Assemblies Expected: not <empty> But was: <empty> * Xamarin.Tests.DotNetProjectTest.BuildBindingsTest("iOS"): Assemblies Expected: not <empty> But was: <empty> * Xamarin.Tests.DotNetProjectTest.BuildBundledResources("tvOS","monotouch"): Assemblies Expected: not <empty> But was: <empty> * Xamarin.Tests.DotNetProjectTest.BuildMyTVApp: Linker did not executed as expected. Expected: String containing "Building target "_RunILLink" completely." But was: "Microsoft (R) Build Engine version 16.8.0-preview-20475-05+aed5e7ed0 for .NET [...]" * Xamarin.Tests.DotNetProjectTest.BuildMySingleView: Linker did not executed as expected. Expected: String containing "Building target "_RunILLink" completely." But was: "Microsoft (R) Build Engine version 16.8.0-preview-20475-05+aed5e7ed0 for .NET [...]" * Xamarin.Tests.DotNetProjectTest.BuildInterdependentBindingProjects("iOS"): Assemblies Expected: not <empty> But was: <empty> * Xamarin.Tests.DotNetProjectTest.BuildEmbeddedResourcesTest("tvOS"): Assemblies Expected: not <empty> But was: <empty> * Xamarin.Tests.DotNetProjectTest.BuildBindingsTest2("watchOS"): Assemblies Expected: not <empty> But was: <empty> * Xamarin.Tests.DotNetProjectTest.BuildFSharpLibraryTest("tvOS"): Assemblies Expected: not <empty> But was: <empty> * Xamarin.Tests.DotNetProjectTest.BuildFSharpLibraryTest("watchOS"): Assemblies Expected: not <empty> But was: <empty> * Xamarin.Tests.DotNetProjectTest.BuildEmbeddedResourcesTest("watchOS"): Assemblies Expected: not <empty> But was: <empty> * Xamarin.Tests.DotNetProjectTest.BuildBindingsTest2("iOS"): Assemblies Expected: not <empty> But was: <empty> * Xamarin.Tests.DotNetProjectTest.BuildInterdependentBindingProjects("tvOS"): Assemblies Expected: not <empty> But was: <empty> * Xamarin.Tests.DotNetProjectTest.BuildFSharpLibraryTest("iOS"): Assemblies Expected: not <empty> But was: <empty>
2020-11-03 20:20:33 +03:00
if (args.Message == null)
continue;
if (args is ProjectStartedEventArgs psea) {
if (psea.Properties != null) {
yield return "Initial Properties";
var dict = psea.Properties as IDictionary<string, string>;
if (dict == null) {
yield return $"Unknown property dictionary type: {psea.Properties.GetType ().FullName}";
} else {
foreach (var prop in dict.OrderBy (v => v.Key))
yield return $"{prop.Key} = {prop.Value}";
}
}
}
if (args is TaskParameterEventArgs tpea) {
switch (tpea.Kind) {
case TaskParameterMessageKind.AddItem:
yield return "Added Item(s)";
break;
case TaskParameterMessageKind.RemoveItem:
yield return "Removed Item(s)";
break;
case TaskParameterMessageKind.TaskInput:
yield return "Task Parameter";
break;
case TaskParameterMessageKind.TaskOutput:
yield return "Output Item(s)";
break;
default:
yield return $"Unknown Kind ({tpea.Kind})";
break;
}
foreach (var item in tpea.Items) {
var taskItem = item as ITaskItem;
yield return $"\t{tpea.ItemType}=";
if (taskItem != null) {
yield return $"\t\t{taskItem.ItemSpec}";
foreach (var metadataName in taskItem.MetadataNames) {
yield return $"\t\t\t{metadataName}={taskItem.GetMetadata (metadataName?.ToString ())}";
}
} else {
yield return $"\t{item}";
}
}
continue;
}
[tests] Update .NET unit tests to parse the binlog. (#10031) Update the .NET unit tests to parse the binlog instead of standard output for specific build output, since we're not printing a diagnostic build log to standard output anymore. This fixes numerous test failures in the .NET unit tests: * Xamarin.Tests.DotNetProjectTest.BuildBindingsTest("watchOS"): Assemblies Expected: not <empty> But was: <empty> * Xamarin.Tests.DotNetProjectTest.BuildBundledResources("iOS","monotouch"): Assemblies Expected: not <empty> But was: <empty> * Xamarin.Tests.DotNetProjectTest.BuildEmbeddedResourcesTest("iOS"): Assemblies Expected: not <empty> But was: <empty> * Xamarin.Tests.DotNetProjectTest.BuildBundledResources("watchOS","monotouch"): Assemblies Expected: not <empty> But was: <empty> * Xamarin.Tests.DotNetProjectTest.BuildBindingsTest2("tvOS"): Assemblies Expected: not <empty> But was: <empty> * Xamarin.Tests.DotNetProjectTest.BuildBindingsTest("tvOS"): Assemblies Expected: not <empty> But was: <empty> * Xamarin.Tests.DotNetProjectTest.BuildBindingsTest("iOS"): Assemblies Expected: not <empty> But was: <empty> * Xamarin.Tests.DotNetProjectTest.BuildBundledResources("tvOS","monotouch"): Assemblies Expected: not <empty> But was: <empty> * Xamarin.Tests.DotNetProjectTest.BuildMyTVApp: Linker did not executed as expected. Expected: String containing "Building target "_RunILLink" completely." But was: "Microsoft (R) Build Engine version 16.8.0-preview-20475-05+aed5e7ed0 for .NET [...]" * Xamarin.Tests.DotNetProjectTest.BuildMySingleView: Linker did not executed as expected. Expected: String containing "Building target "_RunILLink" completely." But was: "Microsoft (R) Build Engine version 16.8.0-preview-20475-05+aed5e7ed0 for .NET [...]" * Xamarin.Tests.DotNetProjectTest.BuildInterdependentBindingProjects("iOS"): Assemblies Expected: not <empty> But was: <empty> * Xamarin.Tests.DotNetProjectTest.BuildEmbeddedResourcesTest("tvOS"): Assemblies Expected: not <empty> But was: <empty> * Xamarin.Tests.DotNetProjectTest.BuildBindingsTest2("watchOS"): Assemblies Expected: not <empty> But was: <empty> * Xamarin.Tests.DotNetProjectTest.BuildFSharpLibraryTest("tvOS"): Assemblies Expected: not <empty> But was: <empty> * Xamarin.Tests.DotNetProjectTest.BuildFSharpLibraryTest("watchOS"): Assemblies Expected: not <empty> But was: <empty> * Xamarin.Tests.DotNetProjectTest.BuildEmbeddedResourcesTest("watchOS"): Assemblies Expected: not <empty> But was: <empty> * Xamarin.Tests.DotNetProjectTest.BuildBindingsTest2("iOS"): Assemblies Expected: not <empty> But was: <empty> * Xamarin.Tests.DotNetProjectTest.BuildInterdependentBindingProjects("tvOS"): Assemblies Expected: not <empty> But was: <empty> * Xamarin.Tests.DotNetProjectTest.BuildFSharpLibraryTest("iOS"): Assemblies Expected: not <empty> But was: <empty>
2020-11-03 20:20:33 +03:00
foreach (var line in args.Message.Split (eols, System.StringSplitOptions.RemoveEmptyEntries))
yield return line;
}
}
public static IEnumerable<BuildLogEvent> GetBuildLogWarnings (string path)
{
return GetBuildMessages (path).Where (v => v.Type == BuildLogEventType.Warning);
}
public static IEnumerable<BuildLogEvent> GetBuildLogErrors (string path)
{
return GetBuildMessages (path).Where (v => v.Type == BuildLogEventType.Error);
}
public static IEnumerable<BuildLogEvent> GetBuildMessages (string path)
{
var reader = new BinLogReader ();
var eols = new char [] { '\n', '\r' };
foreach (var record in reader.ReadRecords (path)) {
if (record == null)
continue;
var args = record.Args;
if (args == null)
continue;
if (args is BuildErrorEventArgs buildError) {
var ea = buildError;
yield return new BuildLogEvent {
Type = BuildLogEventType.Error,
File = ea.File,
LineNumber = ea.LineNumber,
EndLineNumber = ea.EndLineNumber,
ColumnNumber = ea.ColumnNumber,
EndColumnNumber = ea.EndColumnNumber,
Message = ea.Message,
ProjectFile = ea.ProjectFile,
Code = ea.Code,
SubCategory = ea.Subcategory,
};
} else if (args is BuildWarningEventArgs buildWarning) {
var ea = buildWarning;
yield return new BuildLogEvent {
Type = BuildLogEventType.Warning,
File = ea.File,
LineNumber = ea.LineNumber,
EndLineNumber = ea.EndLineNumber,
ColumnNumber = ea.ColumnNumber,
EndColumnNumber = ea.EndColumnNumber,
Message = ea.Message,
ProjectFile = ea.ProjectFile,
Code = ea.Code,
SubCategory = ea.Subcategory,
};
} else if (args is BuildMessageEventArgs buildMessage) {
var ea = buildMessage;
yield return new BuildLogEvent {
Type = BuildLogEventType.Message,
File = ea.File,
LineNumber = ea.LineNumber,
EndLineNumber = ea.EndLineNumber,
ColumnNumber = ea.ColumnNumber,
EndColumnNumber = ea.EndColumnNumber,
Message = ea.Message,
ProjectFile = ea.ProjectFile,
Code = ea.Code,
SubCategory = ea.Subcategory,
};
}
}
}
[tests] Update .NET unit tests to parse the binlog. (#10031) Update the .NET unit tests to parse the binlog instead of standard output for specific build output, since we're not printing a diagnostic build log to standard output anymore. This fixes numerous test failures in the .NET unit tests: * Xamarin.Tests.DotNetProjectTest.BuildBindingsTest("watchOS"): Assemblies Expected: not <empty> But was: <empty> * Xamarin.Tests.DotNetProjectTest.BuildBundledResources("iOS","monotouch"): Assemblies Expected: not <empty> But was: <empty> * Xamarin.Tests.DotNetProjectTest.BuildEmbeddedResourcesTest("iOS"): Assemblies Expected: not <empty> But was: <empty> * Xamarin.Tests.DotNetProjectTest.BuildBundledResources("watchOS","monotouch"): Assemblies Expected: not <empty> But was: <empty> * Xamarin.Tests.DotNetProjectTest.BuildBindingsTest2("tvOS"): Assemblies Expected: not <empty> But was: <empty> * Xamarin.Tests.DotNetProjectTest.BuildBindingsTest("tvOS"): Assemblies Expected: not <empty> But was: <empty> * Xamarin.Tests.DotNetProjectTest.BuildBindingsTest("iOS"): Assemblies Expected: not <empty> But was: <empty> * Xamarin.Tests.DotNetProjectTest.BuildBundledResources("tvOS","monotouch"): Assemblies Expected: not <empty> But was: <empty> * Xamarin.Tests.DotNetProjectTest.BuildMyTVApp: Linker did not executed as expected. Expected: String containing "Building target "_RunILLink" completely." But was: "Microsoft (R) Build Engine version 16.8.0-preview-20475-05+aed5e7ed0 for .NET [...]" * Xamarin.Tests.DotNetProjectTest.BuildMySingleView: Linker did not executed as expected. Expected: String containing "Building target "_RunILLink" completely." But was: "Microsoft (R) Build Engine version 16.8.0-preview-20475-05+aed5e7ed0 for .NET [...]" * Xamarin.Tests.DotNetProjectTest.BuildInterdependentBindingProjects("iOS"): Assemblies Expected: not <empty> But was: <empty> * Xamarin.Tests.DotNetProjectTest.BuildEmbeddedResourcesTest("tvOS"): Assemblies Expected: not <empty> But was: <empty> * Xamarin.Tests.DotNetProjectTest.BuildBindingsTest2("watchOS"): Assemblies Expected: not <empty> But was: <empty> * Xamarin.Tests.DotNetProjectTest.BuildFSharpLibraryTest("tvOS"): Assemblies Expected: not <empty> But was: <empty> * Xamarin.Tests.DotNetProjectTest.BuildFSharpLibraryTest("watchOS"): Assemblies Expected: not <empty> But was: <empty> * Xamarin.Tests.DotNetProjectTest.BuildEmbeddedResourcesTest("watchOS"): Assemblies Expected: not <empty> But was: <empty> * Xamarin.Tests.DotNetProjectTest.BuildBindingsTest2("iOS"): Assemblies Expected: not <empty> But was: <empty> * Xamarin.Tests.DotNetProjectTest.BuildInterdependentBindingProjects("tvOS"): Assemblies Expected: not <empty> But was: <empty> * Xamarin.Tests.DotNetProjectTest.BuildFSharpLibraryTest("iOS"): Assemblies Expected: not <empty> But was: <empty>
2020-11-03 20:20:33 +03:00
// Returns a diagnostic build log as a string
public static string PrintToString (string path)
{
var sb = new StringBuilder ();
foreach (var line in PrintToLines (path))
sb.AppendLine (line);
return sb.ToString ();
}
}
}