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.
This commit is contained in:
Peter Huene 2018-03-07 01:30:18 -08:00
parent e2d9c2f892
commit 52478e8947
No known key found for this signature in database
GPG key ID: E1D265D820213D6A
4 changed files with 12 additions and 11 deletions

View file

@ -15,6 +15,7 @@ namespace Microsoft.DotNet.ToolPackage
VersionRange versionRange = null, VersionRange versionRange = null,
string targetFramework = null, string targetFramework = null,
FilePath? nugetConfig = null, FilePath? nugetConfig = null,
DirectoryPath? rootConfigDirectory = null,
string source = null, string source = null,
string verbosity = null); string verbosity = null);
} }

View file

@ -35,6 +35,7 @@ namespace Microsoft.DotNet.ToolPackage
VersionRange versionRange = null, VersionRange versionRange = null,
string targetFramework = null, string targetFramework = null,
FilePath? nugetConfig = null, FilePath? nugetConfig = null,
DirectoryPath? rootConfigDirectory = null,
string source = null, string source = null,
string verbosity = null) string verbosity = null)
{ {
@ -53,7 +54,8 @@ namespace Microsoft.DotNet.ToolPackage
packageId: packageId, packageId: packageId,
versionRange: versionRange, versionRange: versionRange,
targetFramework: targetFramework ?? BundledTargetFramework.GetTargetFrameworkMoniker(), targetFramework: targetFramework ?? BundledTargetFramework.GetTargetFrameworkMoniker(),
restoreDirectory: stageDirectory); restoreDirectory: stageDirectory,
rootConfigDirectory: rootConfigDirectory);
try try
{ {
@ -115,7 +117,8 @@ namespace Microsoft.DotNet.ToolPackage
PackageId packageId, PackageId packageId,
VersionRange versionRange, VersionRange versionRange,
string targetFramework, string targetFramework,
DirectoryPath restoreDirectory) DirectoryPath restoreDirectory,
DirectoryPath? rootConfigDirectory)
{ {
var tempProject = _tempProject ?? new DirectoryPath(Path.GetTempPath()) var tempProject = _tempProject ?? new DirectoryPath(Path.GetTempPath())
.WithSubDirectories(Path.GetRandomFileName()) .WithSubDirectories(Path.GetRandomFileName())
@ -135,7 +138,7 @@ namespace Microsoft.DotNet.ToolPackage
new XElement("TargetFramework", targetFramework), new XElement("TargetFramework", targetFramework),
new XElement("RestorePackagesPath", restoreDirectory.Value), new XElement("RestorePackagesPath", restoreDirectory.Value),
new XElement("RestoreProjectStyle", "DotnetToolReference"), // without it, project cannot reference tool package 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("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("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 new XElement("RestoreAdditionalProjectSources", // use fallbackfolder as feed to enable offline

View file

@ -154,21 +154,17 @@ namespace Microsoft.DotNet.ToolPackage.Tests
} }
[Fact] [Fact]
public void GivenAConfigFileInCurrentDirectoryPackageInstallSucceeds() public void GivenAConfigFileRootDirectoryPackageInstallSucceeds()
{ {
var nugetConfigPath = WriteNugetConfigFileToPointToTheFeed(); var nugetConfigPath = WriteNugetConfigFileToPointToTheFeed();
var (store, installer, reporter, fileSystem) = Setup(useMock: false); 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( var package = installer.InstallPackage(
packageId: TestPackageId, packageId: TestPackageId,
versionRange: VersionRange.Parse(TestPackageVersion), versionRange: VersionRange.Parse(TestPackageVersion),
targetFramework: _testTargetframework); targetFramework: _testTargetframework,
rootConfigDirectory: nugetConfigPath.GetDirectoryPath());
AssertPackageInstall(reporter, fileSystem, package, store); AssertPackageInstall(reporter, fileSystem, package, store);
@ -641,7 +637,7 @@ namespace Microsoft.DotNet.ToolPackage.Tests
FilePath? tempProject = null, FilePath? tempProject = null,
DirectoryPath? offlineFeed = 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(); var reporter = new BufferedReporter();
IFileSystem fileSystem; IFileSystem fileSystem;

View file

@ -40,6 +40,7 @@ namespace Microsoft.DotNet.Tools.Tests.ComponentMocks
VersionRange versionRange = null, VersionRange versionRange = null,
string targetFramework = null, string targetFramework = null,
FilePath? nugetConfig = null, FilePath? nugetConfig = null,
DirectoryPath? rootConfigDirectory = null,
string source = null, string source = null,
string verbosity = null) string verbosity = null)
{ {