Skip to content

Commit 9ddb946

Browse files
Ability to log a summary message
1 parent a977f2a commit 9ddb946

File tree

17 files changed

+119
-10
lines changed

17 files changed

+119
-10
lines changed

CSharpInteractive.HostApi/IHost.cs

Lines changed: 11 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -88,6 +88,17 @@ public interface IHost
8888
/// <param name="warning">Warning message.</param>
8989
void Warning(string? warning);
9090

91+
/// <summary>
92+
/// Writes a summary message to stdOut.
93+
/// <example>
94+
/// <code>
95+
/// Info("Some info");
96+
/// </code>
97+
/// </example>
98+
/// </summary>
99+
/// <param name="summary">Summary message.</param>
100+
void Summary(string? summary);
101+
91102
/// <summary>
92103
/// Writes an information message to stdOut.
93104
/// <example>

CSharpInteractive.Tests/ProcessResultHandlerTests.cs

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -29,7 +29,7 @@ internal void ShouldLogInfoWhenFinishedAndHasHandler(ProcessState state)
2929
}
3030

3131
[Fact]
32-
public void ShouldLogInfoWhenFinishedAndHasNoHandler()
32+
public void ShouldLogSummaryWhenFinishedAndHasNoHandler()
3333
{
3434
// Given
3535
var handler = CreateInstance();
@@ -38,7 +38,7 @@ public void ShouldLogInfoWhenFinishedAndHasNoHandler()
3838
handler.Handle(new ProcessResult(_processInfo, ProcessState.Finished, 12, _description), default(Action<object>));
3939

4040
// Then
41-
_log.Verify(i => i.Info(_description));
41+
_log.Verify(i => i.Summary(_description));
4242
}
4343

4444
[Fact]

CSharpInteractive.Tests/UsageScenarios/BaseScenario.cs

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -73,6 +73,8 @@ public bool HasSdk(string sdkVersion)
7373

7474
public void Warning(string? warning) => Composition.Shared.Root.Host.Warning(warning);
7575

76+
public void Summary(string? summary) => Composition.Shared.Root.Host.Summary(summary);
77+
7678
public void Info(string? text) => Composition.Shared.Root.Host.Info(text);
7779

7880
public void Trace(string? trace, string? origin = null) => Composition.Shared.Root.Host.Trace(trace, origin);
Lines changed: 23 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,23 @@
1+
// ReSharper disable StringLiteralTypo
2+
// ReSharper disable SuggestVarOrType_BuiltInTypes
3+
4+
namespace CSharpInteractive.Tests.UsageScenarios;
5+
6+
using System;
7+
8+
public class LogSummaryScenario(ITestOutputHelper output) : BaseScenario(output)
9+
{
10+
[SkippableFact]
11+
public void Run()
12+
{
13+
Skip.IfNot(string.IsNullOrWhiteSpace(Environment.GetEnvironmentVariable("TEAMCITY_VERSION")));
14+
15+
// $visible=true
16+
// $tag=01 Output, logging and tracing
17+
// $priority=04
18+
// $description=Registering a summary in the build log
19+
// {
20+
Summary("Summary message");
21+
// }
22+
}
23+
}

CSharpInteractive/Core/HostService.cs

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -45,6 +45,14 @@ public void Warning(string? warning)
4545
}
4646
}
4747

48+
public void Summary(string? summary)
49+
{
50+
if (summary != null)
51+
{
52+
log.Summary(summary);
53+
}
54+
}
55+
4856
public void Info(string? text)
4957
{
5058
if (text != null)

CSharpInteractive/Core/ILog.cs

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -8,6 +8,8 @@ internal interface ILog<T>
88

99
void Warning(params Text[] warning);
1010

11+
void Summary(params Text[] summary);
12+
1113
void Info(params Text[] message);
1214

1315
void Trace(Func<Text[]> traceMessagesFactory, string origin = "");

CSharpInteractive/Core/IStatistics.cs

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -8,6 +8,8 @@ internal interface IStatistics
88

99
IReadOnlyCollection<Text[]> Warnings { get; }
1010

11+
IReadOnlyCollection<Text[]> Summary { get; }
12+
1113
TimeSpan TimeElapsed { get; }
1214

1315
IReadOnlyCollection<CommandLineInfo> CommandLines { get; }

CSharpInteractive/Core/IStatisticsRegistry.cs

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -7,4 +7,6 @@ internal interface IStatisticsRegistry
77
void RegisterError(Text[] error);
88

99
void RegisterWarning(Text[] warning);
10+
11+
void RegisterSummary(Text[] summary);
1012
}

CSharpInteractive/Core/Log.cs

Lines changed: 11 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -34,6 +34,17 @@ public void Warning(params Text[] warning)
3434
stdOut.WriteLine(warning);
3535
}
3636

37+
public void Summary(params Text[] summary)
38+
{
39+
if (summary.Length == 0)
40+
{
41+
return;
42+
}
43+
44+
statisticsRegistry.RegisterSummary(summary);
45+
stdOut.WriteLine(GetMessage(summary, Color.Highlighted));
46+
}
47+
3748
public void Info(params Text[] message)
3849
{
3950
if (settings.VerbosityLevel >= VerbosityLevel.Normal)

CSharpInteractive/Core/LogExtensions.cs

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -31,4 +31,10 @@ public static ILog<T> Warning<T>(this ILog<T> log, params string[] warning)
3131
log.Warning(warning.Select(i => new Text(i, Color.Warning)).ToArray());
3232
return log;
3333
}
34+
35+
public static ILog<T> Summary<T>(this ILog<T> log, params string[] summary)
36+
{
37+
log.Summary(summary.Select(i => new Text(i, Color.Highlighted)).ToArray());
38+
return log;
39+
}
3440
}

0 commit comments

Comments
 (0)