Browse Source

Enable logging for the shared package repository when installing and uninstalling NuGet packages.

pull/15/head
mrward 15 years ago
parent
commit
f68d4162e8
  1. 2
      src/AddIns/Misc/PackageManagement/Project/Src/ISharpDevelopPackageRepositoryFactory.cs
  2. 4
      src/AddIns/Misc/PackageManagement/Project/Src/PackageRepositoryCache.cs
  3. 35
      src/AddIns/Misc/PackageManagement/Project/Src/SharpDevelopPackageManager.cs
  4. 33
      src/AddIns/Misc/PackageManagement/Project/Src/SharpDevelopPackageManagerFactory.cs
  5. 4
      src/AddIns/Misc/PackageManagement/Project/Src/SharpDevelopPackageRepositoryFactory.cs
  6. 4
      src/AddIns/Misc/PackageManagement/Test/Src/Helpers/FakePackageRepositoryFactory.cs
  7. 10
      src/AddIns/Misc/PackageManagement/Test/Src/Helpers/FakeSharedPackageRepository.cs
  8. 18
      src/AddIns/Misc/PackageManagement/Test/Src/PackageRepositoryCacheTests.cs
  9. 28
      src/AddIns/Misc/PackageManagement/Test/Src/SharpDevelopPackageManagerFactoryTests.cs
  10. 7
      src/AddIns/Misc/PackageManagement/Test/Src/SharpDevelopPackageManagerTests.cs

2
src/AddIns/Misc/PackageManagement/Project/Src/ISharpDevelopPackageRepositoryFactory.cs

@ -8,6 +8,6 @@ namespace ICSharpCode.PackageManagement
{ {
public interface ISharpDevelopPackageRepositoryFactory : IPackageRepositoryFactory public interface ISharpDevelopPackageRepositoryFactory : IPackageRepositoryFactory
{ {
ISharedPackageRepository CreateSharedRepository(string path); ISharedPackageRepository CreateSharedRepository(IPackagePathResolver pathResolver, IFileSystem fileSystem);
} }
} }

4
src/AddIns/Misc/PackageManagement/Project/Src/PackageRepositoryCache.cs

@ -48,9 +48,9 @@ namespace ICSharpCode.PackageManagement
return repository; return repository;
} }
public ISharedPackageRepository CreateSharedRepository(string path) public ISharedPackageRepository CreateSharedRepository(IPackagePathResolver pathResolver, IFileSystem fileSystem)
{ {
return factory.CreateSharedRepository(path); return factory.CreateSharedRepository(pathResolver, fileSystem);
} }
} }
} }

35
src/AddIns/Misc/PackageManagement/Project/Src/SharpDevelopPackageManager.cs

@ -13,42 +13,15 @@ namespace ICSharpCode.PackageManagement
IProjectSystem projectSystem; IProjectSystem projectSystem;
public SharpDevelopPackageManager( 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, IPackageRepository sourceRepository,
IProjectSystem projectSystem, IProjectSystem projectSystem,
IFileSystem fileSystem,
ISharedPackageRepository localRepository, ISharedPackageRepository localRepository,
PackageRepositoryPaths repositoryPaths, IPackagePathResolver pathResolver)
string solutionPackagesPath)
: base( : base(
sourceRepository, sourceRepository,
new DefaultPackagePathResolver(solutionPackagesPath), pathResolver,
new PhysicalFileSystem(solutionPackagesPath), fileSystem,
localRepository) localRepository)
{ {
this.projectSystem = projectSystem; this.projectSystem = projectSystem;

33
src/AddIns/Misc/PackageManagement/Project/Src/SharpDevelopPackageManagerFactory.cs

@ -15,14 +15,14 @@ namespace ICSharpCode.PackageManagement
public SharpDevelopPackageManagerFactory() public SharpDevelopPackageManagerFactory()
: this(new SharpDevelopPackageRepositoryFactory(), : this(new SharpDevelopPackageRepositoryFactory(),
new SharpDevelopProjectSystemFactory(), new SharpDevelopProjectSystemFactory(),
new PackageManagementOptions()) new PackageManagementOptions())
{ {
} }
public SharpDevelopPackageManagerFactory(ISharpDevelopPackageRepositoryFactory packageRepositoryFactory, public SharpDevelopPackageManagerFactory(ISharpDevelopPackageRepositoryFactory packageRepositoryFactory,
ISharpDevelopProjectSystemFactory projectSystemFactory, ISharpDevelopProjectSystemFactory projectSystemFactory,
PackageManagementOptions options) PackageManagementOptions options)
{ {
this.packageRepositoryFactory = packageRepositoryFactory; this.packageRepositoryFactory = packageRepositoryFactory;
this.projectSystemFactory = projectSystemFactory; this.projectSystemFactory = projectSystemFactory;
@ -31,10 +31,25 @@ namespace ICSharpCode.PackageManagement
public ISharpDevelopPackageManager CreatePackageManager(IPackageRepository packageRepository, MSBuildBasedProject project) 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); IProjectSystem projectSystem = CreateProjectSystem(project);
ISharedPackageRepository sharedRepository = CreateSharedRepository(repositoryPaths.SolutionPackagesPath); return new SharpDevelopPackageManager(packageRepository, projectSystem, fileSystem, sharedRepository, pathResolver);
return new SharpDevelopPackageManager(packageRepository, projectSystem, sharedRepository, repositoryPaths);
} }
IProjectSystem CreateProjectSystem(MSBuildBasedProject project) IProjectSystem CreateProjectSystem(MSBuildBasedProject project)
@ -42,9 +57,9 @@ namespace ICSharpCode.PackageManagement
return projectSystemFactory.CreateProjectSystem(project); return projectSystemFactory.CreateProjectSystem(project);
} }
ISharedPackageRepository CreateSharedRepository(string path) ISharedPackageRepository CreateSharedRepository(IPackagePathResolver pathResolver, IFileSystem fileSystem)
{ {
return packageRepositoryFactory.CreateSharedRepository(path); return packageRepositoryFactory.CreateSharedRepository(pathResolver, fileSystem);
} }
} }
} }

4
src/AddIns/Misc/PackageManagement/Project/Src/SharpDevelopPackageRepositoryFactory.cs

@ -8,9 +8,9 @@ namespace ICSharpCode.PackageManagement
{ {
public class SharpDevelopPackageRepositoryFactory : PackageRepositoryFactory, ISharpDevelopPackageRepositoryFactory 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);
} }
} }
} }

4
src/AddIns/Misc/PackageManagement/Test/Src/Helpers/FakePackageRepositoryFactory.cs

@ -35,9 +35,9 @@ namespace PackageManagement.Tests.Helpers
return FakePackageRepository; return FakePackageRepository;
} }
public ISharedPackageRepository CreateSharedRepository(string path) public ISharedPackageRepository CreateSharedRepository(IPackagePathResolver pathResolver, IFileSystem fileSystem)
{ {
return new FakeSharedPackageRepository(path); return new FakeSharedPackageRepository(pathResolver, fileSystem);
} }
} }
} }

10
src/AddIns/Misc/PackageManagement/Test/Src/Helpers/FakeSharedPackageRepository.cs

@ -10,16 +10,18 @@ namespace PackageManagement.Tests.Helpers
{ {
public class FakeSharedPackageRepository : FakePackageRepository, ISharedPackageRepository public class FakeSharedPackageRepository : FakePackageRepository, ISharedPackageRepository
{ {
public string PathPassedToConstructor;
public string PathPassedToRegisterRepository; 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) public bool IsReferenced(string packageId, Version version)

18
src/AddIns/Misc/PackageManagement/Test/Src/PackageRepositoryCacheTests.cs

@ -3,6 +3,7 @@
using System; using System;
using ICSharpCode.PackageManagement; using ICSharpCode.PackageManagement;
using ICSharpCode.PackageManagement.Design;
using NuGet; using NuGet;
using NUnit.Framework; using NUnit.Framework;
using PackageManagement.Tests.Helpers; using PackageManagement.Tests.Helpers;
@ -68,12 +69,23 @@ namespace PackageManagement.Tests
} }
[Test] [Test]
public void CreatedSharedRepository_PathPassed_PathUsedToCreatedSharedRepository() public void CreatedSharedRepository_PathResolverPassed_PathResolverUsedToCreatedSharedRepository()
{ {
CreateCache(); 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);
} }
} }
} }

28
src/AddIns/Misc/PackageManagement/Test/Src/SharpDevelopPackageManagerFactoryTests.cs

@ -54,7 +54,7 @@ namespace PackageManagement.Tests
} }
[Test] [Test]
public void CreatePackageManager_PackagesSolutionFolderDefinedInOptions_PackageManagerLocalRepositoryFolderIsPackagesFolderInsideSolutionFolder() public void CreatePackageManager_PackagesSolutionFolderDefinedInOptions_SharedLocalRepositoryFileSystemRootIsSolutionFolder()
{ {
CreateFactory(); CreateFactory();
CreateTestProject(); CreateTestProject();
@ -62,14 +62,14 @@ namespace PackageManagement.Tests
options.PackagesDirectory = "MyPackages"; options.PackagesDirectory = "MyPackages";
CreatePackageManager(); CreatePackageManager();
string expectedDirectory = @"c:\projects\MyProject\MyPackages";
FakeSharedPackageRepository sharedRepository = packageManager.LocalRepository as FakeSharedPackageRepository; FakeSharedPackageRepository sharedRepository = packageManager.LocalRepository as FakeSharedPackageRepository;
Assert.AreEqual(expectedDirectory, sharedRepository.PathPassedToConstructor); string expectedRoot = @"c:\projects\MyProject\MyPackages";
Assert.AreEqual(expectedRoot, sharedRepository.FileSystemPassedToConstructor.Root);
} }
[Test] [Test]
public void CreatePackageManager_PackagesSolutionFolderDefinedInOptions_PackageManagerFileSystemRootFolderIsPackagesFolderInsideSolutionFolder() public void CreatePackageManager_PackagesSolutionFolderDefinedInOptions_SharedLocalRepositoryPackagePathResolverCreatedWithPackagesFolderInsideSolutionFolder()
{ {
CreateFactory(); CreateFactory();
CreateTestProject(); CreateTestProject();
@ -77,12 +77,28 @@ namespace PackageManagement.Tests
options.PackagesDirectory = "MyPackages"; options.PackagesDirectory = "MyPackages";
CreatePackageManager(); CreatePackageManager();
string expectedDirectory = @"c:\projects\MyProject\MyPackages"; FakeSharedPackageRepository sharedRepository = packageManager.LocalRepository as FakeSharedPackageRepository;
string actualDirectory = packageManager.FileSystem.Root;
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); 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] [Test]
public void CreatePackageManager_PackagesSolutionFolderDefinedInOptions_PackageManagerPathResolverUsesPackagesFolderInsideSolutionFolder() public void CreatePackageManager_PackagesSolutionFolderDefinedInOptions_PackageManagerPathResolverUsesPackagesFolderInsideSolutionFolder()
{ {

7
src/AddIns/Misc/PackageManagement/Test/Src/SharpDevelopPackageManagerTests.cs

@ -24,6 +24,7 @@ namespace PackageManagement.Tests
PackageRepositoryPaths repositoryPaths; PackageRepositoryPaths repositoryPaths;
PackageReferenceRepositoryHelper packageRefRepositoryHelper; PackageReferenceRepositoryHelper packageRefRepositoryHelper;
TestableProjectManager testableProjectManager; TestableProjectManager testableProjectManager;
FakeFileSystem fakeFileSystem;
void CreatePackageManager(IProject project, PackageReferenceRepositoryHelper packageRefRepositoryHelper) void CreatePackageManager(IProject project, PackageReferenceRepositoryHelper packageRefRepositoryHelper)
{ {
@ -31,14 +32,18 @@ namespace PackageManagement.Tests
options.PackagesDirectory = "packages"; options.PackagesDirectory = "packages";
repositoryPaths = new PackageRepositoryPaths(project, options); repositoryPaths = new PackageRepositoryPaths(project, options);
var pathResolver = new DefaultPackagePathResolver(repositoryPaths.SolutionPackagesPath);
fakeFileSystem = new FakeFileSystem();
fakeFeedSourceRepository = new FakePackageRepository(); fakeFeedSourceRepository = new FakePackageRepository();
fakeSolutionSharedRepository = packageRefRepositoryHelper.FakeSharedSourceRepository; fakeSolutionSharedRepository = packageRefRepositoryHelper.FakeSharedSourceRepository;
packageManager = new SharpDevelopPackageManager(fakeFeedSourceRepository, packageManager = new SharpDevelopPackageManager(fakeFeedSourceRepository,
packageRefRepositoryHelper.FakeProjectSystem, packageRefRepositoryHelper.FakeProjectSystem,
fakeFileSystem,
fakeSolutionSharedRepository, fakeSolutionSharedRepository,
repositoryPaths); pathResolver);
} }
void CreatePackageManager() void CreatePackageManager()

Loading…
Cancel
Save