diff --git a/src/mono/wasm/Wasm.Build.Tests/BuildTestBase.cs b/src/mono/wasm/Wasm.Build.Tests/BuildTestBase.cs index b61f4b13cf9220..1ea286544cd48b 100644 --- a/src/mono/wasm/Wasm.Build.Tests/BuildTestBase.cs +++ b/src/mono/wasm/Wasm.Build.Tests/BuildTestBase.cs @@ -189,7 +189,10 @@ public BuildTestBase(ProjectProviderBase providerBase, ITestOutputHelper output, buildRoot.VisitAllChildren(m => { if (m is Message || m is Error || m is Warning) - outputBuilder.AppendLine(m.Title); + { + var context = GetBinlogMessageContext(m); + outputBuilder.AppendLine($"{context}{m.Title}"); + } }); res = new CommandResult(res.StartInfo, res.ExitCode, outputBuilder.ToString()); @@ -198,6 +201,24 @@ public BuildTestBase(ProjectProviderBase providerBase, ITestOutputHelper output, return (res, logFilePath); } + private string GetBinlogMessageContext(TextNode node) + { + var currentNode = node; + while (currentNode != null) + { + if (currentNode is Error error) + { + return $"{error.File}({error.LineNumber},{error.ColumnNumber}): error {error.Code}: "; + } + else if (currentNode is Warning warning) + { + return $"{warning.File}({warning.LineNumber},{warning.ColumnNumber}): warning {warning.Code}: "; + } + currentNode = currentNode.Parent as TextNode; + } + return string.Empty; + } + protected bool IsDotnetWasmFromRuntimePack(BuildArgs buildArgs) => !(buildArgs.AOT || (buildArgs.Config == "Release" && IsUsingWorkloads));