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) {