Browse Source

Move install/uninstall/update package actions to project.

pull/15/head
Matt Ward 15 years ago
parent
commit
e7fb02720a
  1. 7
      src/AddIns/Misc/PackageManagement/Cmdlets/Project/Src/InstallPackageCmdlet.cs
  2. 9
      src/AddIns/Misc/PackageManagement/Cmdlets/Project/Src/UninstallPackageCmdlet.cs
  3. 7
      src/AddIns/Misc/PackageManagement/Cmdlets/Project/Src/UpdatePackageCmdlet.cs
  4. 33
      src/AddIns/Misc/PackageManagement/Cmdlets/Test/Src/InstallPackageCmdletTests.cs
  5. 32
      src/AddIns/Misc/PackageManagement/Cmdlets/Test/Src/UninstallPackageCmdletTests.cs
  6. 32
      src/AddIns/Misc/PackageManagement/Cmdlets/Test/Src/UpdatePackageCmdletTests.cs
  7. 2
      src/AddIns/Misc/PackageManagement/Project/Src/Design/FakeInstallPackageTask.cs
  8. 21
      src/AddIns/Misc/PackageManagement/Project/Src/Design/FakePackageManagementProject.cs
  9. 24
      src/AddIns/Misc/PackageManagement/Project/Src/Design/FakePackageManagementSolution.cs
  10. 2
      src/AddIns/Misc/PackageManagement/Project/Src/Design/FakeUninstallPackageAction.cs
  11. 2
      src/AddIns/Misc/PackageManagement/Project/Src/Design/FakeUpdatePackageAction.cs
  12. 4
      src/AddIns/Misc/PackageManagement/Project/Src/IPackageManagementProject.cs
  13. 4
      src/AddIns/Misc/PackageManagement/Project/Src/IPackageManagementSolution.cs
  14. 7
      src/AddIns/Misc/PackageManagement/Project/Src/InstallPackageAction.cs
  15. 19
      src/AddIns/Misc/PackageManagement/Project/Src/PackageManagementProject.cs
  16. 12
      src/AddIns/Misc/PackageManagement/Project/Src/PackageManagementProjectFactory.cs
  17. 17
      src/AddIns/Misc/PackageManagement/Project/Src/PackageManagementSolution.cs
  18. 14
      src/AddIns/Misc/PackageManagement/Project/Src/PackageViewModel.cs
  19. 8
      src/AddIns/Misc/PackageManagement/Project/Src/ProcessPackageAction.cs
  20. 10
      src/AddIns/Misc/PackageManagement/Project/Src/UninstallPackageAction.cs
  21. 8
      src/AddIns/Misc/PackageManagement/Project/Src/UpdatePackageAction.cs
  22. 3
      src/AddIns/Misc/PackageManagement/Project/Src/UpdatedPackageViewModel.cs
  23. 1
      src/AddIns/Misc/PackageManagement/Test/PackageManagement.Tests.csproj
  24. 25
      src/AddIns/Misc/PackageManagement/Test/Src/Helpers/ExceptionThrowingPackageManagementProject.cs
  25. 12
      src/AddIns/Misc/PackageManagement/Test/Src/Helpers/ExceptionThrowingPackageManagementService.cs
  26. 8
      src/AddIns/Misc/PackageManagement/Test/Src/PackageManagementProjectTests.cs
  27. 62
      src/AddIns/Misc/PackageManagement/Test/Src/PackageViewModelTests.cs
  28. 13
      src/AddIns/Misc/PackageManagement/Test/Src/UpdatedPackageViewModelTests.cs

7
src/AddIns/Misc/PackageManagement/Cmdlets/Project/Src/InstallPackageCmdlet.cs

@ -58,12 +58,13 @@ namespace ICSharpCode.PackageManagement.Cmdlets @@ -58,12 +58,13 @@ namespace ICSharpCode.PackageManagement.Cmdlets
action.Execute();
}
InstallPackageAction CreateInstallPackageTask(PackageSource packageSource, MSBuildBasedProject project)
InstallPackageAction CreateInstallPackageTask(PackageSource packageSource, MSBuildBasedProject msbuildProject)
{
InstallPackageAction action = Solution.CreateInstallPackageAction();
IPackageManagementProject project = Solution.CreateProject(packageSource, msbuildProject);
InstallPackageAction action = project.CreateInstallPackageAction();
action.PackageId = Id;
action.PackageVersion = Version;
action.MSBuildProject = project;
action.MSBuildProject = msbuildProject;
action.PackageSource = packageSource;
action.IgnoreDependencies = IgnoreDependencies.IsPresent;
return action;

9
src/AddIns/Misc/PackageManagement/Cmdlets/Project/Src/UninstallPackageCmdlet.cs

@ -54,7 +54,7 @@ namespace ICSharpCode.PackageManagement.Cmdlets @@ -54,7 +54,7 @@ namespace ICSharpCode.PackageManagement.Cmdlets
MSBuildBasedProject project = GetActiveProject(ProjectName);
PackageSource packageSource = GetActivePackageSource();
UninstallPackageAction action = CreateUninstallPackageAction(project, packageSource);
UninstallPackageAction action = CreateUninstallPackageAction(packageSource, project);
action.Execute();
}
@ -63,12 +63,13 @@ namespace ICSharpCode.PackageManagement.Cmdlets @@ -63,12 +63,13 @@ namespace ICSharpCode.PackageManagement.Cmdlets
return GetActivePackageSource(null);
}
UninstallPackageAction CreateUninstallPackageAction(MSBuildBasedProject project, PackageSource packageSource)
UninstallPackageAction CreateUninstallPackageAction(PackageSource packageSource, MSBuildBasedProject msbuildProject)
{
var action = Solution.CreateUninstallPackageAction();
IPackageManagementProject project = Solution.CreateProject(packageSource, msbuildProject);
UninstallPackageAction action = project.CreateUninstallPackageAction();
action.PackageId = Id;
action.PackageVersion = Version;
action.MSBuildProject = project;
action.MSBuildProject = msbuildProject;
action.PackageSource = packageSource;
action.ForceRemove = Force.IsPresent;
action.RemoveDependencies = RemoveDependencies.IsPresent;

7
src/AddIns/Misc/PackageManagement/Cmdlets/Project/Src/UpdatePackageCmdlet.cs

@ -58,11 +58,12 @@ namespace ICSharpCode.PackageManagement.Cmdlets @@ -58,11 +58,12 @@ namespace ICSharpCode.PackageManagement.Cmdlets
action.Execute();
}
UpdatePackageAction CreateUpdatePackageAction(PackageSource packageSource, MSBuildBasedProject project)
UpdatePackageAction CreateUpdatePackageAction(PackageSource packageSource, MSBuildBasedProject msbuildProject)
{
var action = Solution.CreateUpdatePackageAction();
IPackageManagementProject project = Solution.CreateProject(packageSource, msbuildProject);
UpdatePackageAction action = project.CreateUpdatePackageAction();
action.PackageSource = packageSource;
action.MSBuildProject = project;
action.MSBuildProject = msbuildProject;
action.PackageId = Id;
action.PackageVersion = Version;
action.UpdateDependencies = !IgnoreDependencies.IsPresent;

33
src/AddIns/Misc/PackageManagement/Cmdlets/Test/Src/InstallPackageCmdletTests.cs

@ -19,6 +19,7 @@ namespace PackageManagement.Cmdlets.Tests @@ -19,6 +19,7 @@ namespace PackageManagement.Cmdlets.Tests
TestableInstallPackageCmdlet cmdlet;
FakeCmdletTerminatingError fakeTerminatingError;
FakePackageManagementSolution fakeSolution;
FakePackageManagementProject fakeProject;
FakeInstallPackageAction fakeInstallPackageTask;
void CreateCmdletWithoutActiveProject()
@ -27,7 +28,8 @@ namespace PackageManagement.Cmdlets.Tests @@ -27,7 +28,8 @@ namespace PackageManagement.Cmdlets.Tests
fakeTerminatingError = cmdlet.FakeCmdletTerminatingError;
fakeConsoleHost = cmdlet.FakePackageManagementConsoleHost;
fakeSolution = cmdlet.FakeSolution;
fakeInstallPackageTask = fakeSolution.ActionToReturnFromCreateInstallPackageAction;
fakeProject = fakeSolution.FakeProject;
fakeInstallPackageTask = fakeProject.FakeInstallPackageAction;
}
void CreateCmdletWithActivePackageSourceAndProject()
@ -130,6 +132,20 @@ namespace PackageManagement.Cmdlets.Tests @@ -130,6 +132,20 @@ namespace PackageManagement.Cmdlets.Tests
Assert.AreEqual(project, actualProject);
}
[Test]
public void ProcessRecord_PackageIdSpecified_ActiveProjectUsedToCreateProject()
{
CreateCmdletWithoutActiveProject();
AddPackageSourceToConsoleHost();
var project = AddDefaultProjectToConsoleHost();
SetIdParameter("Test");
RunCmdlet();
var actualProject = fakeSolution.ProjectPassedToCreateProject;
Assert.AreEqual(project, actualProject);
}
[Test]
public void ProcessRecord_IgnoreDependenciesParameterSet_IgnoreDependenciesIsTrueWhenInstallingPackage()
{
@ -172,6 +188,21 @@ namespace PackageManagement.Cmdlets.Tests @@ -172,6 +188,21 @@ namespace PackageManagement.Cmdlets.Tests
Assert.AreEqual(expected, actual);
}
[Test]
public void ProcessRecord_SourceParameterSet_CustomSourceUsedWhenCreatingProject()
{
CreateCmdletWithActivePackageSourceAndProject();
SetIdParameter("Test");
SetSourceParameter("http://sharpdevelop.net/packages");
RunCmdlet();
var expected = "http://sharpdevelop.net/packages";
var actual = fakeSolution.PackageSourcePassedToCreateProject.Source;
Assert.AreEqual(expected, actual);
}
[Test]
public void ProcessRecord_PackageVersionParameterSet_VersionUsedWhenInstallingPackage()
{

32
src/AddIns/Misc/PackageManagement/Cmdlets/Test/Src/UninstallPackageCmdletTests.cs

@ -16,6 +16,7 @@ namespace PackageManagement.Cmdlets.Tests @@ -16,6 +16,7 @@ namespace PackageManagement.Cmdlets.Tests
TestableUninstallPackageCmdlet cmdlet;
FakeCmdletTerminatingError fakeTerminatingError;
FakePackageManagementSolution fakeSolution;
FakePackageManagementProject fakeProject;
FakeUninstallPackageAction uninstallPackageAction;
void CreateCmdletWithoutActiveProject()
@ -24,7 +25,8 @@ namespace PackageManagement.Cmdlets.Tests @@ -24,7 +25,8 @@ namespace PackageManagement.Cmdlets.Tests
fakeTerminatingError = cmdlet.FakeCmdletTerminatingError;
fakeConsoleHost = cmdlet.FakePackageManagementConsoleHost;
fakeSolution = cmdlet.FakeSolution;
uninstallPackageAction = fakeSolution.ActionToReturnFromCreateUninstallPackageAction;
fakeProject = fakeSolution.FakeProject;
uninstallPackageAction = fakeProject.FakeUninstallPackageAction;
}
void CreateCmdletWithActivePackageSourceAndProject()
@ -113,6 +115,20 @@ namespace PackageManagement.Cmdlets.Tests @@ -113,6 +115,20 @@ namespace PackageManagement.Cmdlets.Tests
Assert.AreEqual(project, actualProject);
}
[Test]
public void ProcessRecord_PackageIdSpecified_ActiveProjectUsedToCreateProject()
{
CreateCmdletWithoutActiveProject();
AddPackageSourceToConsoleHost();
var project = AddDefaultProjectToConsoleHost();
SetIdParameter("Test");
RunCmdlet();
var actualProject = fakeSolution.ProjectPassedToCreateProject;
Assert.AreEqual(project, actualProject);
}
[Test]
public void ProcessRecord_ForceParameterSet_PackageForcefullyUninstalled()
{
@ -240,6 +256,20 @@ namespace PackageManagement.Cmdlets.Tests @@ -240,6 +256,20 @@ namespace PackageManagement.Cmdlets.Tests
Assert.AreEqual(packageSource, actualPackageSource);
}
[Test]
public void ProcessRecord_PackageIdSpecified_ActivePackageSourceUsedToCreateProject()
{
CreateCmdletWithoutActiveProject();
AddDefaultProjectToConsoleHost();
var packageSource = AddPackageSourceToConsoleHost();
SetIdParameter("Test");
RunCmdlet();
var actualPackageSource = fakeSolution.PackageSourcePassedToCreateProject;
Assert.AreEqual(packageSource, actualPackageSource);
}
[Test]
public void ProcessRecord_PackageIdSpecified_PackageIsUninstalled()
{

32
src/AddIns/Misc/PackageManagement/Cmdlets/Test/Src/UpdatePackageCmdletTests.cs

@ -16,6 +16,7 @@ namespace PackageManagement.Cmdlets.Tests @@ -16,6 +16,7 @@ namespace PackageManagement.Cmdlets.Tests
TestableUpdatePackageCmdlet cmdlet;
FakeCmdletTerminatingError fakeTerminatingError;
FakePackageManagementSolution fakeSolution;
FakePackageManagementProject fakeProject;
FakeUpdatePackageAction fakeUpdatePackageAction;
void CreateCmdletWithoutActiveProject()
@ -24,7 +25,8 @@ namespace PackageManagement.Cmdlets.Tests @@ -24,7 +25,8 @@ namespace PackageManagement.Cmdlets.Tests
fakeTerminatingError = cmdlet.FakeCmdletTerminatingError;
fakeConsoleHost = cmdlet.FakePackageManagementConsoleHost;
fakeSolution = cmdlet.FakeSolution;
fakeUpdatePackageAction = fakeSolution.ActionToReturnFromCreateUpdatePackageAction;
fakeProject = fakeSolution.FakeProject;
fakeUpdatePackageAction = fakeProject.FakeUpdatePackageAction;
}
void CreateCmdletWithActivePackageSourceAndProject()
@ -113,6 +115,20 @@ namespace PackageManagement.Cmdlets.Tests @@ -113,6 +115,20 @@ namespace PackageManagement.Cmdlets.Tests
Assert.AreEqual(packageSource, actualPackageSource);
}
[Test]
public void ProcessRecord_PackageIdSpecified_ActivePackageSourceUsedToCreateProject()
{
CreateCmdletWithoutActiveProject();
AddDefaultProjectToConsoleHost();
var packageSource = AddPackageSourceToConsoleHost();
SetIdParameter("Test");
RunCmdlet();
var actualPackageSource = fakeSolution.PackageSourcePassedToCreateProject;
Assert.AreEqual(packageSource, actualPackageSource);
}
[Test]
public void ProcessRecord_PackageIdSpecified_ActiveProjectUsedToUpdatePackage()
{
@ -127,6 +143,20 @@ namespace PackageManagement.Cmdlets.Tests @@ -127,6 +143,20 @@ namespace PackageManagement.Cmdlets.Tests
Assert.AreEqual(project, actualProject);
}
[Test]
public void ProcessRecord_PackageIdSpecified_ActiveProjectUsedToCreateProject()
{
CreateCmdletWithoutActiveProject();
AddPackageSourceToConsoleHost();
var project = AddDefaultProjectToConsoleHost();
SetIdParameter("Test");
RunCmdlet();
var actualProject = fakeSolution.ProjectPassedToCreateProject;
Assert.AreEqual(project, actualProject);
}
[Test]
public void ProcessRecord_IgnoreDependenciesParameterSet_UpdateDependenciesIsFalseWhenUpdatingPackage()
{

2
src/AddIns/Misc/PackageManagement/Project/Src/Design/FakeInstallPackageTask.cs

@ -8,7 +8,7 @@ namespace ICSharpCode.PackageManagement.Design @@ -8,7 +8,7 @@ namespace ICSharpCode.PackageManagement.Design
public class FakeInstallPackageAction : InstallPackageAction
{
public FakeInstallPackageAction()
: base(null, null)
: base((IPackageManagementProject)null, null)
{
}

21
src/AddIns/Misc/PackageManagement/Project/Src/Design/FakePackageManagementProject.cs

@ -86,5 +86,26 @@ namespace ICSharpCode.PackageManagement.Design @@ -86,5 +86,26 @@ namespace ICSharpCode.PackageManagement.Design
PackageOperationsPassedToUpdatePackage = operations;
UpdateDependenciesPassedToUpdatePackage = updateDependencies;
}
public FakeInstallPackageAction FakeInstallPackageAction = new FakeInstallPackageAction();
public virtual InstallPackageAction CreateInstallPackageAction()
{
return FakeInstallPackageAction;
}
public FakeUninstallPackageAction FakeUninstallPackageAction = new FakeUninstallPackageAction();
public virtual UninstallPackageAction CreateUninstallPackageAction()
{
return FakeUninstallPackageAction;
}
public FakeUpdatePackageAction FakeUpdatePackageAction = new FakeUpdatePackageAction();
public UpdatePackageAction CreateUpdatePackageAction()
{
return FakeUpdatePackageAction;
}
}
}

24
src/AddIns/Misc/PackageManagement/Project/Src/Design/FakePackageManagementSolution.cs

@ -12,22 +12,6 @@ namespace ICSharpCode.PackageManagement.Design @@ -12,22 +12,6 @@ namespace ICSharpCode.PackageManagement.Design
{
public class FakePackageManagementSolution : IPackageManagementSolution
{
public FakeInstallPackageAction ActionToReturnFromCreateInstallPackageAction =
new FakeInstallPackageAction();
public virtual InstallPackageAction CreateInstallPackageAction()
{
return ActionToReturnFromCreateInstallPackageAction;
}
public FakeUninstallPackageAction ActionToReturnFromCreateUninstallPackageAction =
new FakeUninstallPackageAction();
public virtual UninstallPackageAction CreateUninstallPackageAction()
{
return ActionToReturnFromCreateUninstallPackageAction;
}
public void AddPackageToActiveProjectLocalRepository(FakePackage package)
{
FakeProject.FakePackages.Add(package);
@ -40,14 +24,6 @@ namespace ICSharpCode.PackageManagement.Design @@ -40,14 +24,6 @@ namespace ICSharpCode.PackageManagement.Design
return package;
}
public FakeUpdatePackageAction ActionToReturnFromCreateUpdatePackageAction =
new FakeUpdatePackageAction();
public UpdatePackageAction CreateUpdatePackageAction()
{
return ActionToReturnFromCreateUpdatePackageAction;
}
public int GetActiveProjectCallCount;
public FakePackageManagementProject FakeProject = new FakePackageManagementProject();

2
src/AddIns/Misc/PackageManagement/Project/Src/Design/FakeUninstallPackageAction.cs

@ -10,7 +10,7 @@ namespace ICSharpCode.PackageManagement.Design @@ -10,7 +10,7 @@ namespace ICSharpCode.PackageManagement.Design
public bool IsExecuted;
public FakeUninstallPackageAction()
: base(null, null)
: base((IPackageManagementProject)null, null)
{
}

2
src/AddIns/Misc/PackageManagement/Project/Src/Design/FakeUpdatePackageAction.cs

@ -10,7 +10,7 @@ namespace ICSharpCode.PackageManagement.Design @@ -10,7 +10,7 @@ namespace ICSharpCode.PackageManagement.Design
public bool IsExecuted;
public FakeUpdatePackageAction()
: base(null, null)
: base((IPackageManagementProject)null, null)
{
}

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

@ -23,5 +23,9 @@ namespace ICSharpCode.PackageManagement @@ -23,5 +23,9 @@ namespace ICSharpCode.PackageManagement
void InstallPackage(IPackage package, IEnumerable<PackageOperation> operations, bool ignoreDependencies);
void UpdatePackage(IPackage package, IEnumerable<PackageOperation> operations, bool updateDependencies);
void UninstallPackage(IPackage package, bool forceRemove, bool removeDependencies);
InstallPackageAction CreateInstallPackageAction();
UninstallPackageAction CreateUninstallPackageAction();
UpdatePackageAction CreateUpdatePackageAction();
}
}

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

@ -14,9 +14,5 @@ namespace ICSharpCode.PackageManagement @@ -14,9 +14,5 @@ namespace ICSharpCode.PackageManagement
IPackageManagementProject CreateProject(PackageSource source, MSBuildBasedProject project);
IPackageManagementProject CreateProject(IPackageRepository sourceRepository, MSBuildBasedProject project);
IPackageManagementProject GetActiveProject(IPackageRepository sourceRepository);
InstallPackageAction CreateInstallPackageAction();
UninstallPackageAction CreateUninstallPackageAction();
UpdatePackageAction CreateUpdatePackageAction();
}
}

7
src/AddIns/Misc/PackageManagement/Project/Src/InstallPackageAction.cs

@ -17,6 +17,13 @@ namespace ICSharpCode.PackageManagement @@ -17,6 +17,13 @@ namespace ICSharpCode.PackageManagement
{
}
public InstallPackageAction(
IPackageManagementProject project,
IPackageManagementEvents packageManagementEvents)
: base(project, packageManagementEvents)
{
}
public IEnumerable<PackageOperation> Operations { get; set; }
public bool IgnoreDependencies { get; set; }

19
src/AddIns/Misc/PackageManagement/Project/Src/PackageManagementProject.cs

@ -14,13 +14,17 @@ namespace ICSharpCode.PackageManagement @@ -14,13 +14,17 @@ namespace ICSharpCode.PackageManagement
{
ISharpDevelopPackageManager packageManager;
ISharpDevelopProjectManager projectManager;
IPackageManagementEvents packageManagementEvents;
public PackageManagementProject(
IPackageRepository sourceRepository,
MSBuildBasedProject project,
IPackageManagementEvents packageManagementEvents,
IPackageManagerFactory packageManagerFactory)
{
SourceRepository = sourceRepository;
this.packageManagementEvents = packageManagementEvents;
packageManager = packageManagerFactory.CreatePackageManager(sourceRepository, project);
projectManager = packageManager.ProjectManager;
}
@ -67,5 +71,20 @@ namespace ICSharpCode.PackageManagement @@ -67,5 +71,20 @@ namespace ICSharpCode.PackageManagement
{
packageManager.UpdatePackage(package, operations, updateDependencies);
}
public InstallPackageAction CreateInstallPackageAction()
{
return new InstallPackageAction(this, packageManagementEvents);
}
public UninstallPackageAction CreateUninstallPackageAction()
{
return new UninstallPackageAction(this, packageManagementEvents);
}
public UpdatePackageAction CreateUpdatePackageAction()
{
return new UpdatePackageAction(this, packageManagementEvents);
}
}
}

12
src/AddIns/Misc/PackageManagement/Project/Src/PackageManagementProjectFactory.cs

@ -10,10 +10,18 @@ namespace ICSharpCode.PackageManagement @@ -10,10 +10,18 @@ namespace ICSharpCode.PackageManagement
public class PackageManagementProjectFactory : IPackageManagementProjectFactory
{
SharpDevelopPackageManagerFactory factory = new SharpDevelopPackageManagerFactory();
IPackageManagementEvents packageManagementEvents;
public IPackageManagementProject CreateProject(IPackageRepository sourceRepository, MSBuildBasedProject project)
public PackageManagementProjectFactory(IPackageManagementEvents packageManagementEvents)
{
return new PackageManagementProject(sourceRepository, project, factory);
this.packageManagementEvents = packageManagementEvents;
}
public IPackageManagementProject CreateProject(
IPackageRepository sourceRepository,
MSBuildBasedProject project)
{
return new PackageManagementProject(sourceRepository, project, packageManagementEvents, factory);
}
}
}

17
src/AddIns/Misc/PackageManagement/Project/Src/PackageManagementSolution.cs

@ -24,7 +24,7 @@ namespace ICSharpCode.PackageManagement @@ -24,7 +24,7 @@ namespace ICSharpCode.PackageManagement
registeredPackageRepositories,
packageManagementEvents,
new PackageManagementProjectService(),
new PackageManagementProjectFactory())
new PackageManagementProjectFactory(packageManagementEvents))
{
}
@ -40,21 +40,6 @@ namespace ICSharpCode.PackageManagement @@ -40,21 +40,6 @@ namespace ICSharpCode.PackageManagement
this.projectService = projectService;
}
public InstallPackageAction CreateInstallPackageAction()
{
return new InstallPackageAction(this, packageManagementEvents);
}
public UpdatePackageAction CreateUpdatePackageAction()
{
return new UpdatePackageAction(this, packageManagementEvents);
}
public UninstallPackageAction CreateUninstallPackageAction()
{
return new UninstallPackageAction(this, packageManagementEvents);
}
public IPackageManagementProject GetActiveProject()
{
return GetActiveProject(ActivePackageRepository);

14
src/AddIns/Misc/PackageManagement/Project/Src/PackageViewModel.cs

@ -233,11 +233,12 @@ namespace ICSharpCode.PackageManagement @@ -233,11 +233,12 @@ namespace ICSharpCode.PackageManagement
IPackageFromRepository package,
IEnumerable<PackageOperation> packageOperations)
{
InstallPackageAction task = solution.CreateInstallPackageAction();
task.SourceRepository = package.Repository;
task.Package = package;
task.Operations = packageOperations;
task.Execute();
IPackageManagementProject project = solution.GetActiveProject(package.Repository);
InstallPackageAction action = project.CreateInstallPackageAction();
action.SourceRepository = package.Repository;
action.Package = package;
action.Operations = packageOperations;
action.Execute();
}
void ReportError(Exception ex)
@ -263,7 +264,8 @@ namespace ICSharpCode.PackageManagement @@ -263,7 +264,8 @@ namespace ICSharpCode.PackageManagement
void TryUninstallingPackage()
{
try {
var action = solution.CreateUninstallPackageAction();
IPackageManagementProject project = solution.GetActiveProject(null);
UninstallPackageAction action = project.CreateUninstallPackageAction();
action.SourceRepository = package.Repository;
action.Package = package;
action.Execute();

8
src/AddIns/Misc/PackageManagement/Project/Src/ProcessPackageAction.cs

@ -20,6 +20,14 @@ namespace ICSharpCode.PackageManagement @@ -20,6 +20,14 @@ namespace ICSharpCode.PackageManagement
this.packageManagementEvents = packageManagementEvents;
}
public ProcessPackageAction(
IPackageManagementProject project,
IPackageManagementEvents packageManagementEvents)
{
this.Project = project;
this.packageManagementEvents = packageManagementEvents;
}
public IPackageManagementProject Project { get; set; }
public ILogger Logger { get; set; }
public IPackage Package { get; set; }

10
src/AddIns/Misc/PackageManagement/Project/Src/UninstallPackageAction.cs

@ -9,14 +9,18 @@ namespace ICSharpCode.PackageManagement @@ -9,14 +9,18 @@ namespace ICSharpCode.PackageManagement
{
public class UninstallPackageAction : ProcessPackageAction
{
IPackageManagementSolution solution;
public UninstallPackageAction(
IPackageManagementSolution solution,
IPackageManagementEvents packageManagementEvents)
: base(solution, packageManagementEvents)
{
this.solution = solution;
}
public UninstallPackageAction(
IPackageManagementProject project,
IPackageManagementEvents packageManagementEvents)
: base(project, packageManagementEvents)
{
}
public bool ForceRemove { get; set; }

8
src/AddIns/Misc/PackageManagement/Project/Src/UpdatePackageAction.cs

@ -18,6 +18,14 @@ namespace ICSharpCode.PackageManagement @@ -18,6 +18,14 @@ namespace ICSharpCode.PackageManagement
UpdateDependencies = true;
}
public UpdatePackageAction(
IPackageManagementProject project,
IPackageManagementEvents packageManagementEvents)
: base(project, packageManagementEvents)
{
UpdateDependencies = true;
}
public IEnumerable<PackageOperation> Operations { get; set; }
public bool UpdateDependencies { get; set; }

3
src/AddIns/Misc/PackageManagement/Project/Src/UpdatedPackageViewModel.cs

@ -25,7 +25,8 @@ namespace ICSharpCode.PackageManagement @@ -25,7 +25,8 @@ namespace ICSharpCode.PackageManagement
IPackageFromRepository package,
IEnumerable<PackageOperation> packageOperations)
{
var action = solution.CreateUpdatePackageAction();
IPackageManagementProject project = solution.GetActiveProject(package.Repository);
UpdatePackageAction action = project.CreateUpdatePackageAction();
action.SourceRepository = package.Repository;
action.Package = package;
action.Operations = packageOperations;

1
src/AddIns/Misc/PackageManagement/Test/PackageManagement.Tests.csproj

@ -70,6 +70,7 @@ @@ -70,6 +70,7 @@
<Link>Properties\GlobalAssemblyInfo.cs</Link>
</Compile>
<Compile Include="Src\AddPackageReferenceCommandTests.cs" />
<Compile Include="Src\Helpers\ExceptionThrowingPackageManagementProject.cs" />
<Compile Include="Src\Helpers\ExceptionThrowingRegisteredPackageRepositories.cs" />
<Compile Include="Src\Helpers\FakeAddPackageReferenceView.cs" />
<Compile Include="Src\Helpers\FakeLogger.cs" />

25
src/AddIns/Misc/PackageManagement/Test/Src/Helpers/ExceptionThrowingPackageManagementProject.cs

@ -0,0 +1,25 @@ @@ -0,0 +1,25 @@
// Copyright (c) AlphaSierraPapa for the SharpDevelop Team (for details please see \doc\copyright.txt)
// This code is distributed under the GNU LGPL (for details please see \doc\license.txt)
using System;
using ICSharpCode.PackageManagement;
using ICSharpCode.PackageManagement.Design;
namespace PackageManagement.Tests.Helpers
{
public class ExceptionThrowingPackageManagementProject : FakePackageManagementProject
{
public Exception ExceptionToThrowWhenCreateInstallPackageTaskCalled { get; set; }
public Exception ExceptionToThrowWhenCreateUninstallPackageActionCalled { get; set; }
public override InstallPackageAction CreateInstallPackageAction()
{
throw ExceptionToThrowWhenCreateInstallPackageTaskCalled;
}
public override UninstallPackageAction CreateUninstallPackageAction()
{
throw ExceptionToThrowWhenCreateUninstallPackageActionCalled;
}
}
}

12
src/AddIns/Misc/PackageManagement/Test/Src/Helpers/ExceptionThrowingPackageManagementService.cs

@ -12,18 +12,6 @@ namespace PackageManagement.Tests.Helpers @@ -12,18 +12,6 @@ namespace PackageManagement.Tests.Helpers
public class ExceptionThrowingPackageManagementSolution : FakePackageManagementSolution
{
public Exception ExceptionToThrowWhenGetActiveProjectCalled { get; set; }
public Exception ExceptionToThrowWhenCreateInstallPackageTaskCalled { get; set; }
public Exception ExceptionToThrowWhenCreateUninstallPackageActionCalled { get; set; }
public override InstallPackageAction CreateInstallPackageAction()
{
throw ExceptionToThrowWhenCreateInstallPackageTaskCalled;
}
public override UninstallPackageAction CreateUninstallPackageAction()
{
throw ExceptionToThrowWhenCreateUninstallPackageActionCalled;
}
public override IPackageManagementProject GetActiveProject()
{

8
src/AddIns/Misc/PackageManagement/Test/Src/PackageManagementProjectTests.cs

@ -20,6 +20,7 @@ namespace PackageManagement.Tests @@ -20,6 +20,7 @@ namespace PackageManagement.Tests
PackageManagementProject project;
FakeProjectManager fakeProjectManager;
FakePackageManager fakePackageManager;
FakePackageManagementEvents fakePackageManagementEvents;
void CreateProject()
{
@ -28,8 +29,13 @@ namespace PackageManagement.Tests @@ -28,8 +29,13 @@ namespace PackageManagement.Tests
fakeProjectManager = fakePackageManager.FakeProjectManager;
fakeSourceRepository = new FakePackageRepository();
fakeMSBuildProject = ProjectHelper.CreateTestProject();
fakePackageManagementEvents = new FakePackageManagementEvents();
project = new PackageManagementProject(fakeSourceRepository, fakeMSBuildProject, fakePackageManagerFactory);
project = new PackageManagementProject(
fakeSourceRepository,
fakeMSBuildProject,
fakePackageManagementEvents,
fakePackageManagerFactory);
}
[Test]

62
src/AddIns/Misc/PackageManagement/Test/Src/PackageViewModelTests.cs

@ -15,17 +15,18 @@ namespace PackageManagement.Tests @@ -15,17 +15,18 @@ namespace PackageManagement.Tests
{
TestablePackageViewModel viewModel;
FakePackage package;
FakePackageManagementSolution solution;
FakePackageManagementSolution fakeSolution;
FakePackageManagementEvents packageManagementEvents;
ExceptionThrowingPackageManagementSolution exceptionThrowingSolution;
ExceptionThrowingPackageManagementProject exceptionThrowingProject;
FakeInstallPackageAction fakeInstallPackageTask;
FakeUninstallPackageAction fakeUninstallPackageAction;
FakeLogger fakeLogger;
void CreateViewModel()
{
solution = new FakePackageManagementSolution();
CreateViewModel(solution);
fakeSolution = new FakePackageManagementSolution();
CreateViewModel(fakeSolution);
}
void CreateViewModelWithExceptionThrowingSolution()
@ -34,15 +35,22 @@ namespace PackageManagement.Tests @@ -34,15 +35,22 @@ namespace PackageManagement.Tests
CreateViewModel(exceptionThrowingSolution);
}
void CreateViewModelWithExceptionThrowingProject()
{
CreateViewModel();
exceptionThrowingProject = new ExceptionThrowingPackageManagementProject();
viewModel.FakeSolution.FakeProject = exceptionThrowingProject;
}
void CreateViewModel(FakePackageManagementSolution solution)
{
viewModel = new TestablePackageViewModel(solution);
package = viewModel.FakePackage;
this.solution = solution;
this.fakeSolution = solution;
packageManagementEvents = viewModel.FakePackageManagementEvents;
fakeLogger = viewModel.FakeLogger;
fakeInstallPackageTask = solution.ActionToReturnFromCreateInstallPackageAction;
fakeUninstallPackageAction = solution.ActionToReturnFromCreateUninstallPackageAction;
fakeInstallPackageTask = solution.FakeProject.FakeInstallPackageAction;
fakeUninstallPackageAction = solution.FakeProject.FakeUninstallPackageAction;
}
[Test]
@ -67,6 +75,17 @@ namespace PackageManagement.Tests @@ -67,6 +75,17 @@ namespace PackageManagement.Tests
Assert.AreEqual(package.Repository, fakeInstallPackageTask.SourceRepository);
}
[Test]
public void AddPackage_PackageAddedSuccessfully_SourcePackageRepositoryUsedToCreateProject()
{
CreateViewModel();
viewModel.AddOneFakeInstallPackageOperationForViewModelPackage();
viewModel.AddPackage();
Assert.AreEqual(package.Repository, fakeSolution.RepositoryPassedToCreateProject);
}
[Test]
public void AddPackage_PackageAddedSuccessfully_PackageIsInstalled()
{
@ -176,7 +195,7 @@ namespace PackageManagement.Tests @@ -176,7 +195,7 @@ namespace PackageManagement.Tests
public void IsAdded_ProjectHasPackageAdded_ReturnsTrue()
{
CreateViewModel();
solution.FakeProject.IsInstalledReturnValue = true;
fakeSolution.FakeProject.IsInstalledReturnValue = true;
Assert.IsTrue(viewModel.IsAdded);
}
@ -185,7 +204,7 @@ namespace PackageManagement.Tests @@ -185,7 +204,7 @@ namespace PackageManagement.Tests
public void IsAdded_ProjectDoesNotHavePackageInstalled_ReturnsFalse()
{
CreateViewModel();
solution.FakeProject.IsInstalledReturnValue = false;
fakeSolution.FakeProject.IsInstalledReturnValue = false;
Assert.IsFalse(viewModel.IsAdded);
}
@ -197,7 +216,7 @@ namespace PackageManagement.Tests @@ -197,7 +216,7 @@ namespace PackageManagement.Tests
bool result = viewModel.IsAdded;
result = viewModel.IsAdded;
int count = solution.GetActiveProjectCallCount;
int count = fakeSolution.GetActiveProjectCallCount;
Assert.AreEqual(1, count);
}
@ -376,7 +395,7 @@ namespace PackageManagement.Tests @@ -376,7 +395,7 @@ namespace PackageManagement.Tests
viewModel.AddPackage();
ILogger expectedLogger = viewModel.OperationLoggerCreated;
ILogger actualLogger = solution.FakeProject.Logger;
ILogger actualLogger = fakeSolution.FakeProject.Logger;
Assert.AreEqual(expectedLogger, actualLogger);
}
@ -464,10 +483,10 @@ namespace PackageManagement.Tests @@ -464,10 +483,10 @@ namespace PackageManagement.Tests
[Test]
public void AddPackage_ExceptionWhenInstallingPackage_ExceptionErrorMessageReported()
{
CreateViewModelWithExceptionThrowingSolution();
CreateViewModelWithExceptionThrowingProject();
viewModel.AddOneFakeInstallPackageOperationForViewModelPackage();
Exception ex = new Exception("Test");
exceptionThrowingSolution.ExceptionToThrowWhenCreateInstallPackageTaskCalled = ex;
exceptionThrowingProject.ExceptionToThrowWhenCreateInstallPackageTaskCalled = ex;
viewModel.AddPackage();
Assert.AreEqual(ex, packageManagementEvents.ExceptionPassedToOnPackageOperationError);
@ -486,10 +505,10 @@ namespace PackageManagement.Tests @@ -486,10 +505,10 @@ namespace PackageManagement.Tests
[Test]
public void AddPackage_ExceptionWhenInstallingPackage_ExceptionLogged()
{
CreateViewModelWithExceptionThrowingSolution();
CreateViewModelWithExceptionThrowingProject();
viewModel.AddOneFakeInstallPackageOperationForViewModelPackage();
Exception ex = new Exception("Exception error message");
exceptionThrowingSolution.ExceptionToThrowWhenCreateInstallPackageTaskCalled = ex;
exceptionThrowingProject.ExceptionToThrowWhenCreateInstallPackageTaskCalled = ex;
viewModel.AddPackage();
string actualMessage = fakeLogger.SecondFormattedMessageLogged;
@ -501,9 +520,9 @@ namespace PackageManagement.Tests @@ -501,9 +520,9 @@ namespace PackageManagement.Tests
[Test]
public void RemovePackage_ExceptionWhenUninstallingPackage_ExceptionErrorMessageReported()
{
CreateViewModelWithExceptionThrowingSolution();
CreateViewModelWithExceptionThrowingProject();
Exception ex = new Exception("Test");
exceptionThrowingSolution.ExceptionToThrowWhenCreateUninstallPackageActionCalled = ex;
exceptionThrowingProject.ExceptionToThrowWhenCreateUninstallPackageActionCalled = ex;
viewModel.RemovePackage();
Assert.AreEqual(ex, packageManagementEvents.ExceptionPassedToOnPackageOperationError);
@ -521,9 +540,9 @@ namespace PackageManagement.Tests @@ -521,9 +540,9 @@ namespace PackageManagement.Tests
[Test]
public void RemovePackage_ExceptionWhenUninstallingPackage_ExceptionLogged()
{
CreateViewModelWithExceptionThrowingSolution();
CreateViewModelWithExceptionThrowingProject();
Exception ex = new Exception("Exception error message");
exceptionThrowingSolution.ExceptionToThrowWhenCreateUninstallPackageActionCalled = ex;
exceptionThrowingProject.ExceptionToThrowWhenCreateUninstallPackageActionCalled = ex;
viewModel.RemovePackage();
string actualMessage = fakeLogger.SecondFormattedMessageLogged;
@ -539,8 +558,7 @@ namespace PackageManagement.Tests @@ -539,8 +558,7 @@ namespace PackageManagement.Tests
viewModel.AddOneFakeInstallPackageOperationForViewModelPackage();
var exception = new Exception("Test");;
exceptionThrowingSolution.ExceptionToThrowWhenGetActiveProjectCalled =
exception;
exceptionThrowingSolution.ExceptionToThrowWhenGetActiveProjectCalled = exception;
viewModel.AddPackage();
Assert.AreEqual(exception, packageManagementEvents.ExceptionPassedToOnPackageOperationError);
@ -554,7 +572,7 @@ namespace PackageManagement.Tests @@ -554,7 +572,7 @@ namespace PackageManagement.Tests
viewModel.AddPackage();
var expectedPackage = package;
var actualPackage = solution
var actualPackage = fakeSolution
.FakeProject
.PackagePassedToGetInstallPackageOperations;
@ -568,7 +586,7 @@ namespace PackageManagement.Tests @@ -568,7 +586,7 @@ namespace PackageManagement.Tests
viewModel.AddOneFakeInstallPackageOperationForViewModelPackage();
viewModel.AddPackage();
bool result = solution
bool result = fakeSolution
.FakeProject
.IgnoreDependenciesPassedToGetInstallPackageOperations;

13
src/AddIns/Misc/PackageManagement/Test/Src/UpdatedPackageViewModelTests.cs

@ -13,13 +13,15 @@ namespace PackageManagement.Tests @@ -13,13 +13,15 @@ namespace PackageManagement.Tests
{
TestableUpdatedPackageViewModel viewModel;
FakePackageManagementSolution fakeSolution;
FakePackageManagementProject fakeProject;
FakeUpdatePackageAction updatePackageAction;
void CreateViewModel()
{
viewModel = new TestableUpdatedPackageViewModel();
fakeSolution = viewModel.FakeSolution;
updatePackageAction = fakeSolution.ActionToReturnFromCreateUpdatePackageAction;
fakeProject = fakeSolution.FakeProject;
updatePackageAction = fakeProject.FakeUpdatePackageAction;
}
[Test]
@ -30,6 +32,15 @@ namespace PackageManagement.Tests @@ -30,6 +32,15 @@ namespace PackageManagement.Tests
Assert.AreEqual(viewModel.FakePackage.Repository, updatePackageAction.SourceRepository);
}
[Test]
public void AddPackage_PackageAddedSuccessfully_ProjectCreatedUsingSourcePackageRepository()
{
CreateViewModel();
viewModel.AddPackage();
Assert.AreEqual(viewModel.FakePackage.Repository, fakeSolution.RepositoryPassedToCreateProject);
}
[Test]
public void AddPackage_PackageAddedSuccessfully_PackageUpdated()

Loading…
Cancel
Save