Skip to content

Commit

Permalink
Fix localappdata folder for Linux and Mac
Browse files Browse the repository at this point in the history
  • Loading branch information
Evangelink committed Apr 25, 2024
1 parent 961334f commit 38f1ba6
Show file tree
Hide file tree
Showing 6 changed files with 21 additions and 17 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -25,6 +25,8 @@ internal interface IEnvironment

IDictionary GetEnvironmentVariables();

string GetFolderPath(Environment.SpecialFolder folder, Environment.SpecialFolderOption option);

void FailFast(string? message, Exception? exception);

void FailFast(string? message);
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -27,6 +27,8 @@ internal sealed class SystemEnvironment : IEnvironment

public IDictionary GetEnvironmentVariables() => Environment.GetEnvironmentVariables();

public string GetFolderPath(Environment.SpecialFolder folder, Environment.SpecialFolderOption option) => Environment.GetFolderPath(folder, option);

public void FailFast(string? message, Exception? exception) => Environment.FailFast(message, exception);

public void FailFast(string? message) => Environment.FailFast(message);
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -66,7 +66,9 @@ public async Task<ITelemetryCollector> BuildAsync(ServiceProvider serviceProvide
if (!isTelemetryOptedOut && !doNotShowLogo)
{
ITestApplicationModuleInfo testApplicationModuleInfo = serviceProvider.GetTestApplicationModuleInfo();
string? directory = environment.GetEnvironmentVariable("LOCALAPPDATA") ?? environment.GetEnvironmentVariable("HOME");
#pragma warning disable RS0030 // Do not use banned APIs - There is no easy way to disable it for all members
string? directory = environment.GetFolderPath(Environment.SpecialFolder.LocalApplicationData, Environment.SpecialFolderOption.Create);
#pragma warning restore RS0030 // Do not use banned APIs
if (directory is not null)
{
directory = Path.Combine(directory, "Microsoft", "TestingPlatform");
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -132,9 +132,7 @@ public async Task TelemetryManager_UsingTelemetryOptOutShouldDisableTelemetry(st
}
}

[Arguments("LOCALAPPDATA")]
[Arguments("HOME")]
public async Task TelemetryManager_SentinelIsWrittenPerUserAndAvoidsShowingNoticeOnSubsequentRuns(string variable)
public async Task TelemetryManager_SentinelIsWrittenPerUserAndAvoidsShowingNoticeOnSubsequentRuns()
{
// Arrange
var options = new TestApplicationOptions();
Expand All @@ -143,7 +141,8 @@ public async Task TelemetryManager_SentinelIsWrittenPerUserAndAvoidsShowingNotic
var fileSystemMock = new Mock<IFileSystem>();
var environmentMock = new Mock<IEnvironment>();
var commandLineOptions = new Mock<ICommandLineOptions>();
environmentMock.Setup(s => s.GetEnvironmentVariable(variable)).Returns("sentinelDir");
environmentMock.Setup(s => s.GetFolderPath(Environment.SpecialFolder.LocalApplicationData, Environment.SpecialFolderOption.Create))
.Returns("sentinelDir");
var outputDevice = new Mock<IOutputDevice>();

var testApplicationModuleInfoMock = new Mock<ITestApplicationModuleInfo>();
Expand Down Expand Up @@ -194,9 +193,7 @@ public async Task TelemetryManager_SentinelIsWrittenPerUserAndAvoidsShowingNotic
fileSystemMock.Verify(f => f.NewFileStream(path, It.IsAny<FileMode>(), It.IsAny<FileAccess>()), Times.Never);
}

[Arguments("LOCALAPPDATA")]
[Arguments("HOME")]
public async Task TelemetryManager_SentinelIsWrittenOnlyWhenUserWouldSeeTheMessage(string variable)
public async Task TelemetryManager_SentinelIsWrittenOnlyWhenUserWouldSeeTheMessage()
{
// Arrange
var options = new TestApplicationOptions();
Expand All @@ -205,7 +202,8 @@ public async Task TelemetryManager_SentinelIsWrittenOnlyWhenUserWouldSeeTheMessa
var fileSystemMock = new Mock<IFileSystem>();
var environmentMock = new Mock<IEnvironment>();
var commandLineOptions = new Mock<ICommandLineOptions>();
environmentMock.Setup(s => s.GetEnvironmentVariable(variable)).Returns("sentinelDir");
environmentMock.Setup(s => s.GetFolderPath(Environment.SpecialFolder.LocalApplicationData, Environment.SpecialFolderOption.Create))
.Returns("sentinelDir");
var outputDevice = new Mock<IOutputDevice>();

var testApplicationModuleInfoMock = new Mock<ITestApplicationModuleInfo>();
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -266,10 +266,10 @@ Microsoft.Testing.Platform.UnitTests.Microsoft.Testing.Platform.UnitTests.TaskEx
Microsoft.Testing.Platform.UnitTests.Microsoft.Testing.Platform.UnitTests.TaskExtensionsTests.TimeoutAfterAsync_CancellationToken_Succeeds()
Microsoft.Testing.Platform.UnitTests.Microsoft.Testing.Platform.UnitTests.TaskExtensionsTests.TimeoutAfterAsync_CancellationTokenNone_Succeeds()
Microsoft.Testing.Platform.UnitTests.Microsoft.Testing.Platform.UnitTests.TaskExtensionsTests.TimeoutAfterAsync_Succeeds()
Microsoft.Testing.Platform.UnitTests.Microsoft.Testing.Platform.UnitTests.TelemetryManagerTests.TelemetryManager_SentinelIsWrittenOnlyWhenUserWouldSeeTheMessage(string) (variable: "HOME")
Microsoft.Testing.Platform.UnitTests.Microsoft.Testing.Platform.UnitTests.TelemetryManagerTests.TelemetryManager_SentinelIsWrittenOnlyWhenUserWouldSeeTheMessage(string) (variable: "LOCALAPPDATA")
Microsoft.Testing.Platform.UnitTests.Microsoft.Testing.Platform.UnitTests.TelemetryManagerTests.TelemetryManager_SentinelIsWrittenPerUserAndAvoidsShowingNoticeOnSubsequentRuns(string) (variable: "HOME")
Microsoft.Testing.Platform.UnitTests.Microsoft.Testing.Platform.UnitTests.TelemetryManagerTests.TelemetryManager_SentinelIsWrittenPerUserAndAvoidsShowingNoticeOnSubsequentRuns(string) (variable: "LOCALAPPDATA")
Microsoft.Testing.Platform.UnitTests.Microsoft.Testing.Platform.UnitTests.TelemetryManagerTests.TelemetryManager_SentinelIsWrittenOnlyWhenUserWouldSeeTheMessage()
Microsoft.Testing.Platform.UnitTests.Microsoft.Testing.Platform.UnitTests.TelemetryManagerTests.TelemetryManager_SentinelIsWrittenOnlyWhenUserWouldSeeTheMessage()
Microsoft.Testing.Platform.UnitTests.Microsoft.Testing.Platform.UnitTests.TelemetryManagerTests.TelemetryManager_SentinelIsWrittenPerUserAndAvoidsShowingNoticeOnSubsequentRuns()
Microsoft.Testing.Platform.UnitTests.Microsoft.Testing.Platform.UnitTests.TelemetryManagerTests.TelemetryManager_SentinelIsWrittenPerUserAndAvoidsShowingNoticeOnSubsequentRuns()
Microsoft.Testing.Platform.UnitTests.Microsoft.Testing.Platform.UnitTests.TelemetryManagerTests.TelemetryManager_UsingNoBannerCommandLine_ShouldSuppressTelemetryMessage()
Microsoft.Testing.Platform.UnitTests.Microsoft.Testing.Platform.UnitTests.TelemetryManagerTests.TelemetryManager_UsingNoLogoShouldSuppressTelemetryMessage(string, string) (variable: "DOTNET_NOLOGO", value: "0")
Microsoft.Testing.Platform.UnitTests.Microsoft.Testing.Platform.UnitTests.TelemetryManagerTests.TelemetryManager_UsingNoLogoShouldSuppressTelemetryMessage(string, string) (variable: "DOTNET_NOLOGO", value: "1")
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -272,10 +272,10 @@ Microsoft.Testing.Platform.UnitTests.Microsoft.Testing.Platform.UnitTests.TaskEx
Microsoft.Testing.Platform.UnitTests.Microsoft.Testing.Platform.UnitTests.TaskExtensionsTests.TimeoutAfterAsync_CancellationToken_Succeeds()
Microsoft.Testing.Platform.UnitTests.Microsoft.Testing.Platform.UnitTests.TaskExtensionsTests.TimeoutAfterAsync_CancellationTokenNone_Succeeds()
Microsoft.Testing.Platform.UnitTests.Microsoft.Testing.Platform.UnitTests.TaskExtensionsTests.TimeoutAfterAsync_Succeeds()
Microsoft.Testing.Platform.UnitTests.Microsoft.Testing.Platform.UnitTests.TelemetryManagerTests.TelemetryManager_SentinelIsWrittenOnlyWhenUserWouldSeeTheMessage(string) (variable: "HOME")
Microsoft.Testing.Platform.UnitTests.Microsoft.Testing.Platform.UnitTests.TelemetryManagerTests.TelemetryManager_SentinelIsWrittenOnlyWhenUserWouldSeeTheMessage(string) (variable: "LOCALAPPDATA")
Microsoft.Testing.Platform.UnitTests.Microsoft.Testing.Platform.UnitTests.TelemetryManagerTests.TelemetryManager_SentinelIsWrittenPerUserAndAvoidsShowingNoticeOnSubsequentRuns(string) (variable: "HOME")
Microsoft.Testing.Platform.UnitTests.Microsoft.Testing.Platform.UnitTests.TelemetryManagerTests.TelemetryManager_SentinelIsWrittenPerUserAndAvoidsShowingNoticeOnSubsequentRuns(string) (variable: "LOCALAPPDATA")
Microsoft.Testing.Platform.UnitTests.Microsoft.Testing.Platform.UnitTests.TelemetryManagerTests.TelemetryManager_SentinelIsWrittenOnlyWhenUserWouldSeeTheMessage()
Microsoft.Testing.Platform.UnitTests.Microsoft.Testing.Platform.UnitTests.TelemetryManagerTests.TelemetryManager_SentinelIsWrittenOnlyWhenUserWouldSeeTheMessage()
Microsoft.Testing.Platform.UnitTests.Microsoft.Testing.Platform.UnitTests.TelemetryManagerTests.TelemetryManager_SentinelIsWrittenPerUserAndAvoidsShowingNoticeOnSubsequentRuns()
Microsoft.Testing.Platform.UnitTests.Microsoft.Testing.Platform.UnitTests.TelemetryManagerTests.TelemetryManager_SentinelIsWrittenPerUserAndAvoidsShowingNoticeOnSubsequentRuns()
Microsoft.Testing.Platform.UnitTests.Microsoft.Testing.Platform.UnitTests.TelemetryManagerTests.TelemetryManager_UsingNoBannerCommandLine_ShouldSuppressTelemetryMessage()
Microsoft.Testing.Platform.UnitTests.Microsoft.Testing.Platform.UnitTests.TelemetryManagerTests.TelemetryManager_UsingNoLogoShouldSuppressTelemetryMessage(string, string) (variable: "DOTNET_NOLOGO", value: "0")
Microsoft.Testing.Platform.UnitTests.Microsoft.Testing.Platform.UnitTests.TelemetryManagerTests.TelemetryManager_UsingNoLogoShouldSuppressTelemetryMessage(string, string) (variable: "DOTNET_NOLOGO", value: "1")
Expand Down

0 comments on commit 38f1ba6

Please sign in to comment.