From f68d4162e8e611350f9e1463128c8a379021c1e2 Mon Sep 17 00:00:00 2001 From: mrward Date: Sat, 26 Feb 2011 08:49:56 +0000 Subject: [PATCH] Enable logging for the shared package repository when installing and uninstalling NuGet packages. --- .../ISharpDevelopPackageRepositoryFactory.cs | 2 +- .../Project/Src/PackageRepositoryCache.cs | 4 +-- .../Project/Src/SharpDevelopPackageManager.cs | 35 +++---------------- .../Src/SharpDevelopPackageManagerFactory.cs | 33 ++++++++++++----- .../SharpDevelopPackageRepositoryFactory.cs | 6 ++-- .../Helpers/FakePackageRepositoryFactory.cs | 4 +-- .../Helpers/FakeSharedPackageRepository.cs | 10 +++--- .../Test/Src/PackageRepositoryCacheTests.cs | 18 ++++++++-- .../SharpDevelopPackageManagerFactoryTests.cs | 30 ++++++++++++---- .../Src/SharpDevelopPackageManagerTests.cs | 7 +++- 10 files changed, 86 insertions(+), 63 deletions(-) diff --git a/src/AddIns/Misc/PackageManagement/Project/Src/ISharpDevelopPackageRepositoryFactory.cs b/src/AddIns/Misc/PackageManagement/Project/Src/ISharpDevelopPackageRepositoryFactory.cs index 44bab01386..add16d1fd6 100644 --- a/src/AddIns/Misc/PackageManagement/Project/Src/ISharpDevelopPackageRepositoryFactory.cs +++ b/src/AddIns/Misc/PackageManagement/Project/Src/ISharpDevelopPackageRepositoryFactory.cs @@ -8,6 +8,6 @@ namespace ICSharpCode.PackageManagement { public interface ISharpDevelopPackageRepositoryFactory : IPackageRepositoryFactory { - ISharedPackageRepository CreateSharedRepository(string path); + ISharedPackageRepository CreateSharedRepository(IPackagePathResolver pathResolver, IFileSystem fileSystem); } } diff --git a/src/AddIns/Misc/PackageManagement/Project/Src/PackageRepositoryCache.cs b/src/AddIns/Misc/PackageManagement/Project/Src/PackageRepositoryCache.cs index 0822a7f491..48ae5bfa1d 100644 --- a/src/AddIns/Misc/PackageManagement/Project/Src/PackageRepositoryCache.cs +++ b/src/AddIns/Misc/PackageManagement/Project/Src/PackageRepositoryCache.cs @@ -48,9 +48,9 @@ namespace ICSharpCode.PackageManagement return repository; } - public ISharedPackageRepository CreateSharedRepository(string path) + public ISharedPackageRepository CreateSharedRepository(IPackagePathResolver pathResolver, IFileSystem fileSystem) { - return factory.CreateSharedRepository(path); + return factory.CreateSharedRepository(pathResolver, fileSystem); } } } diff --git a/src/AddIns/Misc/PackageManagement/Project/Src/SharpDevelopPackageManager.cs b/src/AddIns/Misc/PackageManagement/Project/Src/SharpDevelopPackageManager.cs index ca8c82d8b6..e09cedbc50 100644 --- a/src/AddIns/Misc/PackageManagement/Project/Src/SharpDevelopPackageManager.cs +++ b/src/AddIns/Misc/PackageManagement/Project/Src/SharpDevelopPackageManager.cs @@ -13,42 +13,15 @@ namespace ICSharpCode.PackageManagement IProjectSystem projectSystem; public SharpDevelopPackageManager( - IPackageRepository sourceRepository, - MSBuildBasedProject project, - ISharedPackageRepository localRepository, - PackageRepositoryPaths repositoryPaths) - : this( - sourceRepository, - new SharpDevelopProjectSystem(project), - localRepository, - repositoryPaths) - { - } - - public SharpDevelopPackageManager( - IPackageRepository sourceRepository, - IProjectSystem projectSystem, - ISharedPackageRepository localRepository, - PackageRepositoryPaths repositoryPaths) - : this( - sourceRepository, - projectSystem, - localRepository, - repositoryPaths, - repositoryPaths.SolutionPackagesPath) - { - } - - SharpDevelopPackageManager( IPackageRepository sourceRepository, IProjectSystem projectSystem, + IFileSystem fileSystem, ISharedPackageRepository localRepository, - PackageRepositoryPaths repositoryPaths, - string solutionPackagesPath) + IPackagePathResolver pathResolver) : base( sourceRepository, - new DefaultPackagePathResolver(solutionPackagesPath), - new PhysicalFileSystem(solutionPackagesPath), + pathResolver, + fileSystem, localRepository) { this.projectSystem = projectSystem; diff --git a/src/AddIns/Misc/PackageManagement/Project/Src/SharpDevelopPackageManagerFactory.cs b/src/AddIns/Misc/PackageManagement/Project/Src/SharpDevelopPackageManagerFactory.cs index f819aa12bb..48f6a32413 100644 --- a/src/AddIns/Misc/PackageManagement/Project/Src/SharpDevelopPackageManagerFactory.cs +++ b/src/AddIns/Misc/PackageManagement/Project/Src/SharpDevelopPackageManagerFactory.cs @@ -15,14 +15,14 @@ namespace ICSharpCode.PackageManagement public SharpDevelopPackageManagerFactory() : this(new SharpDevelopPackageRepositoryFactory(), - new SharpDevelopProjectSystemFactory(), - new PackageManagementOptions()) + new SharpDevelopProjectSystemFactory(), + new PackageManagementOptions()) { } public SharpDevelopPackageManagerFactory(ISharpDevelopPackageRepositoryFactory packageRepositoryFactory, - ISharpDevelopProjectSystemFactory projectSystemFactory, - PackageManagementOptions options) + ISharpDevelopProjectSystemFactory projectSystemFactory, + PackageManagementOptions options) { this.packageRepositoryFactory = packageRepositoryFactory; this.projectSystemFactory = projectSystemFactory; @@ -31,10 +31,25 @@ namespace ICSharpCode.PackageManagement public ISharpDevelopPackageManager CreatePackageManager(IPackageRepository packageRepository, MSBuildBasedProject project) { - PackageRepositoryPaths repositoryPaths = new PackageRepositoryPaths(project, options); + IFileSystem fileSystem = CreateFileSystemThatWillContainPackages(project); + return CreatePackageManager(fileSystem, packageRepository, project); + } + + IFileSystem CreateFileSystemThatWillContainPackages(MSBuildBasedProject project) + { + var repositoryPaths = new PackageRepositoryPaths(project, options); + return new PhysicalFileSystem(repositoryPaths.SolutionPackagesPath); + } + + ISharpDevelopPackageManager CreatePackageManager( + IFileSystem fileSystem, + IPackageRepository packageRepository, + MSBuildBasedProject project) + { + DefaultPackagePathResolver pathResolver = new DefaultPackagePathResolver(fileSystem); + ISharedPackageRepository sharedRepository = CreateSharedRepository(pathResolver, fileSystem); IProjectSystem projectSystem = CreateProjectSystem(project); - ISharedPackageRepository sharedRepository = CreateSharedRepository(repositoryPaths.SolutionPackagesPath); - return new SharpDevelopPackageManager(packageRepository, projectSystem, sharedRepository, repositoryPaths); + return new SharpDevelopPackageManager(packageRepository, projectSystem, fileSystem, sharedRepository, pathResolver); } IProjectSystem CreateProjectSystem(MSBuildBasedProject project) @@ -42,9 +57,9 @@ namespace ICSharpCode.PackageManagement return projectSystemFactory.CreateProjectSystem(project); } - ISharedPackageRepository CreateSharedRepository(string path) + ISharedPackageRepository CreateSharedRepository(IPackagePathResolver pathResolver, IFileSystem fileSystem) { - return packageRepositoryFactory.CreateSharedRepository(path); + return packageRepositoryFactory.CreateSharedRepository(pathResolver, fileSystem); } } } diff --git a/src/AddIns/Misc/PackageManagement/Project/Src/SharpDevelopPackageRepositoryFactory.cs b/src/AddIns/Misc/PackageManagement/Project/Src/SharpDevelopPackageRepositoryFactory.cs index 9565f30e78..fc0f1ffc4a 100644 --- a/src/AddIns/Misc/PackageManagement/Project/Src/SharpDevelopPackageRepositoryFactory.cs +++ b/src/AddIns/Misc/PackageManagement/Project/Src/SharpDevelopPackageRepositoryFactory.cs @@ -7,10 +7,10 @@ using NuGet; namespace ICSharpCode.PackageManagement { public class SharpDevelopPackageRepositoryFactory : PackageRepositoryFactory, ISharpDevelopPackageRepositoryFactory - { - public ISharedPackageRepository CreateSharedRepository(string path) + { + public ISharedPackageRepository CreateSharedRepository(IPackagePathResolver pathResolver, IFileSystem fileSystem) { - return new SharedPackageRepository(path); + return new SharedPackageRepository(pathResolver, fileSystem); } } } diff --git a/src/AddIns/Misc/PackageManagement/Test/Src/Helpers/FakePackageRepositoryFactory.cs b/src/AddIns/Misc/PackageManagement/Test/Src/Helpers/FakePackageRepositoryFactory.cs index 9031382ef6..bb5c1cf8a8 100644 --- a/src/AddIns/Misc/PackageManagement/Test/Src/Helpers/FakePackageRepositoryFactory.cs +++ b/src/AddIns/Misc/PackageManagement/Test/Src/Helpers/FakePackageRepositoryFactory.cs @@ -35,9 +35,9 @@ namespace PackageManagement.Tests.Helpers return FakePackageRepository; } - public ISharedPackageRepository CreateSharedRepository(string path) + public ISharedPackageRepository CreateSharedRepository(IPackagePathResolver pathResolver, IFileSystem fileSystem) { - return new FakeSharedPackageRepository(path); + return new FakeSharedPackageRepository(pathResolver, fileSystem); } } } diff --git a/src/AddIns/Misc/PackageManagement/Test/Src/Helpers/FakeSharedPackageRepository.cs b/src/AddIns/Misc/PackageManagement/Test/Src/Helpers/FakeSharedPackageRepository.cs index adbe9d1436..7b2fc40e23 100644 --- a/src/AddIns/Misc/PackageManagement/Test/Src/Helpers/FakeSharedPackageRepository.cs +++ b/src/AddIns/Misc/PackageManagement/Test/Src/Helpers/FakeSharedPackageRepository.cs @@ -10,16 +10,18 @@ namespace PackageManagement.Tests.Helpers { public class FakeSharedPackageRepository : FakePackageRepository, ISharedPackageRepository { - public string PathPassedToConstructor; public string PathPassedToRegisterRepository; + public IPackagePathResolver PackagePathResolverPassedToConstructor; + public IFileSystem FileSystemPassedToConstructor; - public FakeSharedPackageRepository(string path) + public FakeSharedPackageRepository() { - PathPassedToConstructor = path; } - public FakeSharedPackageRepository() + public FakeSharedPackageRepository(IPackagePathResolver pathResolver, IFileSystem fileSystem) { + this.PackagePathResolverPassedToConstructor = pathResolver; + this.FileSystemPassedToConstructor = fileSystem; } public bool IsReferenced(string packageId, Version version) diff --git a/src/AddIns/Misc/PackageManagement/Test/Src/PackageRepositoryCacheTests.cs b/src/AddIns/Misc/PackageManagement/Test/Src/PackageRepositoryCacheTests.cs index f89b90a362..00248c2c48 100644 --- a/src/AddIns/Misc/PackageManagement/Test/Src/PackageRepositoryCacheTests.cs +++ b/src/AddIns/Misc/PackageManagement/Test/Src/PackageRepositoryCacheTests.cs @@ -3,6 +3,7 @@ using System; using ICSharpCode.PackageManagement; +using ICSharpCode.PackageManagement.Design; using NuGet; using NUnit.Framework; using PackageManagement.Tests.Helpers; @@ -68,12 +69,23 @@ namespace PackageManagement.Tests } [Test] - public void CreatedSharedRepository_PathPassed_PathUsedToCreatedSharedRepository() + public void CreatedSharedRepository_PathResolverPassed_PathResolverUsedToCreatedSharedRepository() { CreateCache(); - FakeSharedPackageRepository repository = cache.CreateSharedRepository("abc") as FakeSharedPackageRepository; + FakePackagePathResolver resolver = new FakePackagePathResolver(); + FakeSharedPackageRepository repository = cache.CreateSharedRepository(resolver, null) as FakeSharedPackageRepository; - Assert.AreEqual("abc", repository.PathPassedToConstructor); + Assert.AreEqual(resolver, repository.PackagePathResolverPassedToConstructor); + } + + [Test] + public void CreatedSharedRepository_FileSystemPassed_FileSystemUsedToCreatedSharedRepository() + { + CreateCache(); + FakeFileSystem fileSystem = new FakeFileSystem(); + FakeSharedPackageRepository repository = cache.CreateSharedRepository(null, fileSystem) as FakeSharedPackageRepository; + + Assert.AreEqual(fileSystem, repository.FileSystemPassedToConstructor); } } } diff --git a/src/AddIns/Misc/PackageManagement/Test/Src/SharpDevelopPackageManagerFactoryTests.cs b/src/AddIns/Misc/PackageManagement/Test/Src/SharpDevelopPackageManagerFactoryTests.cs index 3e8f514361..d3e8411ba9 100644 --- a/src/AddIns/Misc/PackageManagement/Test/Src/SharpDevelopPackageManagerFactoryTests.cs +++ b/src/AddIns/Misc/PackageManagement/Test/Src/SharpDevelopPackageManagerFactoryTests.cs @@ -52,9 +52,9 @@ namespace PackageManagement.Tests Assert.IsNotNull(sharedRepository); } - + [Test] - public void CreatePackageManager_PackagesSolutionFolderDefinedInOptions_PackageManagerLocalRepositoryFolderIsPackagesFolderInsideSolutionFolder() + public void CreatePackageManager_PackagesSolutionFolderDefinedInOptions_SharedLocalRepositoryFileSystemRootIsSolutionFolder() { CreateFactory(); CreateTestProject(); @@ -62,14 +62,14 @@ namespace PackageManagement.Tests options.PackagesDirectory = "MyPackages"; CreatePackageManager(); - string expectedDirectory = @"c:\projects\MyProject\MyPackages"; FakeSharedPackageRepository sharedRepository = packageManager.LocalRepository as FakeSharedPackageRepository; - Assert.AreEqual(expectedDirectory, sharedRepository.PathPassedToConstructor); + string expectedRoot = @"c:\projects\MyProject\MyPackages"; + Assert.AreEqual(expectedRoot, sharedRepository.FileSystemPassedToConstructor.Root); } [Test] - public void CreatePackageManager_PackagesSolutionFolderDefinedInOptions_PackageManagerFileSystemRootFolderIsPackagesFolderInsideSolutionFolder() + public void CreatePackageManager_PackagesSolutionFolderDefinedInOptions_SharedLocalRepositoryPackagePathResolverCreatedWithPackagesFolderInsideSolutionFolder() { CreateFactory(); CreateTestProject(); @@ -77,12 +77,28 @@ namespace PackageManagement.Tests options.PackagesDirectory = "MyPackages"; CreatePackageManager(); - string expectedDirectory = @"c:\projects\MyProject\MyPackages"; - string actualDirectory = packageManager.FileSystem.Root; + FakeSharedPackageRepository sharedRepository = packageManager.LocalRepository as FakeSharedPackageRepository; + + FakePackage package = new FakePackage("Test.Package"); + package.Version = new Version(1, 0, 0, 0); + string expectedDirectory = @"c:\projects\MyProject\MyPackages\Test.Package.1.0.0.0"; + string actualDirectory = sharedRepository.PackagePathResolverPassedToConstructor.GetInstallPath(package); Assert.AreEqual(expectedDirectory, actualDirectory); } + [Test] + public void CreatePackageManager_PackagesSolutionFolderDefinedInOptions_LocalRepositoryFileSystemIsPackageManagerFileSystem() + { + CreateFactory(); + CreateTestProject(); + CreatePackageManager(); + + FakeSharedPackageRepository sharedRepository = packageManager.LocalRepository as FakeSharedPackageRepository; + + Assert.AreEqual(packageManager.FileSystem, sharedRepository.FileSystemPassedToConstructor); + } + [Test] public void CreatePackageManager_PackagesSolutionFolderDefinedInOptions_PackageManagerPathResolverUsesPackagesFolderInsideSolutionFolder() { diff --git a/src/AddIns/Misc/PackageManagement/Test/Src/SharpDevelopPackageManagerTests.cs b/src/AddIns/Misc/PackageManagement/Test/Src/SharpDevelopPackageManagerTests.cs index 7acaf6816c..05a2128f42 100644 --- a/src/AddIns/Misc/PackageManagement/Test/Src/SharpDevelopPackageManagerTests.cs +++ b/src/AddIns/Misc/PackageManagement/Test/Src/SharpDevelopPackageManagerTests.cs @@ -24,6 +24,7 @@ namespace PackageManagement.Tests PackageRepositoryPaths repositoryPaths; PackageReferenceRepositoryHelper packageRefRepositoryHelper; TestableProjectManager testableProjectManager; + FakeFileSystem fakeFileSystem; void CreatePackageManager(IProject project, PackageReferenceRepositoryHelper packageRefRepositoryHelper) { @@ -31,14 +32,18 @@ namespace PackageManagement.Tests options.PackagesDirectory = "packages"; repositoryPaths = new PackageRepositoryPaths(project, options); + var pathResolver = new DefaultPackagePathResolver(repositoryPaths.SolutionPackagesPath); + + fakeFileSystem = new FakeFileSystem(); fakeFeedSourceRepository = new FakePackageRepository(); fakeSolutionSharedRepository = packageRefRepositoryHelper.FakeSharedSourceRepository; packageManager = new SharpDevelopPackageManager(fakeFeedSourceRepository, packageRefRepositoryHelper.FakeProjectSystem, + fakeFileSystem, fakeSolutionSharedRepository, - repositoryPaths); + pathResolver); } void CreatePackageManager()