Skip to content

Commit 63b3896

Browse files
Copilotbaronfel
andcommitted
Add tests for ProjectInstanceExtensions telemetry logger creation
Co-authored-by: baronfel <[email protected]>
1 parent 9d9e8dd commit 63b3896

File tree

1 file changed

+81
-0
lines changed

1 file changed

+81
-0
lines changed
Lines changed: 81 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,81 @@
1+
// Licensed to the .NET Foundation under one or more agreements.
2+
// The .NET Foundation licenses this file to you under the MIT license.
3+
4+
#nullable disable
5+
6+
using Microsoft.Build.Execution;
7+
using Microsoft.DotNet.Cli.Extensions;
8+
using Microsoft.DotNet.Cli.Telemetry;
9+
10+
namespace Microsoft.DotNet.Cli.MSBuild.Tests;
11+
12+
public class GivenProjectInstanceExtensions
13+
{
14+
[Fact]
15+
public void CreateTelemetryLoggers_WhenTelemetryDisabled_ReturnsNull()
16+
{
17+
// Ensure telemetry is disabled
18+
Telemetry.Telemetry.CurrentSessionId = null;
19+
20+
var loggers = ProjectInstanceExtensions.CreateTelemetryLoggers();
21+
22+
loggers.Should().BeNull();
23+
}
24+
25+
[Fact]
26+
public void CreateTelemetryLoggers_WhenTelemetryEnabled_ReturnsLoggers()
27+
{
28+
// Enable telemetry with a session ID
29+
var originalSessionId = Telemetry.Telemetry.CurrentSessionId;
30+
try
31+
{
32+
Telemetry.Telemetry.CurrentSessionId = Guid.NewGuid().ToString();
33+
34+
var loggers = ProjectInstanceExtensions.CreateTelemetryLoggers();
35+
36+
loggers.Should().NotBeNull();
37+
loggers.Should().HaveCount(1);
38+
loggers[0].Should().BeOfType<Commands.MSBuild.MSBuildLogger>();
39+
}
40+
finally
41+
{
42+
// Restore original session ID
43+
Telemetry.Telemetry.CurrentSessionId = originalSessionId;
44+
}
45+
}
46+
47+
[Fact]
48+
public void BuildWithTelemetry_WhenTelemetryDisabled_CallsBuildWithoutTelemetryLogger()
49+
{
50+
// This is a basic smoke test to ensure the extension method doesn't throw
51+
// We can't easily test the actual build without setting up a full project
52+
53+
// Ensure telemetry is disabled
54+
Telemetry.Telemetry.CurrentSessionId = null;
55+
56+
// CreateTelemetryLoggers should return null when telemetry is disabled
57+
var loggers = ProjectInstanceExtensions.CreateTelemetryLoggers();
58+
loggers.Should().BeNull();
59+
}
60+
61+
[Fact]
62+
public void BuildWithTelemetry_WhenTelemetryEnabled_CreatesTelemetryLogger()
63+
{
64+
// Enable telemetry with a session ID
65+
var originalSessionId = Telemetry.Telemetry.CurrentSessionId;
66+
try
67+
{
68+
Telemetry.Telemetry.CurrentSessionId = Guid.NewGuid().ToString();
69+
70+
// CreateTelemetryLoggers should return logger when telemetry is enabled
71+
var loggers = ProjectInstanceExtensions.CreateTelemetryLoggers();
72+
loggers.Should().NotBeNull();
73+
loggers.Should().HaveCount(1);
74+
}
75+
finally
76+
{
77+
// Restore original session ID
78+
Telemetry.Telemetry.CurrentSessionId = originalSessionId;
79+
}
80+
}
81+
}

0 commit comments

Comments
 (0)