Browse Source

Remove cmdlet dependency on the active solution.

pull/15/head
Matt Ward 15 years ago
parent
commit
84a08041c1
  1. 14
      src/AddIns/Misc/PackageManagement/Cmdlets/Project/Src/GetPackageCmdlet.cs
  2. 4
      src/AddIns/Misc/PackageManagement/Cmdlets/Project/Src/InstallPackageCmdlet.cs
  3. 7
      src/AddIns/Misc/PackageManagement/Cmdlets/Project/Src/PackageManagementCmdlet.cs
  4. 7
      src/AddIns/Misc/PackageManagement/Cmdlets/Project/Src/UninstallPackageCmdlet.cs
  5. 4
      src/AddIns/Misc/PackageManagement/Cmdlets/Project/Src/UpdatePackageCmdlet.cs
  6. 6
      src/AddIns/Misc/PackageManagement/Cmdlets/Test/Helpers/TestableGetPackageCmdlet.cs
  7. 6
      src/AddIns/Misc/PackageManagement/Cmdlets/Test/Helpers/TestableInstallPackageCmdlet.cs
  8. 1
      src/AddIns/Misc/PackageManagement/Cmdlets/Test/Helpers/TestablePackageManagementCmdlet.cs
  9. 6
      src/AddIns/Misc/PackageManagement/Cmdlets/Test/Helpers/TestableUninstallPackageCmdlet.cs
  10. 6
      src/AddIns/Misc/PackageManagement/Cmdlets/Test/Helpers/TestableUpdatePackageCmdlet.cs
  11. 70
      src/AddIns/Misc/PackageManagement/Cmdlets/Test/Src/GetPackageCmdletTests.cs
  12. 11
      src/AddIns/Misc/PackageManagement/Project/Src/Design/FakePackageManagementSolution.cs
  13. 1
      src/AddIns/Misc/PackageManagement/Project/Src/IPackageManagementSolution.cs
  14. 7
      src/AddIns/Misc/PackageManagement/Project/Src/PackageManagementSolution.cs
  15. 1
      src/AddIns/Misc/PackageManagement/Project/Src/Scripting/IPackageManagementConsoleHost.cs
  16. 6
      src/AddIns/Misc/PackageManagement/Project/Src/Scripting/PackageManagementConsoleHost.cs
  17. 22
      src/AddIns/Misc/PackageManagement/Project/Src/UpdatedPackages.cs
  18. 3
      src/AddIns/Misc/PackageManagement/Project/Src/UpdatedPackagesViewModel.cs
  19. 8
      src/AddIns/Misc/PackageManagement/Test/Src/Helpers/ExceptionThrowingPackageManagementService.cs
  20. 9
      src/AddIns/Misc/PackageManagement/Test/Src/Helpers/FakePackageManagementConsoleHost.cs
  21. 28
      src/AddIns/Misc/PackageManagement/Test/Src/PackageManagementSolutionTests.cs
  22. 57
      src/AddIns/Misc/PackageManagement/Test/Src/Scripting/PackageManagementConsoleHostTests.cs

14
src/AddIns/Misc/PackageManagement/Cmdlets/Project/Src/GetPackageCmdlet.cs

@ -23,7 +23,6 @@ namespace ICSharpCode.PackageManagement.Cmdlets @@ -23,7 +23,6 @@ namespace ICSharpCode.PackageManagement.Cmdlets
public GetPackageCmdlet()
: this(
PackageManagementServices.RegisteredPackageRepositories,
PackageManagementServices.Solution,
PackageManagementServices.ConsoleHost,
null)
{
@ -31,10 +30,9 @@ namespace ICSharpCode.PackageManagement.Cmdlets @@ -31,10 +30,9 @@ namespace ICSharpCode.PackageManagement.Cmdlets
public GetPackageCmdlet(
IRegisteredPackageRepositories registeredPackageRepositories,
IPackageManagementSolution solution,
IPackageManagementConsoleHost consoleHost,
ICmdletTerminatingError terminatingError)
: base(solution, consoleHost, terminatingError)
: base(consoleHost, terminatingError)
{
this.registeredPackageRepositories = registeredPackageRepositories;
}
@ -75,6 +73,10 @@ namespace ICSharpCode.PackageManagement.Cmdlets @@ -75,6 +73,10 @@ namespace ICSharpCode.PackageManagement.Cmdlets
{
ValidateParameters();
if (DefaultProject == null) {
return;
}
IQueryable<IPackage> packages = GetPackages();
packages = OrderPackages(packages);
packages = SelectPackageRange(packages);
@ -154,7 +156,8 @@ namespace ICSharpCode.PackageManagement.Cmdlets @@ -154,7 +156,8 @@ namespace ICSharpCode.PackageManagement.Cmdlets
IQueryable<IPackage> GetUpdatedPackages()
{
IPackageRepository aggregateRepository = registeredPackageRepositories.CreateAggregateRepository();
var updatedPackages = new UpdatedPackages(Solution, aggregateRepository, DefaultProject);
IPackageManagementProject project = ConsoleHost.GetProject(aggregateRepository, DefaultProject.Name);
var updatedPackages = new UpdatedPackages(project, aggregateRepository);
updatedPackages.SearchTerms = Filter;
return updatedPackages.GetUpdatedPackages().AsQueryable();
}
@ -167,8 +170,7 @@ namespace ICSharpCode.PackageManagement.Cmdlets @@ -167,8 +170,7 @@ namespace ICSharpCode.PackageManagement.Cmdlets
IQueryable<IPackage> GetInstalledPackages()
{
IPackageRepository repository = CreatePackageRepositoryForActivePackageSource();
IPackageManagementProject project = Solution.CreateProject(repository, DefaultProject);
IPackageManagementProject project = ConsoleHost.GetProject(Source, DefaultProject.Name);
IQueryable<IPackage> packages = project.GetPackages();
return FilterPackages(packages);
}

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

@ -14,17 +14,15 @@ namespace ICSharpCode.PackageManagement.Cmdlets @@ -14,17 +14,15 @@ namespace ICSharpCode.PackageManagement.Cmdlets
{
public InstallPackageCmdlet()
: this(
PackageManagementServices.Solution,
PackageManagementServices.ConsoleHost,
null)
{
}
public InstallPackageCmdlet(
IPackageManagementSolution solution,
IPackageManagementConsoleHost consoleHost,
ICmdletTerminatingError terminatingError)
: base(solution, consoleHost, terminatingError)
: base(consoleHost, terminatingError)
{
}

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

@ -11,24 +11,17 @@ namespace ICSharpCode.PackageManagement.Cmdlets @@ -11,24 +11,17 @@ namespace ICSharpCode.PackageManagement.Cmdlets
{
public abstract class PackageManagementCmdlet : PSCmdlet, ITerminatingCmdlet
{
IPackageManagementSolution solution;
IPackageManagementConsoleHost consoleHost;
ICmdletTerminatingError terminatingError;
public PackageManagementCmdlet(
IPackageManagementSolution solution,
IPackageManagementConsoleHost consoleHost,
ICmdletTerminatingError terminatingError)
{
this.solution = solution;
this.consoleHost = consoleHost;
this.terminatingError = terminatingError;
}
protected IPackageManagementSolution Solution {
get { return solution; }
}
protected IPackageManagementConsoleHost ConsoleHost {
get { return consoleHost; }
}

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

@ -14,17 +14,15 @@ namespace ICSharpCode.PackageManagement.Cmdlets @@ -14,17 +14,15 @@ namespace ICSharpCode.PackageManagement.Cmdlets
{
public UninstallPackageCmdlet()
: this(
PackageManagementServices.Solution,
PackageManagementServices.ConsoleHost,
null)
{
}
public UninstallPackageCmdlet(
IPackageManagementSolution solution,
IPackageManagementConsoleHost consoleHost,
ICmdletTerminatingError terminatingError)
: base(solution, consoleHost, terminatingError)
: base(consoleHost, terminatingError)
{
}
@ -57,7 +55,8 @@ namespace ICSharpCode.PackageManagement.Cmdlets @@ -57,7 +55,8 @@ namespace ICSharpCode.PackageManagement.Cmdlets
UninstallPackageAction CreateUninstallPackageAction()
{
IPackageManagementProject project = ConsoleHost.GetProject(null, ProjectName);
string source = null;
IPackageManagementProject project = ConsoleHost.GetProject(source, ProjectName);
UninstallPackageAction action = project.CreateUninstallPackageAction();
action.PackageId = Id;
action.PackageVersion = Version;

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

@ -14,17 +14,15 @@ namespace ICSharpCode.PackageManagement.Cmdlets @@ -14,17 +14,15 @@ namespace ICSharpCode.PackageManagement.Cmdlets
{
public UpdatePackageCmdlet()
: this(
PackageManagementServices.Solution,
PackageManagementServices.ConsoleHost,
null)
{
}
public UpdatePackageCmdlet(
IPackageManagementSolution solution,
IPackageManagementConsoleHost consoleHost,
ICmdletTerminatingError terminatingError)
: base(solution, consoleHost, terminatingError)
: base(consoleHost, terminatingError)
{
}

6
src/AddIns/Misc/PackageManagement/Cmdlets/Test/Helpers/TestableGetPackageCmdlet.cs

@ -12,7 +12,6 @@ namespace PackageManagement.Cmdlets.Tests.Helpers @@ -12,7 +12,6 @@ namespace PackageManagement.Cmdlets.Tests.Helpers
{
public class TestableGetPackageCmdlet : GetPackageCmdlet
{
public FakePackageManagementSolution FakeSolution;
public FakeRegisteredPackageRepositories FakeRegisteredPackageRepositories;
public FakeCommandRuntime FakeCommandRuntime;
public List<IPackage> PackagesPassedToWriteObject = new List<IPackage>();
@ -21,7 +20,6 @@ namespace PackageManagement.Cmdlets.Tests.Helpers @@ -21,7 +20,6 @@ namespace PackageManagement.Cmdlets.Tests.Helpers
public TestableGetPackageCmdlet()
: this(
new FakePackageManagementSolution(),
new FakeRegisteredPackageRepositories(),
new FakePackageManagementConsoleHost(),
new FakeCommandRuntime(),
@ -30,14 +28,12 @@ namespace PackageManagement.Cmdlets.Tests.Helpers @@ -30,14 +28,12 @@ namespace PackageManagement.Cmdlets.Tests.Helpers
}
public TestableGetPackageCmdlet(
FakePackageManagementSolution solution,
FakeRegisteredPackageRepositories registeredPackageRepositories,
FakePackageManagementConsoleHost consoleHost,
FakeCommandRuntime commandRuntime,
FakeCmdletTerminatingError terminatingError)
: base(registeredPackageRepositories, solution, consoleHost, terminatingError)
: base(registeredPackageRepositories, consoleHost, terminatingError)
{
this.FakeSolution = solution;
this.FakeRegisteredPackageRepositories = registeredPackageRepositories;
this.FakePackageManagementConsoleHost = consoleHost;
this.FakeCommandRuntime = commandRuntime;

6
src/AddIns/Misc/PackageManagement/Cmdlets/Test/Helpers/TestableInstallPackageCmdlet.cs

@ -12,23 +12,19 @@ namespace PackageManagement.Cmdlets.Tests.Helpers @@ -12,23 +12,19 @@ namespace PackageManagement.Cmdlets.Tests.Helpers
{
public FakeCmdletTerminatingError FakeCmdletTerminatingError;
public FakePackageManagementConsoleHost FakePackageManagementConsoleHost;
public FakePackageManagementSolution FakeSolution;
public TestableInstallPackageCmdlet()
: this(
new FakePackageManagementSolution(),
new FakePackageManagementConsoleHost(),
new FakeCmdletTerminatingError())
{
}
public TestableInstallPackageCmdlet(
FakePackageManagementSolution solution,
FakePackageManagementConsoleHost consoleHost,
FakeCmdletTerminatingError cmdletTerminatingError)
: base(solution, consoleHost, cmdletTerminatingError)
: base(consoleHost, cmdletTerminatingError)
{
this.FakeSolution = solution;
this.FakePackageManagementConsoleHost = consoleHost;
this.FakeCmdletTerminatingError = cmdletTerminatingError;
}

1
src/AddIns/Misc/PackageManagement/Cmdlets/Test/Helpers/TestablePackageManagementCmdlet.cs

@ -12,7 +12,6 @@ namespace PackageManagement.Cmdlets.Tests.Helpers @@ -12,7 +12,6 @@ namespace PackageManagement.Cmdlets.Tests.Helpers
{
public TestablePackageManagementCmdlet(FakeCmdletTerminatingError terminatingError)
: base(
new FakePackageManagementSolution(),
new FakePackageManagementConsoleHost(),
terminatingError)
{

6
src/AddIns/Misc/PackageManagement/Cmdlets/Test/Helpers/TestableUninstallPackageCmdlet.cs

@ -12,23 +12,19 @@ namespace PackageManagement.Cmdlets.Tests.Helpers @@ -12,23 +12,19 @@ namespace PackageManagement.Cmdlets.Tests.Helpers
{
public FakeCmdletTerminatingError FakeCmdletTerminatingError;
public FakePackageManagementConsoleHost FakePackageManagementConsoleHost;
public FakePackageManagementSolution FakeSolution;
public TestableUninstallPackageCmdlet()
: this(
new FakePackageManagementSolution(),
new FakePackageManagementConsoleHost(),
new FakeCmdletTerminatingError())
{
}
public TestableUninstallPackageCmdlet(
FakePackageManagementSolution solution,
FakePackageManagementConsoleHost consoleHost,
FakeCmdletTerminatingError cmdletTerminatingError)
: base(solution, consoleHost, cmdletTerminatingError)
: base(consoleHost, cmdletTerminatingError)
{
this.FakeSolution = solution;
this.FakePackageManagementConsoleHost = consoleHost;
this.FakeCmdletTerminatingError = cmdletTerminatingError;
}

6
src/AddIns/Misc/PackageManagement/Cmdlets/Test/Helpers/TestableUpdatePackageCmdlet.cs

@ -12,23 +12,19 @@ namespace PackageManagement.Cmdlets.Tests.Helpers @@ -12,23 +12,19 @@ namespace PackageManagement.Cmdlets.Tests.Helpers
{
public FakeCmdletTerminatingError FakeCmdletTerminatingError;
public FakePackageManagementConsoleHost FakePackageManagementConsoleHost;
public FakePackageManagementSolution FakeSolution;
public TestableUpdatePackageCmdlet()
: this(
new FakePackageManagementSolution(),
new FakePackageManagementConsoleHost(),
new FakeCmdletTerminatingError())
{
}
public TestableUpdatePackageCmdlet(
FakePackageManagementSolution solution,
FakePackageManagementConsoleHost consoleHost,
FakeCmdletTerminatingError cmdletTerminatingError)
: base(solution, consoleHost, cmdletTerminatingError)
: base(consoleHost, cmdletTerminatingError)
{
this.FakeSolution = solution;
this.FakePackageManagementConsoleHost = consoleHost;
this.FakeCmdletTerminatingError = cmdletTerminatingError;
}

70
src/AddIns/Misc/PackageManagement/Cmdlets/Test/Src/GetPackageCmdletTests.cs

@ -23,11 +23,14 @@ namespace PackageManagement.Cmdlets.Tests @@ -23,11 +23,14 @@ namespace PackageManagement.Cmdlets.Tests
void CreateCmdlet()
{
cmdlet = new TestableGetPackageCmdlet();
fakeSolution = cmdlet.FakeSolution;
fakeSolution = new FakePackageManagementSolution();
fakeRegisteredPackageRepositories = cmdlet.FakeRegisteredPackageRepositories;
fakeConsoleHost = cmdlet.FakePackageManagementConsoleHost;
fakeConsoleHost.FakeProject = fakeSolution.FakeProject;
fakeCommandRuntime = cmdlet.FakeCommandRuntime;
fakeTerminatingError = cmdlet.FakeCmdletTerminatingError;
AddDefaultProjectToConsoleHost();
}
void RunCmdlet()
@ -165,65 +168,47 @@ namespace PackageManagement.Cmdlets.Tests @@ -165,65 +168,47 @@ namespace PackageManagement.Cmdlets.Tests
public void ProcessRecord_NoParametersPassed_ReturnsPackagesInstalledForProjectSelectedInConsole()
{
CreateCmdlet();
AddDefaultProjectToConsoleHost();
fakeSolution.AddPackageToActiveProjectLocalRepository("One");
fakeSolution.AddPackageToActiveProjectLocalRepository("Two");
RunCmdlet();
var actualPackages = fakeCommandRuntime.ObjectsPassedToWriteObject;
var expectedPackages = fakeSolution.FakeProject.FakePackages;
var expectedPackages = fakeConsoleHost.FakeProject.FakePackages;
Assert.AreEqual(expectedPackages, actualPackages);
}
[Test]
public void ProcessRecord_NoParametersPassed_SelectedActivePackageSourceInConsoleHostUsedToCreateRepository()
{
CreateCmdlet();
var source = AddPackageSourceToConsoleHost();
fakeConsoleHost.PackageSourceToReturnFromGetActivePackageSource = source;
RunCmdlet();
var actualSource = fakeRegisteredPackageRepositories.PackageSourcePassedToCreateRepository;
Assert.AreEqual(source, actualSource);
}
[Test]
public void ProcessRecord_NoParametersPassed_SelectedActiveRepositoryInConsoleHostUsedToCreateProjectManager()
public void ProcessRecord_NoParametersPassed_NullPackageSourceUsedWhenCreatingProject()
{
CreateCmdlet();
AddPackageSourceToConsoleHost();
RunCmdlet();
var actualRepository = fakeSolution.RepositoryPassedToCreateProject;
var expectedRepository = fakeRegisteredPackageRepositories.FakePackageRepository;
var actualSource = fakeConsoleHost.PackageSourcePassedToGetProject;
Assert.AreEqual(expectedRepository, actualRepository);
Assert.IsNull(actualSource);
}
[Test]
public void ProcessRecord_NoParametersPassed_DefaultProjectInConsoleHostUsedToCreateProjectManager()
public void ProcessRecord_NoParametersPassed_DefaultProjectInConsoleHostUsedToCreateProject()
{
CreateCmdlet();
AddPackageSourceToConsoleHost();
var project = AddDefaultProjectToConsoleHost();
project.Name = "MyProject";
RunCmdlet();
var actualProject = fakeSolution.ProjectPassedToCreateProject;
var actualProjectName = fakeConsoleHost.ProjectNamePassedToGetProject;
Assert.AreEqual(project, actualProject);
Assert.AreEqual("MyProject", actualProjectName);
}
[Test]
public void ProcessRecord_UpdatedPackagesRequested_ReturnsUpdatedPackagesForActiveProject()
{
CreateCmdlet();
AddDefaultProjectToConsoleHost();
AddPackageToProjectManagerLocalRepository("1.0.0.0");
var updatedPackage = AddPackageToAggregateRepository("1.1.0.0");
@ -239,27 +224,27 @@ namespace PackageManagement.Cmdlets.Tests @@ -239,27 +224,27 @@ namespace PackageManagement.Cmdlets.Tests
}
[Test]
public void ProcessRecord_UpdatedPackagesRequested_ActiveProjectUsedWhenCreatingProject()
public void ProcessRecord_UpdatedPackagesRequested_ActiveProjectNameUsedWhenCreatingProject()
{
CreateCmdlet();
var project = AddDefaultProjectToConsoleHost();
project.Name = "Test";
EnableUpdatesParameter();
RunCmdlet();
var actualProject = fakeSolution.ProjectPassedToCreateProject;
var actualProjectName = fakeConsoleHost.ProjectNamePassedToGetProject;
Assert.AreEqual(project, actualProject);
Assert.AreEqual("Test", actualProjectName);
}
[Test]
public void ProcessRecord_UpdatedPackagesRequested_AggregateRepositoryUsedWhenCreatingProjectManager()
public void ProcessRecord_UpdatedPackagesRequested_AggregateRepositoryUsedWhenCreatingProject()
{
CreateCmdlet();
AddDefaultProjectToConsoleHost();
EnableUpdatesParameter();
RunCmdlet();
var actualRepository = fakeSolution.RepositoryPassedToCreateProject;
var actualRepository = fakeConsoleHost.PackageRepositoryPassedToGetProject;
var expectedRepository = fakeRegisteredPackageRepositories.FakeAggregateRepository;
Assert.AreEqual(expectedRepository, actualRepository);
@ -310,7 +295,6 @@ namespace PackageManagement.Cmdlets.Tests @@ -310,7 +295,6 @@ namespace PackageManagement.Cmdlets.Tests
public void ProcessRecord_UpdatedPackagesRequestedWithFilter_ReturnsFilteredUpdatedPackages()
{
CreateCmdlet();
AddDefaultProjectToConsoleHost();
AddPackageToProjectManagerLocalRepository("A", "1.0.0.0");
AddPackageToAggregateRepository("A", "1.1.0.0");
AddPackageToProjectManagerLocalRepository("B", "2.0.0.0");
@ -346,31 +330,32 @@ namespace PackageManagement.Cmdlets.Tests @@ -346,31 +330,32 @@ namespace PackageManagement.Cmdlets.Tests
}
[Test]
public void ProcessRecord_JustSourceParameterPassed_PackageRepositoryCreatedForPackageSourceSpecifiedByParameter()
public void ProcessRecord_JustSourceParameterPassed_ProjectCreatedForPackageSourceSpecifiedByParameter()
{
CreateCmdlet();
SetSourceParameter("http://test");
RunCmdlet();
var actualPackageSource = fakeConsoleHost.PackageSourcePassedToGetActivePackageSource;
var actualPackageSource = fakeConsoleHost.PackageSourcePassedToGetProject;
var expectedPackageSource = "http://test";
Assert.AreEqual(expectedPackageSource, actualPackageSource);
}
[Test]
public void ProcessRecord_JustSourceParameterPassed_PackageRepositoryCreatedForPackageSource()
public void ProcessRecord_JustSourceParameterPassed_ProjectCreatedForPackageSource()
{
CreateCmdlet();
fakeConsoleHost.DefaultProject.Name = "MyProject";
SetSourceParameter("http://test");
RunCmdlet();
var actualPackageSource = fakeRegisteredPackageRepositories.PackageSourcePassedToCreateRepository;
var expectedPackageSource = fakeConsoleHost.PackageSourceToReturnFromGetActivePackageSource;
var actualProjectName = fakeConsoleHost.ProjectNamePassedToGetProject;
Assert.AreEqual(expectedPackageSource, actualPackageSource);
Assert.AreEqual("MyProject", actualProjectName);
}
[Test]
@ -436,6 +421,7 @@ namespace PackageManagement.Cmdlets.Tests @@ -436,6 +421,7 @@ namespace PackageManagement.Cmdlets.Tests
public void ProcessRecord_RetrieveUpdatesWhenNoProjectIsOpen_ThrowsTerminatingError()
{
CreateCmdlet();
fakeConsoleHost.DefaultProject = null;
EnableUpdatesParameter();
RunCmdlet();
@ -447,7 +433,6 @@ namespace PackageManagement.Cmdlets.Tests @@ -447,7 +433,6 @@ namespace PackageManagement.Cmdlets.Tests
public void ProcessRecord_RetrieveUpdatesWhenProjectIsActive_DoesNotThrowTerminatingError()
{
CreateCmdlet();
AddDefaultProjectToConsoleHost();
EnableUpdatesParameter();
RunCmdlet();
@ -459,6 +444,7 @@ namespace PackageManagement.Cmdlets.Tests @@ -459,6 +444,7 @@ namespace PackageManagement.Cmdlets.Tests
public void ProcessRecord_NoParametersSetAndNoProjectIsOpen_ThrowsNoProjectOpenTerminatingError()
{
CreateCmdlet();
fakeConsoleHost.DefaultProject = null;
RunCmdlet();
Assert.IsTrue(fakeTerminatingError.IsThrowNoProjectOpenErrorCalled);
@ -468,6 +454,7 @@ namespace PackageManagement.Cmdlets.Tests @@ -468,6 +454,7 @@ namespace PackageManagement.Cmdlets.Tests
public void ProcessRecord_ListAvailablePackagesAndProjectIsNotOpen_NoTerminatingErrorIsThrown()
{
CreateCmdlet();
fakeConsoleHost.DefaultProject = null;
EnableListAvailableParameter();
RunCmdlet();
@ -478,6 +465,7 @@ namespace PackageManagement.Cmdlets.Tests @@ -478,6 +465,7 @@ namespace PackageManagement.Cmdlets.Tests
public void ProcessRecord_RecentPackagesRequestedAndProjectIsNotOpen_NoTerminatingErrorIsThrown()
{
CreateCmdlet();
fakeConsoleHost.DefaultProject = null;
EnableRecentParameter();
RunCmdlet();

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

@ -44,7 +44,7 @@ namespace ICSharpCode.PackageManagement.Design @@ -44,7 +44,7 @@ namespace ICSharpCode.PackageManagement.Design
return FakeProject;
}
public IPackageManagementProject GetActiveProject(IPackageRepository sourceRepository)
public virtual IPackageManagementProject GetActiveProject(IPackageRepository sourceRepository)
{
RepositoryPassedToCreateProject = sourceRepository;
return FakeProject;
@ -68,5 +68,14 @@ namespace ICSharpCode.PackageManagement.Design @@ -68,5 +68,14 @@ namespace ICSharpCode.PackageManagement.Design
ProjectNamePassedToGetProject = projectName;
return FakeProject;
}
public IPackageRepository RepositoryPassedToGetProject;
public IPackageManagementProject GetProject(IPackageRepository sourceRepository, string projectName)
{
RepositoryPassedToGetProject = sourceRepository;
ProjectNamePassedToGetProject = projectName;
return FakeProject;
}
}
}

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

@ -15,5 +15,6 @@ namespace ICSharpCode.PackageManagement @@ -15,5 +15,6 @@ namespace ICSharpCode.PackageManagement
IPackageManagementProject CreateProject(IPackageRepository sourceRepository, MSBuildBasedProject project);
IPackageManagementProject GetActiveProject(IPackageRepository sourceRepository);
IPackageManagementProject GetProject(PackageSource source, string projectName);
IPackageManagementProject GetProject(IPackageRepository sourceRepository, string projectName);
}
}

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

@ -96,5 +96,12 @@ namespace ICSharpCode.PackageManagement @@ -96,5 +96,12 @@ namespace ICSharpCode.PackageManagement
{
return String.Equals(a, b, StringComparison.InvariantCultureIgnoreCase);
}
public IPackageManagementProject GetProject(IPackageRepository sourceRepository, string projectName)
{
MSBuildBasedProject msbuildProject = GetMSBuildProject(projectName);
CreateProject((IPackageRepository)null, msbuildProject);
return null;
}
}
}

1
src/AddIns/Misc/PackageManagement/Project/Src/Scripting/IPackageManagementConsoleHost.cs

@ -20,6 +20,7 @@ namespace ICSharpCode.PackageManagement.Scripting @@ -20,6 +20,7 @@ namespace ICSharpCode.PackageManagement.Scripting
void Run();
IPackageManagementProject GetProject(string packageSource, string projectName);
IPackageManagementProject GetProject(IPackageRepository sourceRepository, string projectName);
PackageSource GetActivePackageSource(string source);
}
}

6
src/AddIns/Misc/PackageManagement/Project/Src/Scripting/PackageManagementConsoleHost.cs

@ -203,5 +203,11 @@ namespace ICSharpCode.PackageManagement.Scripting @@ -203,5 +203,11 @@ namespace ICSharpCode.PackageManagement.Scripting
}
return DefaultProject.Name;
}
public IPackageManagementProject GetProject(IPackageRepository sourceRepository, string projectName)
{
projectName = GetActiveProjectName(projectName);
return solution.GetProject(sourceRepository, projectName);
}
}
}

22
src/AddIns/Misc/PackageManagement/Project/Src/UpdatedPackages.cs

@ -12,33 +12,15 @@ namespace ICSharpCode.PackageManagement @@ -12,33 +12,15 @@ namespace ICSharpCode.PackageManagement
{
public class UpdatedPackages
{
IPackageManagementSolution solution;
IPackageManagementProject project;
IPackageRepository sourceRepository;
public UpdatedPackages(
IPackageManagementSolution solution,
IPackageManagementProject project,
IPackageRepository aggregateRepository)
: this(solution, aggregateRepository, null)
{
}
public UpdatedPackages(
IPackageManagementSolution solution,
IPackageRepository aggregateRepository,
MSBuildBasedProject msbuildProject)
{
this.solution = solution;
this.project = project;
this.sourceRepository = aggregateRepository;
project = CreateProject(msbuildProject);
}
IPackageManagementProject CreateProject(MSBuildBasedProject msbuildProject)
{
if (msbuildProject == null) {
return solution.GetActiveProject();
}
return solution.CreateProject(sourceRepository, msbuildProject);
}
public string SearchTerms { get; set; }

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

@ -45,7 +45,8 @@ namespace ICSharpCode.PackageManagement @@ -45,7 +45,8 @@ namespace ICSharpCode.PackageManagement
{
try {
IPackageRepository aggregateRepository = RegisteredPackageRepositories.CreateAggregateRepository();
updatedPackages = new UpdatedPackages(solution, aggregateRepository);
IPackageManagementProject project = solution.GetActiveProject(aggregateRepository);
updatedPackages = new UpdatedPackages(project, aggregateRepository);
} catch (Exception ex) {
errorMessage = ex.Message;
}

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

@ -20,5 +20,13 @@ namespace PackageManagement.Tests.Helpers @@ -20,5 +20,13 @@ namespace PackageManagement.Tests.Helpers
}
return base.GetActiveProject();
}
public override IPackageManagementProject GetActiveProject(IPackageRepository sourceRepository)
{
if (ExceptionToThrowWhenGetActiveProjectCalled != null) {
throw ExceptionToThrowWhenGetActiveProjectCalled;
}
return base.GetActiveProject(sourceRepository);
}
}
}

9
src/AddIns/Misc/PackageManagement/Test/Src/Helpers/FakePackageManagementConsoleHost.cs

@ -68,6 +68,15 @@ namespace PackageManagement.Tests.Helpers @@ -68,6 +68,15 @@ namespace PackageManagement.Tests.Helpers
return FakeProject;
}
public IPackageRepository PackageRepositoryPassedToGetProject;
public IPackageManagementProject GetProject(IPackageRepository sourceRepository, string projectName)
{
PackageRepositoryPassedToGetProject = sourceRepository;
ProjectNamePassedToGetProject = projectName;
return FakeProject;
}
public string PackageSourcePassedToGetActivePackageSource;
public PackageSource PackageSourceToReturnFromGetActivePackageSource = new PackageSource("http://sharpdevelop.com");

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

@ -281,5 +281,33 @@ namespace PackageManagement.Tests @@ -281,5 +281,33 @@ namespace PackageManagement.Tests
Assert.AreEqual(expectedSource, actualSource);
}
[Test]
public void GetProject_PackagesRepositoryAndProjectNamePassed_CreatesProjectUsingFoundProjectMatchingName()
{
CreateSolution();
var expectedProject = AddProjectToOpenProjects("Test");
var repository = new FakePackageRepository();
solution.GetProject(repository, "Test");
var project = fakeProjectFactory.ProjectPassedToCreateProject;
Assert.AreEqual(expectedProject, project);
}
[Test]
public void GetProject_RepositoryAndProjectNameWithDifferentCasePassed_CreatesProjectUsingFoundProjectMatchingName()
{
CreateSolution();
var expectedProject = AddProjectToOpenProjects("Test");
var repository = new FakePackageRepository();
solution.GetProject(repository, "TEST");
var project = fakeProjectFactory.ProjectPassedToCreateProject;
Assert.AreEqual(expectedProject, project);
}
}
}

57
src/AddIns/Misc/PackageManagement/Test/Src/Scripting/PackageManagementConsoleHostTests.cs

@ -300,8 +300,9 @@ namespace PackageManagement.Tests.Scripting @@ -300,8 +300,9 @@ namespace PackageManagement.Tests.Scripting
CreateHost();
var expectedSource = new PackageSource("http://sharpdevelop.net");
host.ActivePackageSource = expectedSource;
string packageSource = null;
host.GetProject(null, "Test");
host.GetProject(packageSource, "Test");
var actualSource = fakeSolution.PackageSourcePassedToGetProject;
@ -322,5 +323,59 @@ namespace PackageManagement.Tests.Scripting @@ -322,5 +323,59 @@ namespace PackageManagement.Tests.Scripting
Assert.AreEqual("Test", projectName);
}
[Test]
public void GetProject_ProjectNameAndRepositoryPassed_ProjectNameUsedToGetProject()
{
CreateHost();
var repository = new FakePackageRepository();
string expectedProjectName = "Test";
host.GetProject(repository, expectedProjectName);
var actualProjectName = fakeSolution.ProjectNamePassedToGetProject;
Assert.AreEqual(expectedProjectName, actualProjectName);
}
[Test]
public void GetProject_ProjectNameAndRepositoryPassed_RepositoryUsedToGetProject()
{
CreateHost();
var repository = new FakePackageRepository();
host.GetProject(repository, "Test");
var actualRepository = fakeSolution.RepositoryPassedToGetProject;
Assert.AreEqual(repository, actualRepository);
}
[Test]
public void GetProject_ProjectNameAndRepositoryPassed_ReturnsProject()
{
CreateHost();
var repository = new FakePackageRepository();
var project = host.GetProject(repository, "Test");
var expectedProject = fakeSolution.FakeProject;
Assert.AreEqual(expectedProject, project);
}
[Test]
public void GetProject_NullProjectNameAndNonNullRepositoryPassed_UsesDefaultProjectNameToCreateProject()
{
CreateHost();
host.DefaultProject = ProjectHelper.CreateTestProject("MyProject");
var repository = new FakePackageRepository();
var project = host.GetProject(repository, null);
var projectName = fakeSolution.ProjectNamePassedToGetProject;
Assert.AreEqual("MyProject", projectName);
}
}
}

Loading…
Cancel
Save