| File: TestServices\RecordingTestOutputHelper.cs | Web Access |
| Project: src\tests\Aspire.Cli.Tests\Aspire.Cli.Tests.csproj (Aspire.Cli.Tests) |
// Licensed to the .NET Foundation under one or more agreements. // The .NET Foundation licenses this file to you under the MIT license. using System.Collections.Concurrent; using System.Globalization; namespace Aspire.Cli.Tests.TestServices; internal sealed class RecordingTestOutputHelper(ITestOutputHelper outputHelper) : ITestOutputHelper { private readonly ConcurrentQueue<string> _messages = new(); public string Output => string.Join(Environment.NewLine, _messages); public string[] Messages => _messages.ToArray(); public event Action<string>? MessageWritten; public void Write(string message) { _messages.Enqueue(message); outputHelper.Write(message); MessageWritten?.Invoke(message); } public void Write(string format, params object[] args) => Write(string.Format(CultureInfo.CurrentCulture, format, args)); public void WriteLine(string message) { _messages.Enqueue(message); outputHelper.WriteLine(message); MessageWritten?.Invoke(message); } public void WriteLine(string format, params object[] args) => WriteLine(string.Format(CultureInfo.CurrentCulture, format, args)); }