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,
string targetFramework = null,
FilePath? nugetConfig = null,
DirectoryPath? rootConfigDirectory = null,
string source = null,
string verbosity = null);
}

View file

@ -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

View file

@ -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;

View file

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