From 52478e8947d12953119ebf6175adaa0166a7558f Mon Sep 17 00:00:00 2001 From: Peter Huene Date: Wed, 7 Mar 2018 01:30:18 -0800 Subject: [PATCH] Stop modifying current working directory from test. This commit fixes the ToolPackageInstaller tests so that they no longer modify the current working directory. The directory being set is now being properly passed in as an argument to override the default of the current working directory. Additionally, this commit also changes the package root to a temp location rather than based off of the current working directory. --- src/dotnet/ToolPackage/IToolPackageInstaller.cs | 1 + src/dotnet/ToolPackage/ToolPackageInstaller.cs | 9 ++++++--- .../ToolPackageInstallerTests.cs | 12 ++++-------- .../ToolPackageInstallerMock.cs | 1 + 4 files changed, 12 insertions(+), 11 deletions(-) diff --git a/src/dotnet/ToolPackage/IToolPackageInstaller.cs b/src/dotnet/ToolPackage/IToolPackageInstaller.cs index c6ef964e1..d54de5460 100644 --- a/src/dotnet/ToolPackage/IToolPackageInstaller.cs +++ b/src/dotnet/ToolPackage/IToolPackageInstaller.cs @@ -15,6 +15,7 @@ namespace Microsoft.DotNet.ToolPackage VersionRange versionRange = null, string targetFramework = null, FilePath? nugetConfig = null, + DirectoryPath? rootConfigDirectory = null, string source = null, string verbosity = null); } diff --git a/src/dotnet/ToolPackage/ToolPackageInstaller.cs b/src/dotnet/ToolPackage/ToolPackageInstaller.cs index 44a51094e..355dabc49 100644 --- a/src/dotnet/ToolPackage/ToolPackageInstaller.cs +++ b/src/dotnet/ToolPackage/ToolPackageInstaller.cs @@ -35,6 +35,7 @@ namespace Microsoft.DotNet.ToolPackage VersionRange versionRange = null, string targetFramework = null, FilePath? nugetConfig = null, + DirectoryPath? rootConfigDirectory = null, string source = null, string verbosity = null) { @@ -53,7 +54,8 @@ namespace Microsoft.DotNet.ToolPackage packageId: packageId, versionRange: versionRange, targetFramework: targetFramework ?? BundledTargetFramework.GetTargetFrameworkMoniker(), - restoreDirectory: stageDirectory); + restoreDirectory: stageDirectory, + rootConfigDirectory: rootConfigDirectory); try { @@ -115,7 +117,8 @@ namespace Microsoft.DotNet.ToolPackage PackageId packageId, VersionRange versionRange, string targetFramework, - DirectoryPath restoreDirectory) + DirectoryPath restoreDirectory, + DirectoryPath? rootConfigDirectory) { var tempProject = _tempProject ?? new DirectoryPath(Path.GetTempPath()) .WithSubDirectories(Path.GetRandomFileName()) @@ -135,7 +138,7 @@ namespace Microsoft.DotNet.ToolPackage new XElement("TargetFramework", targetFramework), new XElement("RestorePackagesPath", restoreDirectory.Value), new XElement("RestoreProjectStyle", "DotnetToolReference"), // without it, project cannot reference tool package - new XElement("RestoreRootConfigDirectory", Directory.GetCurrentDirectory()), // config file probing start directory + new XElement("RestoreRootConfigDirectory", rootConfigDirectory?.Value ?? Directory.GetCurrentDirectory()), // config file probing start directory new XElement("DisableImplicitFrameworkReferences", "true"), // no Microsoft.NETCore.App in tool folder new XElement("RestoreFallbackFolders", "clear"), // do not use fallbackfolder, tool package need to be copied to tool folder new XElement("RestoreAdditionalProjectSources", // use fallbackfolder as feed to enable offline diff --git a/test/Microsoft.DotNet.ToolPackage.Tests/ToolPackageInstallerTests.cs b/test/Microsoft.DotNet.ToolPackage.Tests/ToolPackageInstallerTests.cs index f08ca6077..b487c7dfb 100644 --- a/test/Microsoft.DotNet.ToolPackage.Tests/ToolPackageInstallerTests.cs +++ b/test/Microsoft.DotNet.ToolPackage.Tests/ToolPackageInstallerTests.cs @@ -154,21 +154,17 @@ namespace Microsoft.DotNet.ToolPackage.Tests } [Fact] - public void GivenAConfigFileInCurrentDirectoryPackageInstallSucceeds() + public void GivenAConfigFileRootDirectoryPackageInstallSucceeds() { var nugetConfigPath = WriteNugetConfigFileToPointToTheFeed(); var (store, installer, reporter, fileSystem) = Setup(useMock: false); - /* - * In test, we don't want NuGet to keep look up, so we point current directory to nugetconfig. - */ - Directory.SetCurrentDirectory(nugetConfigPath.GetDirectoryPath().Value); - var package = installer.InstallPackage( packageId: TestPackageId, versionRange: VersionRange.Parse(TestPackageVersion), - targetFramework: _testTargetframework); + targetFramework: _testTargetframework, + rootConfigDirectory: nugetConfigPath.GetDirectoryPath()); AssertPackageInstall(reporter, fileSystem, package, store); @@ -641,7 +637,7 @@ namespace Microsoft.DotNet.ToolPackage.Tests FilePath? tempProject = null, DirectoryPath? offlineFeed = null) { - var root = new DirectoryPath(Path.Combine(Directory.GetCurrentDirectory(), Path.GetRandomFileName())); + var root = new DirectoryPath(Path.Combine(Path.GetFullPath(TempRoot.Root), Path.GetRandomFileName())); var reporter = new BufferedReporter(); IFileSystem fileSystem; diff --git a/test/Microsoft.DotNet.Tools.Tests.ComponentMocks/ToolPackageInstallerMock.cs b/test/Microsoft.DotNet.Tools.Tests.ComponentMocks/ToolPackageInstallerMock.cs index 9966ddb6a..2d058d6fb 100644 --- a/test/Microsoft.DotNet.Tools.Tests.ComponentMocks/ToolPackageInstallerMock.cs +++ b/test/Microsoft.DotNet.Tools.Tests.ComponentMocks/ToolPackageInstallerMock.cs @@ -40,6 +40,7 @@ namespace Microsoft.DotNet.Tools.Tests.ComponentMocks VersionRange versionRange = null, string targetFramework = null, FilePath? nugetConfig = null, + DirectoryPath? rootConfigDirectory = null, string source = null, string verbosity = null) {