Removing NuGetConfig from the first run experience and replacing the sentinel with the FirstUseNoticeSentinel when needed.
This commit is contained in:
parent
529d7caa79
commit
a357fd7bca
15 changed files with 37 additions and 148 deletions
|
@ -19,4 +19,4 @@ The data collected is anonymous and will be published in an aggregated form for
|
||||||
|
|
||||||
The .NET Core Tools telemetry feature is enabled by default. You can opt-out of the telemetry feature by setting an environment variable DOTNET_CLI_TELEMETRY_OPTOUT (for example, 'export' on macOS/Linux, 'set' on Windows) to true (for example, 'true', 1). You can read more about .NET Core tools telemetry at https://aka.ms/dotnet-cli-telemetry."
|
The .NET Core Tools telemetry feature is enabled by default. You can opt-out of the telemetry feature by setting an environment variable DOTNET_CLI_TELEMETRY_OPTOUT (for example, 'export' on macOS/Linux, 'set' on Windows) to true (for example, 'true', 1). You can read more about .NET Core tools telemetry at https://aka.ms/dotnet-cli-telemetry."
|
||||||
|
|
||||||
su - $SUDO_USER -c "dotnet new > /dev/null 2>&1 || true"
|
dotnet new > /dev/null 2>&1 || true
|
||||||
|
|
|
@ -16,6 +16,17 @@ namespace Microsoft.DotNet.Configurer
|
||||||
Environment.GetEnvironmentVariable("DOTNET_CLI_TEST_FALLBACKFOLDER") ??
|
Environment.GetEnvironmentVariable("DOTNET_CLI_TEST_FALLBACKFOLDER") ??
|
||||||
Path.Combine(new DirectoryInfo(AppContext.BaseDirectory).Parent.FullName, "NuGetFallbackFolder");
|
Path.Combine(new DirectoryInfo(AppContext.BaseDirectory).Parent.FullName, "NuGetFallbackFolder");
|
||||||
|
|
||||||
|
public string DotnetUserProfileFolderPath
|
||||||
|
{
|
||||||
|
get
|
||||||
|
{
|
||||||
|
string profileDir = Environment.GetEnvironmentVariable(
|
||||||
|
RuntimeInformation.IsOSPlatform(OSPlatform.Windows) ? "USERPROFILE" : "HOME");
|
||||||
|
|
||||||
|
return Path.Combine(profileDir, ".dotnet");
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
public string NuGetUserSettingsDirectory =>
|
public string NuGetUserSettingsDirectory =>
|
||||||
NuGetEnvironment.GetFolderPath(NuGetFolderPath.UserSettingsDirectory);
|
NuGetEnvironment.GetFolderPath(NuGetFolderPath.UserSettingsDirectory);
|
||||||
}
|
}
|
||||||
|
|
|
@ -41,13 +41,15 @@ namespace Microsoft.DotNet.Configurer
|
||||||
|
|
||||||
if (ShouldPrimeNugetCache())
|
if (ShouldPrimeNugetCache())
|
||||||
{
|
{
|
||||||
PrintNugetCachePrimeMessage();
|
if (_nugetCacheSentinel.UnauthorizedAccess)
|
||||||
_nugetCachePrimer.PrimeCache();
|
|
||||||
}
|
|
||||||
else if (_nugetCacheSentinel.UnauthorizedAccess)
|
|
||||||
{
|
{
|
||||||
PrintUnauthorizedAccessMessage();
|
PrintUnauthorizedAccessMessage();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
PrintNugetCachePrimeMessage();
|
||||||
|
|
||||||
|
_nugetCachePrimer.PrimeCache();
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
private bool ShouldPrintFirstTimeUseNotice()
|
private bool ShouldPrintFirstTimeUseNotice()
|
||||||
|
|
|
@ -14,19 +14,19 @@ namespace Microsoft.DotNet.Configurer
|
||||||
|
|
||||||
private readonly IFile _file;
|
private readonly IFile _file;
|
||||||
|
|
||||||
private string _nugetCachePath;
|
private string _dotnetUserProfileFolderPath;
|
||||||
|
|
||||||
private string SentinelPath => Path.Combine(_nugetCachePath, SENTINEL);
|
private string SentinelPath => Path.Combine(_dotnetUserProfileFolderPath, SENTINEL);
|
||||||
|
|
||||||
public FirstTimeUseNoticeSentinel(CliFallbackFolderPathCalculator cliFallbackFolderPathCalculator) :
|
public FirstTimeUseNoticeSentinel(CliFallbackFolderPathCalculator cliFallbackFolderPathCalculator) :
|
||||||
this(cliFallbackFolderPathCalculator.CliFallbackFolderPath, FileSystemWrapper.Default.File)
|
this(cliFallbackFolderPathCalculator.DotnetUserProfileFolderPath, FileSystemWrapper.Default.File)
|
||||||
{
|
{
|
||||||
}
|
}
|
||||||
|
|
||||||
internal FirstTimeUseNoticeSentinel(string nugetCachePath, IFile file)
|
internal FirstTimeUseNoticeSentinel(string dotnetUserProfileFolderPath, IFile file)
|
||||||
{
|
{
|
||||||
_file = file;
|
_file = file;
|
||||||
_nugetCachePath = nugetCachePath;
|
_dotnetUserProfileFolderPath = dotnetUserProfileFolderPath;
|
||||||
}
|
}
|
||||||
|
|
||||||
public bool Exists()
|
public bool Exists()
|
||||||
|
|
|
@ -1,10 +0,0 @@
|
||||||
// Copyright (c) .NET Foundation and contributors. All rights reserved.
|
|
||||||
// Licensed under the MIT license. See LICENSE file in the project root for full license information.
|
|
||||||
|
|
||||||
namespace Microsoft.DotNet.Configurer
|
|
||||||
{
|
|
||||||
public interface INuGetConfig
|
|
||||||
{
|
|
||||||
void AddCliFallbackFolder(string fallbackFolderPath);
|
|
||||||
}
|
|
||||||
}
|
|
|
@ -143,7 +143,7 @@ Here are some options to fix this error:
|
||||||
---------------------
|
---------------------
|
||||||
1. Re-run this command with elevated access.
|
1. Re-run this command with elevated access.
|
||||||
2. Disabled the first run experience by setting the environment variable DOTNET_SKIP_FIRST_TIME_EXPERIENCE to true.
|
2. Disabled the first run experience by setting the environment variable DOTNET_SKIP_FIRST_TIME_EXPERIENCE to true.
|
||||||
3. Copy the .NET Core SDK to a non-protected location and use it from there.";
|
3. Copy the .NET Core SDK to a non-protected location and use it from there.
|
||||||
</value>
|
</value>
|
||||||
</data>
|
</data>
|
||||||
</root>
|
</root>
|
||||||
|
|
|
@ -17,18 +17,14 @@ namespace Microsoft.DotNet.Configurer
|
||||||
|
|
||||||
private readonly INuGetCacheSentinel _nuGetCacheSentinel;
|
private readonly INuGetCacheSentinel _nuGetCacheSentinel;
|
||||||
|
|
||||||
private readonly INuGetConfig _nuGetConfig;
|
|
||||||
|
|
||||||
private readonly CliFallbackFolderPathCalculator _cliFallbackFolderPathCalculator;
|
private readonly CliFallbackFolderPathCalculator _cliFallbackFolderPathCalculator;
|
||||||
|
|
||||||
public NuGetCachePrimer(
|
public NuGetCachePrimer(
|
||||||
INuGetPackagesArchiver nugetPackagesArchiver,
|
INuGetPackagesArchiver nugetPackagesArchiver,
|
||||||
INuGetCacheSentinel nuGetCacheSentinel,
|
INuGetCacheSentinel nuGetCacheSentinel,
|
||||||
INuGetConfig nuGetConfig,
|
|
||||||
CliFallbackFolderPathCalculator cliFallbackFolderPathCalculator)
|
CliFallbackFolderPathCalculator cliFallbackFolderPathCalculator)
|
||||||
: this(nugetPackagesArchiver,
|
: this(nugetPackagesArchiver,
|
||||||
nuGetCacheSentinel,
|
nuGetCacheSentinel,
|
||||||
nuGetConfig,
|
|
||||||
cliFallbackFolderPathCalculator,
|
cliFallbackFolderPathCalculator,
|
||||||
FileSystemWrapper.Default.File)
|
FileSystemWrapper.Default.File)
|
||||||
{
|
{
|
||||||
|
@ -37,7 +33,6 @@ namespace Microsoft.DotNet.Configurer
|
||||||
internal NuGetCachePrimer(
|
internal NuGetCachePrimer(
|
||||||
INuGetPackagesArchiver nugetPackagesArchiver,
|
INuGetPackagesArchiver nugetPackagesArchiver,
|
||||||
INuGetCacheSentinel nuGetCacheSentinel,
|
INuGetCacheSentinel nuGetCacheSentinel,
|
||||||
INuGetConfig nuGetConfig,
|
|
||||||
CliFallbackFolderPathCalculator cliFallbackFolderPathCalculator,
|
CliFallbackFolderPathCalculator cliFallbackFolderPathCalculator,
|
||||||
IFile file)
|
IFile file)
|
||||||
{
|
{
|
||||||
|
@ -45,8 +40,6 @@ namespace Microsoft.DotNet.Configurer
|
||||||
|
|
||||||
_nuGetCacheSentinel = nuGetCacheSentinel;
|
_nuGetCacheSentinel = nuGetCacheSentinel;
|
||||||
|
|
||||||
_nuGetConfig = nuGetConfig;
|
|
||||||
|
|
||||||
_cliFallbackFolderPathCalculator = cliFallbackFolderPathCalculator;
|
_cliFallbackFolderPathCalculator = cliFallbackFolderPathCalculator;
|
||||||
|
|
||||||
_file = file;
|
_file = file;
|
||||||
|
@ -63,8 +56,6 @@ namespace Microsoft.DotNet.Configurer
|
||||||
|
|
||||||
_nugetPackagesArchiver.ExtractArchive(nuGetFallbackFolder);
|
_nugetPackagesArchiver.ExtractArchive(nuGetFallbackFolder);
|
||||||
|
|
||||||
_nuGetConfig.AddCliFallbackFolder(nuGetFallbackFolder);
|
|
||||||
|
|
||||||
_nuGetCacheSentinel.CreateIfNotExists();
|
_nuGetCacheSentinel.CreateIfNotExists();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -1,39 +0,0 @@
|
||||||
// Copyright (c) .NET Foundation and contributors. All rights reserved.
|
|
||||||
// Licensed under the MIT license. See LICENSE file in the project root for full license information.
|
|
||||||
|
|
||||||
using NuGet.Common;
|
|
||||||
using NuGet.Configuration;
|
|
||||||
using System.Linq;
|
|
||||||
|
|
||||||
namespace Microsoft.DotNet.Configurer
|
|
||||||
{
|
|
||||||
public class NuGetConfig : INuGetConfig
|
|
||||||
{
|
|
||||||
public const string FallbackPackageFolders = "packageSources";
|
|
||||||
|
|
||||||
private ISettings _settings;
|
|
||||||
|
|
||||||
public NuGetConfig(CliFallbackFolderPathCalculator cliFallbackFolderPathCalculator)
|
|
||||||
{
|
|
||||||
_settings = new Settings(cliFallbackFolderPathCalculator.NuGetUserSettingsDirectory);
|
|
||||||
}
|
|
||||||
|
|
||||||
internal NuGetConfig(ISettings settings)
|
|
||||||
{
|
|
||||||
_settings = settings;
|
|
||||||
}
|
|
||||||
|
|
||||||
public void AddCliFallbackFolder(string fallbackFolderPath)
|
|
||||||
{
|
|
||||||
if (!IsCliFallbackFolderSet(fallbackFolderPath))
|
|
||||||
{
|
|
||||||
_settings.SetValue(FallbackPackageFolders, "CliFallbackFolder", fallbackFolderPath);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
private bool IsCliFallbackFolderSet(string fallbackFolderPath)
|
|
||||||
{
|
|
||||||
return _settings.GetSettingValues(FallbackPackageFolders).Any(s => s.Value == fallbackFolderPath);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
|
@ -128,7 +128,7 @@ namespace Microsoft.DotNet.Cli
|
||||||
|
|
||||||
if (telemetryClient == null)
|
if (telemetryClient == null)
|
||||||
{
|
{
|
||||||
telemetryClient = new Telemetry(nugetCacheSentinel);
|
telemetryClient = new Telemetry(firstTimeUseNoticeSentinel);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -177,18 +177,16 @@ namespace Microsoft.DotNet.Cli
|
||||||
var nugetPackagesArchiver = new NuGetPackagesArchiver();
|
var nugetPackagesArchiver = new NuGetPackagesArchiver();
|
||||||
var environmentProvider = new EnvironmentProvider();
|
var environmentProvider = new EnvironmentProvider();
|
||||||
var commandFactory = new DotNetCommandFactory(alwaysRunOutOfProc: true);
|
var commandFactory = new DotNetCommandFactory(alwaysRunOutOfProc: true);
|
||||||
var nugetConfig = new NuGetConfig(cliFallbackFolderPathCalculator);
|
|
||||||
var nugetCachePrimer = new NuGetCachePrimer(
|
var nugetCachePrimer = new NuGetCachePrimer(
|
||||||
nugetPackagesArchiver,
|
nugetPackagesArchiver,
|
||||||
nugetCacheSentinel,
|
nugetCacheSentinel,
|
||||||
nugetConfig,
|
|
||||||
cliFallbackFolderPathCalculator);
|
cliFallbackFolderPathCalculator);
|
||||||
var dotnetConfigurer = new DotnetFirstTimeUseConfigurer(
|
var dotnetConfigurer = new DotnetFirstTimeUseConfigurer(
|
||||||
nugetCachePrimer,
|
nugetCachePrimer,
|
||||||
nugetCacheSentinel,
|
nugetCacheSentinel,
|
||||||
firstTimeUseNoticeSentinel,
|
firstTimeUseNoticeSentinel,
|
||||||
environmentProvider,
|
environmentProvider,
|
||||||
Reporter.Output
|
Reporter.Output,
|
||||||
cliFallbackFolderPathCalculator.CliFallbackFolderPath);
|
cliFallbackFolderPathCalculator.CliFallbackFolderPath);
|
||||||
|
|
||||||
dotnetConfigurer.Configure();
|
dotnetConfigurer.Configure();
|
||||||
|
|
|
@ -35,9 +35,9 @@ namespace Microsoft.DotNet.Cli
|
||||||
|
|
||||||
public Telemetry () : this(null) { }
|
public Telemetry () : this(null) { }
|
||||||
|
|
||||||
public Telemetry(INuGetCacheSentinel sentinel) : this(sentinel, null) { }
|
public Telemetry(IFirstTimeUseNoticeSentinel sentinel) : this(sentinel, null) { }
|
||||||
|
|
||||||
public Telemetry(INuGetCacheSentinel sentinel, string sessionId)
|
public Telemetry(IFirstTimeUseNoticeSentinel sentinel, string sessionId)
|
||||||
{
|
{
|
||||||
Enabled = !Env.GetEnvironmentVariableAsBool(TelemetryOptout) && PermissionExists(sentinel);
|
Enabled = !Env.GetEnvironmentVariableAsBool(TelemetryOptout) && PermissionExists(sentinel);
|
||||||
|
|
||||||
|
@ -53,7 +53,7 @@ namespace Microsoft.DotNet.Cli
|
||||||
_trackEventTask = Task.Factory.StartNew(() => InitializeTelemetry());
|
_trackEventTask = Task.Factory.StartNew(() => InitializeTelemetry());
|
||||||
}
|
}
|
||||||
|
|
||||||
private bool PermissionExists(INuGetCacheSentinel sentinel)
|
private bool PermissionExists(IFirstTimeUseNoticeSentinel sentinel)
|
||||||
{
|
{
|
||||||
if (sentinel == null)
|
if (sentinel == null)
|
||||||
{
|
{
|
||||||
|
|
|
@ -11,7 +11,8 @@ namespace Microsoft.DotNet.Tools.MSBuild
|
||||||
{
|
{
|
||||||
public sealed class MSBuildLogger : Logger
|
public sealed class MSBuildLogger : Logger
|
||||||
{
|
{
|
||||||
private readonly INuGetCacheSentinel _sentinel = new NuGetCacheSentinel(new CliFallbackFolderPathCalculator());
|
private readonly IFirstTimeUseNoticeSentinel _sentinel =
|
||||||
|
new FirstTimeUseNoticeSentinel(new CliFallbackFolderPathCalculator());
|
||||||
private readonly ITelemetry _telemetry;
|
private readonly ITelemetry _telemetry;
|
||||||
|
|
||||||
public MSBuildLogger()
|
public MSBuildLogger()
|
||||||
|
|
|
@ -28,8 +28,10 @@ namespace Microsoft.DotNet.Tools.New
|
||||||
|
|
||||||
public static int Run(string[] args)
|
public static int Run(string[] args)
|
||||||
{
|
{
|
||||||
var sessionId = Environment.GetEnvironmentVariable(MSBuildForwardingApp.TelemetrySessionIdEnvironmentVariableName);
|
var sessionId =
|
||||||
var telemetry = new Telemetry(new NuGetCacheSentinel(new CliFallbackFolderPathCalculator()), sessionId);
|
Environment.GetEnvironmentVariable(MSBuildForwardingApp.TelemetrySessionIdEnvironmentVariableName);
|
||||||
|
var telemetry =
|
||||||
|
new Telemetry(new FirstTimeUseNoticeSentinel(new CliFallbackFolderPathCalculator()), sessionId);
|
||||||
var logger = new TelemetryLogger(null);
|
var logger = new TelemetryLogger(null);
|
||||||
|
|
||||||
if (telemetry.Enabled)
|
if (telemetry.Enabled)
|
||||||
|
|
|
@ -26,7 +26,6 @@ namespace Microsoft.DotNet.Configurer.UnitTests
|
||||||
|
|
||||||
private Mock<INuGetPackagesArchiver> _nugetPackagesArchiverMock;
|
private Mock<INuGetPackagesArchiver> _nugetPackagesArchiverMock;
|
||||||
private Mock<INuGetCacheSentinel> _nugetCacheSentinel;
|
private Mock<INuGetCacheSentinel> _nugetCacheSentinel;
|
||||||
private Mock<INuGetConfig> _nugetConfigMock;
|
|
||||||
private CliFallbackFolderPathCalculator _cliFallbackFolderPathCalculator;
|
private CliFallbackFolderPathCalculator _cliFallbackFolderPathCalculator;
|
||||||
|
|
||||||
public GivenANuGetCachePrimer()
|
public GivenANuGetCachePrimer()
|
||||||
|
@ -41,14 +40,11 @@ namespace Microsoft.DotNet.Configurer.UnitTests
|
||||||
|
|
||||||
_nugetCacheSentinel = new Mock<INuGetCacheSentinel>();
|
_nugetCacheSentinel = new Mock<INuGetCacheSentinel>();
|
||||||
|
|
||||||
_nugetConfigMock = new Mock<INuGetConfig>();
|
|
||||||
|
|
||||||
_cliFallbackFolderPathCalculator = new CliFallbackFolderPathCalculator();
|
_cliFallbackFolderPathCalculator = new CliFallbackFolderPathCalculator();
|
||||||
|
|
||||||
var nugetCachePrimer = new NuGetCachePrimer(
|
var nugetCachePrimer = new NuGetCachePrimer(
|
||||||
_nugetPackagesArchiverMock.Object,
|
_nugetPackagesArchiverMock.Object,
|
||||||
_nugetCacheSentinel.Object,
|
_nugetCacheSentinel.Object,
|
||||||
_nugetConfigMock.Object,
|
|
||||||
_cliFallbackFolderPathCalculator,
|
_cliFallbackFolderPathCalculator,
|
||||||
_fileSystemMock.File);
|
_fileSystemMock.File);
|
||||||
|
|
||||||
|
@ -67,7 +63,6 @@ namespace Microsoft.DotNet.Configurer.UnitTests
|
||||||
var nugetCachePrimer = new NuGetCachePrimer(
|
var nugetCachePrimer = new NuGetCachePrimer(
|
||||||
nugetPackagesArchiverMock.Object,
|
nugetPackagesArchiverMock.Object,
|
||||||
_nugetCacheSentinel.Object,
|
_nugetCacheSentinel.Object,
|
||||||
_nugetConfigMock.Object,
|
|
||||||
_cliFallbackFolderPathCalculator,
|
_cliFallbackFolderPathCalculator,
|
||||||
fileSystemMock.File);
|
fileSystemMock.File);
|
||||||
|
|
||||||
|
@ -76,14 +71,6 @@ namespace Microsoft.DotNet.Configurer.UnitTests
|
||||||
nugetPackagesArchiverMock.Verify(n => n.ExtractArchive(It.IsAny<string>()), Times.Never);
|
nugetPackagesArchiverMock.Verify(n => n.ExtractArchive(It.IsAny<string>()), Times.Never);
|
||||||
}
|
}
|
||||||
|
|
||||||
[Fact]
|
|
||||||
public void It_adds_the_fallback_folder_to_NuGet_Config()
|
|
||||||
{
|
|
||||||
_nugetConfigMock.Verify(n =>
|
|
||||||
n.AddCliFallbackFolder(_cliFallbackFolderPathCalculator.CliFallbackFolderPath),
|
|
||||||
Times.Exactly(1));
|
|
||||||
}
|
|
||||||
|
|
||||||
[Fact]
|
[Fact]
|
||||||
public void It_extracts_the_archive_to_the_fallback_folder()
|
public void It_extracts_the_archive_to_the_fallback_folder()
|
||||||
{
|
{
|
||||||
|
@ -108,7 +95,6 @@ namespace Microsoft.DotNet.Configurer.UnitTests
|
||||||
var nugetCachePrimer = new NuGetCachePrimer(
|
var nugetCachePrimer = new NuGetCachePrimer(
|
||||||
nugetPackagesArchiveMock.Object,
|
nugetPackagesArchiveMock.Object,
|
||||||
nugetCacheSentinel.Object,
|
nugetCacheSentinel.Object,
|
||||||
_nugetConfigMock.Object,
|
|
||||||
_cliFallbackFolderPathCalculator,
|
_cliFallbackFolderPathCalculator,
|
||||||
_fileSystemMock.File);
|
_fileSystemMock.File);
|
||||||
|
|
||||||
|
|
|
@ -1,53 +0,0 @@
|
||||||
// Copyright (c) .NET Foundation and contributors. All rights reserved.
|
|
||||||
// Licensed under the MIT license. See LICENSE file in the project root for full license information.
|
|
||||||
|
|
||||||
using System.Collections.Generic;
|
|
||||||
using FluentAssertions;
|
|
||||||
using Moq;
|
|
||||||
using NuGet.Configuration;
|
|
||||||
using Xunit;
|
|
||||||
|
|
||||||
namespace Microsoft.DotNet.Configurer.UnitTests
|
|
||||||
{
|
|
||||||
public class GivenANuGetConfig
|
|
||||||
{
|
|
||||||
private const string PathToFallbackFolderAlreadySet = "some path to fallback folder";
|
|
||||||
|
|
||||||
private Mock<ISettings> _settingsMock;
|
|
||||||
private INuGetConfig _nugetConfig;
|
|
||||||
|
|
||||||
public GivenANuGetConfig()
|
|
||||||
{
|
|
||||||
_settingsMock = new Mock<ISettings>();
|
|
||||||
_settingsMock
|
|
||||||
.Setup(s => s.GetSettingValues(NuGetConfig.FallbackPackageFolders, false))
|
|
||||||
.Returns(new List<SettingValue>()
|
|
||||||
{
|
|
||||||
new SettingValue("CliFallbackFolder", PathToFallbackFolderAlreadySet, false)
|
|
||||||
});
|
|
||||||
|
|
||||||
_nugetConfig = new NuGetConfig(_settingsMock.Object);
|
|
||||||
}
|
|
||||||
|
|
||||||
[Fact]
|
|
||||||
public void ItAddsACliFallbackFolderIfOneIsNotPresentAlready()
|
|
||||||
{
|
|
||||||
const string FallbackFolderNotAlreadySet = "some path not already set";
|
|
||||||
_nugetConfig.AddCliFallbackFolder(FallbackFolderNotAlreadySet);
|
|
||||||
|
|
||||||
_settingsMock.Verify(s =>
|
|
||||||
s.SetValue(NuGetConfig.FallbackPackageFolders, "CliFallbackFolder", FallbackFolderNotAlreadySet),
|
|
||||||
Times.Exactly(1));
|
|
||||||
}
|
|
||||||
|
|
||||||
[Fact]
|
|
||||||
public void ItDoesNotAddTheCliFallbackFolderIfItIsAlreadyPresent()
|
|
||||||
{
|
|
||||||
_nugetConfig.AddCliFallbackFolder(PathToFallbackFolderAlreadySet);
|
|
||||||
|
|
||||||
_settingsMock.Verify(s =>
|
|
||||||
s.SetValue(NuGetConfig.FallbackPackageFolders, "CliFallbackFolder", PathToFallbackFolderAlreadySet),
|
|
||||||
Times.Never);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
|
@ -109,7 +109,7 @@ namespace Microsoft.DotNet.Cli.MSBuild.Tests
|
||||||
|
|
||||||
result.Should().Fail();
|
result.Should().Fail();
|
||||||
|
|
||||||
result.StdOut.Should().ContainVisuallySameFragment(@"source(s): /usr/local/bin, nuget.org");
|
result.StdOut.Should().ContainVisuallySameFragment("NU1101");
|
||||||
}
|
}
|
||||||
|
|
||||||
[Fact]
|
[Fact]
|
||||||
|
@ -186,7 +186,7 @@ namespace Microsoft.DotNet.Cli.MSBuild.Tests
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
public sealed class MockNuGetCacheSentinel : INuGetCacheSentinel
|
public sealed class MockNuGetCacheSentinel : IFirstTimeUseNoticeSentinel
|
||||||
{
|
{
|
||||||
private readonly Func<bool> _exists;
|
private readonly Func<bool> _exists;
|
||||||
|
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue