Browse Source

Return PackageManagementProjects from console host.

pull/15/head
Matt Ward 15 years ago
parent
commit
ab1229eadc
  1. 4
      src/AddIns/Misc/PackageManagement/Cmdlets/Project/Src/GetPackageCmdlet.cs
  2. 9
      src/AddIns/Misc/PackageManagement/Cmdlets/Project/Src/InstallPackageCmdlet.cs
  3. 16
      src/AddIns/Misc/PackageManagement/Cmdlets/Project/Src/PackageManagementCmdlet.cs
  4. 14
      src/AddIns/Misc/PackageManagement/Cmdlets/Project/Src/UninstallPackageCmdlet.cs
  5. 9
      src/AddIns/Misc/PackageManagement/Cmdlets/Project/Src/UpdatePackageCmdlet.cs
  6. 23
      src/AddIns/Misc/PackageManagement/Cmdlets/Test/Src/GetPackageCmdletTests.cs
  7. 44
      src/AddIns/Misc/PackageManagement/Cmdlets/Test/Src/InstallPackageCmdletTests.cs
  8. 40
      src/AddIns/Misc/PackageManagement/Cmdlets/Test/Src/UninstallPackageCmdletTests.cs
  9. 34
      src/AddIns/Misc/PackageManagement/Cmdlets/Test/Src/UpdatePackageCmdletTests.cs
  10. 10
      src/AddIns/Misc/PackageManagement/Project/Src/Design/FakePackageManagementSolution.cs
  11. 1
      src/AddIns/Misc/PackageManagement/Project/Src/IPackageManagementSolution.cs
  12. 3
      src/AddIns/Misc/PackageManagement/Project/Src/PackageManagementServices.cs
  13. 21
      src/AddIns/Misc/PackageManagement/Project/Src/PackageManagementSolution.cs
  14. 3
      src/AddIns/Misc/PackageManagement/Project/Src/Scripting/IPackageManagementConsoleHost.cs
  15. 31
      src/AddIns/Misc/PackageManagement/Project/Src/Scripting/PackageManagementConsoleHost.cs
  16. 27
      src/AddIns/Misc/PackageManagement/Test/Src/Helpers/FakePackageManagementConsoleHost.cs
  17. 6
      src/AddIns/Misc/PackageManagement/Test/Src/Helpers/TestablePackageManagementConsoleHost.cs
  18. 63
      src/AddIns/Misc/PackageManagement/Test/Src/PackageManagementSolutionTests.cs
  19. 68
      src/AddIns/Misc/PackageManagement/Test/Src/Scripting/PackageManagementConsoleHostTests.cs

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

@ -138,8 +138,8 @@ namespace ICSharpCode.PackageManagement.Cmdlets
IPackageRepository CreatePackageRepositoryForActivePackageSource() IPackageRepository CreatePackageRepositoryForActivePackageSource()
{ {
PackageSource source = GetActivePackageSource(Source); PackageSource packageSource = ConsoleHost.GetActivePackageSource(Source);
return registeredPackageRepositories.CreateRepository(source); return registeredPackageRepositories.CreateRepository(packageSource);
} }
IQueryable<IPackage> FilterPackages(IQueryable<IPackage> packages) IQueryable<IPackage> FilterPackages(IQueryable<IPackage> packages)

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

@ -51,16 +51,13 @@ namespace ICSharpCode.PackageManagement.Cmdlets
void InstallPackage() void InstallPackage()
{ {
PackageSource packageSource = GetActivePackageSource(Source); InstallPackageAction action = CreateInstallPackageTask();
MSBuildBasedProject project = GetActiveProject(ProjectName);
InstallPackageAction action = CreateInstallPackageTask(packageSource, project);
action.Execute(); action.Execute();
} }
InstallPackageAction CreateInstallPackageTask(PackageSource packageSource, MSBuildBasedProject msbuildProject) InstallPackageAction CreateInstallPackageTask()
{ {
IPackageManagementProject project = Solution.CreateProject(packageSource, msbuildProject); IPackageManagementProject project = ConsoleHost.GetProject(Source, ProjectName);
InstallPackageAction action = project.CreateInstallPackageAction(); InstallPackageAction action = project.CreateInstallPackageAction();
action.PackageId = Id; action.PackageId = Id;
action.PackageVersion = Version; action.PackageVersion = Version;

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

@ -57,21 +57,5 @@ namespace ICSharpCode.PackageManagement.Cmdlets
{ {
TerminatingError.ThrowNoProjectOpenError(); TerminatingError.ThrowNoProjectOpenError();
} }
protected PackageSource GetActivePackageSource(string source)
{
if (source != null) {
return new PackageSource(source);
}
return ConsoleHost.ActivePackageSource;
}
protected MSBuildBasedProject GetActiveProject(string projectName)
{
if (projectName != null) {
return ConsoleHost.GetProject(projectName);
}
return ConsoleHost.DefaultProject as MSBuildBasedProject;
}
} }
} }

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

@ -51,21 +51,13 @@ namespace ICSharpCode.PackageManagement.Cmdlets
void UninstallPackage() void UninstallPackage()
{ {
MSBuildBasedProject project = GetActiveProject(ProjectName); UninstallPackageAction action = CreateUninstallPackageAction();
PackageSource packageSource = GetActivePackageSource();
UninstallPackageAction action = CreateUninstallPackageAction(packageSource, project);
action.Execute(); action.Execute();
} }
PackageSource GetActivePackageSource() UninstallPackageAction CreateUninstallPackageAction()
{
return GetActivePackageSource(null);
}
UninstallPackageAction CreateUninstallPackageAction(PackageSource packageSource, MSBuildBasedProject msbuildProject)
{ {
IPackageManagementProject project = Solution.CreateProject(packageSource, msbuildProject); IPackageManagementProject project = ConsoleHost.GetProject(null, ProjectName);
UninstallPackageAction action = project.CreateUninstallPackageAction(); UninstallPackageAction action = project.CreateUninstallPackageAction();
action.PackageId = Id; action.PackageId = Id;
action.PackageVersion = Version; action.PackageVersion = Version;

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

@ -51,16 +51,13 @@ namespace ICSharpCode.PackageManagement.Cmdlets
void UpdatePackage() void UpdatePackage()
{ {
PackageSource packageSource = GetActivePackageSource(Source); UpdatePackageAction action = CreateUpdatePackageAction();
MSBuildBasedProject project = GetActiveProject(ProjectName);
UpdatePackageAction action = CreateUpdatePackageAction(packageSource, project);
action.Execute(); action.Execute();
} }
UpdatePackageAction CreateUpdatePackageAction(PackageSource packageSource, MSBuildBasedProject msbuildProject) UpdatePackageAction CreateUpdatePackageAction()
{ {
IPackageManagementProject project = Solution.CreateProject(packageSource, msbuildProject); IPackageManagementProject project = ConsoleHost.GetProject(Source, ProjectName);
UpdatePackageAction action = project.CreateUpdatePackageAction(); UpdatePackageAction action = project.CreateUpdatePackageAction();
action.PackageId = Id; action.PackageId = Id;
action.PackageVersion = Version; action.PackageVersion = Version;

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

@ -151,6 +151,7 @@ namespace PackageManagement.Cmdlets.Tests
{ {
CreateCmdlet(); CreateCmdlet();
var source = AddPackageSourceToConsoleHost(); var source = AddPackageSourceToConsoleHost();
fakeConsoleHost.PackageSourceToReturnFromGetActivePackageSource = source;
EnableListAvailableParameter(); EnableListAvailableParameter();
RunCmdlet(); RunCmdlet();
@ -181,6 +182,7 @@ namespace PackageManagement.Cmdlets.Tests
{ {
CreateCmdlet(); CreateCmdlet();
var source = AddPackageSourceToConsoleHost(); var source = AddPackageSourceToConsoleHost();
fakeConsoleHost.PackageSourceToReturnFromGetActivePackageSource = source;
RunCmdlet(); RunCmdlet();
@ -330,14 +332,15 @@ namespace PackageManagement.Cmdlets.Tests
public void ProcessRecord_ListAvailablePackagesWhenPackageSourceParameterSpecified_PackageRepositoryCreatedForPackageSourceSpecifiedByParameter() public void ProcessRecord_ListAvailablePackagesWhenPackageSourceParameterSpecified_PackageRepositoryCreatedForPackageSourceSpecifiedByParameter()
{ {
CreateCmdlet(); CreateCmdlet();
var expectedPackageSource = new PackageSource("http://sharpdevelop.com/packages");
fakeConsoleHost.PackageSourceToReturnFromGetActivePackageSource = expectedPackageSource;
var repository = fakeRegisteredPackageRepositories.FakePackageRepository; var repository = fakeRegisteredPackageRepositories.FakePackageRepository;
SetSourceParameter("http://sharpdevelop.com/packages"); SetSourceParameter("http://sharpdevelop.com/packages");
EnableListAvailableParameter(); EnableListAvailableParameter();
RunCmdlet(); RunCmdlet();
var actualPackageSource = fakeRegisteredPackageRepositories.PackageSourcePassedToCreateRepository.Source; var actualPackageSource = fakeRegisteredPackageRepositories.PackageSourcePassedToCreateRepository;
var expectedPackageSource = "http://sharpdevelop.com/packages";
Assert.AreEqual(expectedPackageSource, actualPackageSource); Assert.AreEqual(expectedPackageSource, actualPackageSource);
} }
@ -350,12 +353,26 @@ namespace PackageManagement.Cmdlets.Tests
RunCmdlet(); RunCmdlet();
var actualPackageSource = fakeRegisteredPackageRepositories.PackageSourcePassedToCreateRepository.Source; var actualPackageSource = fakeConsoleHost.PackageSourcePassedToGetActivePackageSource;
var expectedPackageSource = "http://test"; var expectedPackageSource = "http://test";
Assert.AreEqual(expectedPackageSource, actualPackageSource); Assert.AreEqual(expectedPackageSource, actualPackageSource);
} }
[Test]
public void ProcessRecord_JustSourceParameterPassed_PackageRepositoryCreatedForPackageSource()
{
CreateCmdlet();
SetSourceParameter("http://test");
RunCmdlet();
var actualPackageSource = fakeRegisteredPackageRepositories.PackageSourcePassedToCreateRepository;
var expectedPackageSource = fakeConsoleHost.PackageSourceToReturnFromGetActivePackageSource;
Assert.AreEqual(expectedPackageSource, actualPackageSource);
}
[Test] [Test]
public void ProcessRecord_RecentPackagesRequested_RecentPackagesReturned() public void ProcessRecord_RecentPackagesRequested_RecentPackagesReturned()
{ {

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

@ -18,7 +18,6 @@ namespace PackageManagement.Cmdlets.Tests
{ {
TestableInstallPackageCmdlet cmdlet; TestableInstallPackageCmdlet cmdlet;
FakeCmdletTerminatingError fakeTerminatingError; FakeCmdletTerminatingError fakeTerminatingError;
FakePackageManagementSolution fakeSolution;
FakePackageManagementProject fakeProject; FakePackageManagementProject fakeProject;
FakeInstallPackageAction fakeInstallPackageTask; FakeInstallPackageAction fakeInstallPackageTask;
@ -27,8 +26,7 @@ namespace PackageManagement.Cmdlets.Tests
cmdlet = new TestableInstallPackageCmdlet(); cmdlet = new TestableInstallPackageCmdlet();
fakeTerminatingError = cmdlet.FakeCmdletTerminatingError; fakeTerminatingError = cmdlet.FakeCmdletTerminatingError;
fakeConsoleHost = cmdlet.FakePackageManagementConsoleHost; fakeConsoleHost = cmdlet.FakePackageManagementConsoleHost;
fakeSolution = cmdlet.FakeSolution; fakeProject = fakeConsoleHost.FakeProject;
fakeProject = fakeSolution.FakeProject;
fakeInstallPackageTask = fakeProject.FakeInstallPackageAction; fakeInstallPackageTask = fakeProject.FakeInstallPackageAction;
} }
@ -104,34 +102,6 @@ namespace PackageManagement.Cmdlets.Tests
Assert.AreEqual("Test", actualPackageId); Assert.AreEqual("Test", actualPackageId);
} }
[Test]
public void ProcessRecord_PackageIdSpecified_ActivePackageSourceUsedToInstallPackage()
{
CreateCmdletWithoutActiveProject();
AddDefaultProjectToConsoleHost();
var packageSource = AddPackageSourceToConsoleHost();
SetIdParameter("Test");
RunCmdlet();
var actualPackageSource = fakeSolution.PackageSourcePassedToCreateProject;
Assert.AreEqual(packageSource, actualPackageSource);
}
[Test]
public void ProcessRecord_PackageIdSpecified_ActiveProjectUsedToCreateProject()
{
CreateCmdletWithoutActiveProject();
AddPackageSourceToConsoleHost();
var project = AddDefaultProjectToConsoleHost();
SetIdParameter("Test");
RunCmdlet();
var actualProject = fakeSolution.ProjectPassedToCreateProject;
Assert.AreEqual(project, actualProject);
}
[Test] [Test]
public void ProcessRecord_IgnoreDependenciesParameterSet_IgnoreDependenciesIsTrueWhenInstallingPackage() public void ProcessRecord_IgnoreDependenciesParameterSet_IgnoreDependenciesIsTrueWhenInstallingPackage()
{ {
@ -160,7 +130,7 @@ namespace PackageManagement.Cmdlets.Tests
} }
[Test] [Test]
public void ProcessRecord_SourceParameterSet_CustomSourceUsedWhenCreatingProject() public void ProcessRecord_SourceParameterSet_CustomSourceUsedWhenRetrievingProject()
{ {
CreateCmdletWithActivePackageSourceAndProject(); CreateCmdletWithActivePackageSourceAndProject();
@ -169,7 +139,7 @@ namespace PackageManagement.Cmdlets.Tests
RunCmdlet(); RunCmdlet();
var expected = "http://sharpdevelop.net/packages"; var expected = "http://sharpdevelop.net/packages";
var actual = fakeSolution.PackageSourcePassedToCreateProject.Source; var actual = fakeConsoleHost.PackageSourcePassedToGetProject;
Assert.AreEqual(expected, actual); Assert.AreEqual(expected, actual);
} }
@ -206,16 +176,14 @@ namespace PackageManagement.Cmdlets.Tests
public void ProcessRecord_ProjectNameSpecified_ProjectMatchingProjectNameUsedWhenInstallingPackage() public void ProcessRecord_ProjectNameSpecified_ProjectMatchingProjectNameUsedWhenInstallingPackage()
{ {
CreateCmdletWithActivePackageSourceAndProject(); CreateCmdletWithActivePackageSourceAndProject();
fakeConsoleHost.FakeProjectToReturnFromGetProject = ProjectHelper.CreateTestProject();
SetIdParameter("Test"); SetIdParameter("Test");
SetProjectNameParameter("MyProject"); SetProjectNameParameter("MyProject");
RunCmdlet(); RunCmdlet();
var actualProject = fakeSolution.ProjectPassedToCreateProject; var actualProjectName = fakeConsoleHost.ProjectNamePassedToGetProject;
var expectedProject = fakeConsoleHost.FakeProjectToReturnFromGetProject;
Assert.AreEqual(expectedProject, actualProject); Assert.AreEqual("MyProject", actualProjectName);
} }
[Test] [Test]
@ -227,7 +195,7 @@ namespace PackageManagement.Cmdlets.Tests
SetProjectNameParameter("MyProject"); SetProjectNameParameter("MyProject");
RunCmdlet(); RunCmdlet();
var actual = fakeConsoleHost.NamePassedToGetProject; var actual = fakeConsoleHost.ProjectNamePassedToGetProject;
var expected = "MyProject"; var expected = "MyProject";
Assert.AreEqual(expected, actual); Assert.AreEqual(expected, actual);

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

@ -15,7 +15,6 @@ namespace PackageManagement.Cmdlets.Tests
{ {
TestableUninstallPackageCmdlet cmdlet; TestableUninstallPackageCmdlet cmdlet;
FakeCmdletTerminatingError fakeTerminatingError; FakeCmdletTerminatingError fakeTerminatingError;
FakePackageManagementSolution fakeSolution;
FakePackageManagementProject fakeProject; FakePackageManagementProject fakeProject;
FakeUninstallPackageAction uninstallPackageAction; FakeUninstallPackageAction uninstallPackageAction;
@ -24,8 +23,7 @@ namespace PackageManagement.Cmdlets.Tests
cmdlet = new TestableUninstallPackageCmdlet(); cmdlet = new TestableUninstallPackageCmdlet();
fakeTerminatingError = cmdlet.FakeCmdletTerminatingError; fakeTerminatingError = cmdlet.FakeCmdletTerminatingError;
fakeConsoleHost = cmdlet.FakePackageManagementConsoleHost; fakeConsoleHost = cmdlet.FakePackageManagementConsoleHost;
fakeSolution = cmdlet.FakeSolution; fakeProject = fakeConsoleHost.FakeProject;
fakeProject = fakeSolution.FakeProject;
uninstallPackageAction = fakeProject.FakeUninstallPackageAction; uninstallPackageAction = fakeProject.FakeUninstallPackageAction;
} }
@ -101,20 +99,6 @@ namespace PackageManagement.Cmdlets.Tests
Assert.AreEqual("Test", actualPackageId); Assert.AreEqual("Test", actualPackageId);
} }
[Test]
public void ProcessRecord_PackageIdSpecified_ActiveProjectUsedToCreateProject()
{
CreateCmdletWithoutActiveProject();
AddPackageSourceToConsoleHost();
var project = AddDefaultProjectToConsoleHost();
SetIdParameter("Test");
RunCmdlet();
var actualProject = fakeSolution.ProjectPassedToCreateProject;
Assert.AreEqual(project, actualProject);
}
[Test] [Test]
public void ProcessRecord_ForceParameterSet_PackageForcefullyUninstalled() public void ProcessRecord_ForceParameterSet_PackageForcefullyUninstalled()
{ {
@ -201,16 +185,14 @@ namespace PackageManagement.Cmdlets.Tests
public void ProcessRecord_ProjectNameSpecified_ProjectMatchingProjectNameUsedWhenUninstallingPackage() public void ProcessRecord_ProjectNameSpecified_ProjectMatchingProjectNameUsedWhenUninstallingPackage()
{ {
CreateCmdletWithActivePackageSourceAndProject(); CreateCmdletWithActivePackageSourceAndProject();
fakeConsoleHost.FakeProjectToReturnFromGetProject = ProjectHelper.CreateTestProject();
SetIdParameter("Test"); SetIdParameter("Test");
SetProjectNameParameter("MyProject"); SetProjectNameParameter("MyProject");
RunCmdlet(); RunCmdlet();
var actualProject = fakeSolution.ProjectPassedToCreateProject; var actualProjectName = fakeConsoleHost.ProjectNamePassedToGetProject;
var expectedProject = fakeConsoleHost.FakeProjectToReturnFromGetProject;
Assert.AreEqual(expectedProject, actualProject); Assert.AreEqual("MyProject", actualProjectName);
} }
[Test] [Test]
@ -222,26 +204,12 @@ namespace PackageManagement.Cmdlets.Tests
SetProjectNameParameter("MyProject"); SetProjectNameParameter("MyProject");
RunCmdlet(); RunCmdlet();
var actual = fakeConsoleHost.NamePassedToGetProject; var actual = fakeConsoleHost.ProjectNamePassedToGetProject;
var expected = "MyProject"; var expected = "MyProject";
Assert.AreEqual(expected, actual); Assert.AreEqual(expected, actual);
} }
[Test]
public void ProcessRecord_PackageIdSpecified_ActivePackageSourceUsedToCreateProject()
{
CreateCmdletWithoutActiveProject();
AddDefaultProjectToConsoleHost();
var packageSource = AddPackageSourceToConsoleHost();
SetIdParameter("Test");
RunCmdlet();
var actualPackageSource = fakeSolution.PackageSourcePassedToCreateProject;
Assert.AreEqual(packageSource, actualPackageSource);
}
[Test] [Test]
public void ProcessRecord_PackageIdSpecified_PackageIsUninstalled() public void ProcessRecord_PackageIdSpecified_PackageIsUninstalled()
{ {

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

@ -15,7 +15,6 @@ namespace PackageManagement.Cmdlets.Tests
{ {
TestableUpdatePackageCmdlet cmdlet; TestableUpdatePackageCmdlet cmdlet;
FakeCmdletTerminatingError fakeTerminatingError; FakeCmdletTerminatingError fakeTerminatingError;
FakePackageManagementSolution fakeSolution;
FakePackageManagementProject fakeProject; FakePackageManagementProject fakeProject;
FakeUpdatePackageAction fakeUpdatePackageAction; FakeUpdatePackageAction fakeUpdatePackageAction;
@ -24,8 +23,7 @@ namespace PackageManagement.Cmdlets.Tests
cmdlet = new TestableUpdatePackageCmdlet(); cmdlet = new TestableUpdatePackageCmdlet();
fakeTerminatingError = cmdlet.FakeCmdletTerminatingError; fakeTerminatingError = cmdlet.FakeCmdletTerminatingError;
fakeConsoleHost = cmdlet.FakePackageManagementConsoleHost; fakeConsoleHost = cmdlet.FakePackageManagementConsoleHost;
fakeSolution = cmdlet.FakeSolution; fakeProject = fakeConsoleHost.FakeProject;
fakeProject = fakeSolution.FakeProject;
fakeUpdatePackageAction = fakeProject.FakeUpdatePackageAction; fakeUpdatePackageAction = fakeProject.FakeUpdatePackageAction;
} }
@ -102,7 +100,7 @@ namespace PackageManagement.Cmdlets.Tests
} }
[Test] [Test]
public void ProcessRecord_PackageIdSpecified_ActivePackageSourceUsedToCreateProject() public void ProcessRecord_PackageIdSpecified_NullPackageSourceUsedToCreateProject()
{ {
CreateCmdletWithoutActiveProject(); CreateCmdletWithoutActiveProject();
AddDefaultProjectToConsoleHost(); AddDefaultProjectToConsoleHost();
@ -110,23 +108,9 @@ namespace PackageManagement.Cmdlets.Tests
SetIdParameter("Test"); SetIdParameter("Test");
RunCmdlet(); RunCmdlet();
var actualPackageSource = fakeSolution.PackageSourcePassedToCreateProject; var actualPackageSource = fakeConsoleHost.PackageSourcePassedToGetProject;
Assert.AreEqual(packageSource, actualPackageSource); Assert.IsNull(actualPackageSource);
}
[Test]
public void ProcessRecord_PackageIdSpecified_ActiveProjectUsedToCreateProject()
{
CreateCmdletWithoutActiveProject();
AddPackageSourceToConsoleHost();
var project = AddDefaultProjectToConsoleHost();
SetIdParameter("Test");
RunCmdlet();
var actualProject = fakeSolution.ProjectPassedToCreateProject;
Assert.AreEqual(project, actualProject);
} }
[Test] [Test]
@ -166,7 +150,7 @@ namespace PackageManagement.Cmdlets.Tests
RunCmdlet(); RunCmdlet();
var expected = "http://sharpdevelop.net/packages"; var expected = "http://sharpdevelop.net/packages";
var actual = fakeSolution.PackageSourcePassedToCreateProject.Source; var actual = fakeConsoleHost.PackageSourcePassedToGetProject;
Assert.AreEqual(expected, actual); Assert.AreEqual(expected, actual);
} }
@ -203,16 +187,14 @@ namespace PackageManagement.Cmdlets.Tests
public void ProcessRecord_ProjectNameSpecified_ProjectMatchingProjectNameUsedWhenUpdatingPackage() public void ProcessRecord_ProjectNameSpecified_ProjectMatchingProjectNameUsedWhenUpdatingPackage()
{ {
CreateCmdletWithActivePackageSourceAndProject(); CreateCmdletWithActivePackageSourceAndProject();
fakeConsoleHost.FakeProjectToReturnFromGetProject = ProjectHelper.CreateTestProject();
SetIdParameter("Test"); SetIdParameter("Test");
SetProjectNameParameter("MyProject"); SetProjectNameParameter("MyProject");
RunCmdlet(); RunCmdlet();
var actualProject = fakeSolution.ProjectPassedToCreateProject; var actualProjectName = fakeConsoleHost.ProjectNamePassedToGetProject;
var expectedProject = fakeConsoleHost.FakeProjectToReturnFromGetProject;
Assert.AreEqual(expectedProject, actualProject); Assert.AreEqual("MyProject", actualProjectName);
} }
[Test] [Test]
@ -224,7 +206,7 @@ namespace PackageManagement.Cmdlets.Tests
SetProjectNameParameter("MyProject"); SetProjectNameParameter("MyProject");
RunCmdlet(); RunCmdlet();
var actual = fakeConsoleHost.NamePassedToGetProject; var actual = fakeConsoleHost.ProjectNamePassedToGetProject;
var expected = "MyProject"; var expected = "MyProject";
Assert.AreEqual(expected, actual); Assert.AreEqual(expected, actual);

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

@ -58,5 +58,15 @@ namespace ICSharpCode.PackageManagement.Design
ProjectPassedToCreateProject = project; ProjectPassedToCreateProject = project;
return FakeProject; return FakeProject;
} }
public PackageSource PackageSourcePassedToGetProject;
public string ProjectNamePassedToGetProject;
public IPackageManagementProject GetProject(PackageSource source, string projectName)
{
PackageSourcePassedToGetProject = source;
ProjectNamePassedToGetProject = projectName;
return FakeProject;
}
} }
} }

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

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

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

@ -10,7 +10,7 @@ namespace ICSharpCode.PackageManagement
{ {
static readonly PackageManagementOptions options; static readonly PackageManagementOptions options;
static readonly PackageManagementSolution solution; static readonly PackageManagementSolution solution;
static readonly PackageManagementConsoleHost consoleHost = new PackageManagementConsoleHost(); static readonly PackageManagementConsoleHost consoleHost;
static readonly RegisteredPackageRepositories registeredPackageRepositories; static readonly RegisteredPackageRepositories registeredPackageRepositories;
static readonly PackageManagementEvents packageManagementEvents = new PackageManagementEvents(); static readonly PackageManagementEvents packageManagementEvents = new PackageManagementEvents();
static readonly PackageManagementProjectService projectService = new PackageManagementProjectService(); static readonly PackageManagementProjectService projectService = new PackageManagementProjectService();
@ -23,6 +23,7 @@ namespace ICSharpCode.PackageManagement
registeredPackageRepositories = new RegisteredPackageRepositories(options); registeredPackageRepositories = new RegisteredPackageRepositories(options);
outputMessagesView = new PackageManagementOutputMessagesView(packageManagementEvents); outputMessagesView = new PackageManagementOutputMessagesView(packageManagementEvents);
solution = new PackageManagementSolution(registeredPackageRepositories, packageManagementEvents); solution = new PackageManagementSolution(registeredPackageRepositories, packageManagementEvents);
consoleHost = new PackageManagementConsoleHost(solution);
projectBrowserRefresher = new ProjectBrowserRefresher(projectService, packageManagementEvents); projectBrowserRefresher = new ProjectBrowserRefresher(projectService, packageManagementEvents);
} }

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

@ -75,5 +75,26 @@ namespace ICSharpCode.PackageManagement
{ {
return registeredPackageRepositories.CreateRepository(source); return registeredPackageRepositories.CreateRepository(source);
} }
public IPackageManagementProject GetProject(PackageSource source, string projectName)
{
MSBuildBasedProject msbuildProject = GetMSBuildProject(projectName);
return CreateProject(source, msbuildProject);
}
MSBuildBasedProject GetMSBuildProject(string name)
{
foreach (IProject project in projectService.GetOpenProjects()) {
if (IsProjectNameMatch(project.Name, name)) {
return project as MSBuildBasedProject;
}
}
return null;
}
bool IsProjectNameMatch(string a, string b)
{
return String.Equals(a, b, StringComparison.InvariantCultureIgnoreCase);
}
} }
} }

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

@ -19,6 +19,7 @@ namespace ICSharpCode.PackageManagement.Scripting
void Clear(); void Clear();
void Run(); void Run();
MSBuildBasedProject GetProject(string name); IPackageManagementProject GetProject(string packageSource, string projectName);
PackageSource GetActivePackageSource(string source);
} }
} }

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

@ -16,6 +16,7 @@ namespace ICSharpCode.PackageManagement.Scripting
public class PackageManagementConsoleHost : IPackageManagementConsoleHost public class PackageManagementConsoleHost : IPackageManagementConsoleHost
{ {
IThread thread; IThread thread;
IPackageManagementSolution solution;
IPowerShellHostFactory powerShellHostFactory; IPowerShellHostFactory powerShellHostFactory;
IPackageManagementProjectService projectService; IPackageManagementProjectService projectService;
IPowerShellHost powerShellHost; IPowerShellHost powerShellHost;
@ -25,17 +26,20 @@ namespace ICSharpCode.PackageManagement.Scripting
Version nuGetVersion; Version nuGetVersion;
public PackageManagementConsoleHost( public PackageManagementConsoleHost(
IPackageManagementSolution solution,
IPowerShellHostFactory powerShellHostFactory, IPowerShellHostFactory powerShellHostFactory,
IPackageManagementProjectService projectService, IPackageManagementProjectService projectService,
IPackageManagementAddInPath addinPath) IPackageManagementAddInPath addinPath)
{ {
this.solution = solution;
this.powerShellHostFactory = powerShellHostFactory; this.powerShellHostFactory = powerShellHostFactory;
this.projectService = projectService; this.projectService = projectService;
this.addinPath = addinPath; this.addinPath = addinPath;
} }
public PackageManagementConsoleHost() public PackageManagementConsoleHost(IPackageManagementSolution solution)
: this( : this(
solution,
new PowerShellHostFactory(), new PowerShellHostFactory(),
new PackageManagementProjectService(), new PackageManagementProjectService(),
new PackageManagementAddInPath()) new PackageManagementAddInPath())
@ -176,19 +180,28 @@ namespace ICSharpCode.PackageManagement.Scripting
powerShellHost.ExecuteCommand(line); powerShellHost.ExecuteCommand(line);
} }
public MSBuildBasedProject GetProject(string name) public IPackageManagementProject GetProject(string packageSource, string projectName)
{ {
foreach (IProject project in projectService.GetOpenProjects()) { PackageSource source = GetActivePackageSource(packageSource);
if (IsProjectNameMatch(project.Name, name)) { projectName = GetActiveProjectName(projectName);
return project as MSBuildBasedProject;
} return solution.GetProject(source, projectName);
}
public PackageSource GetActivePackageSource(string source)
{
if (source != null) {
return new PackageSource(source);
} }
return null; return ActivePackageSource;
} }
bool IsProjectNameMatch(string a, string b) string GetActiveProjectName(string projectName)
{ {
return String.Equals(a, b, StringComparison.InvariantCultureIgnoreCase); if (projectName != null) {
return projectName;
}
return DefaultProject.Name;
} }
} }
} }

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

@ -51,19 +51,30 @@ namespace PackageManagement.Tests.Helpers
return source; return source;
} }
public MSBuildBasedProject FakeProjectToReturnFromGetProject; public FakePackageManagementProjectService FakeProjectService = new FakePackageManagementProjectService();
public string NamePassedToGetProject;
public IPackageManagementProjectService ProjectService {
get { return FakeProjectService; }
}
public MSBuildBasedProject GetProject(string name) public string PackageSourcePassedToGetProject;
public string ProjectNamePassedToGetProject;
public FakePackageManagementProject FakeProject = new FakePackageManagementProject();
public IPackageManagementProject GetProject(string packageSource, string projectName)
{ {
NamePassedToGetProject = name; PackageSourcePassedToGetProject = packageSource;
return FakeProjectToReturnFromGetProject; ProjectNamePassedToGetProject = projectName;
return FakeProject;
} }
public FakePackageManagementProjectService FakeProjectService = new FakePackageManagementProjectService(); public string PackageSourcePassedToGetActivePackageSource;
public PackageSource PackageSourceToReturnFromGetActivePackageSource = new PackageSource("http://sharpdevelop.com");
public IPackageManagementProjectService ProjectService { public PackageSource GetActivePackageSource(string source)
get { return FakeProjectService; } {
PackageSourcePassedToGetActivePackageSource = source;
return PackageSourceToReturnFromGetActivePackageSource;
} }
} }
} }

6
src/AddIns/Misc/PackageManagement/Test/Src/Helpers/TestablePackageManagementConsoleHost.cs

@ -17,9 +17,11 @@ namespace PackageManagement.Tests.Helpers
public FakePowerShellHostFactory FakePowerShellHostFactory; public FakePowerShellHostFactory FakePowerShellHostFactory;
public FakePackageManagementAddInPath FakePackageManagementAddInPath; public FakePackageManagementAddInPath FakePackageManagementAddInPath;
public FakePackageManagementProjectService FakeProjectService; public FakePackageManagementProjectService FakeProjectService;
public FakePackageManagementSolution FakeSolution;
public TestablePackageManagementConsoleHost() public TestablePackageManagementConsoleHost()
: this( : this(
new FakePackageManagementSolution(),
new FakeScriptingConsoleWithLinesToRead(), new FakeScriptingConsoleWithLinesToRead(),
new FakePowerShellHostFactory(), new FakePowerShellHostFactory(),
new FakePackageManagementProjectService(), new FakePackageManagementProjectService(),
@ -28,12 +30,14 @@ namespace PackageManagement.Tests.Helpers
} }
public TestablePackageManagementConsoleHost( public TestablePackageManagementConsoleHost(
FakePackageManagementSolution solution,
FakeScriptingConsoleWithLinesToRead scriptingConsole, FakeScriptingConsoleWithLinesToRead scriptingConsole,
FakePowerShellHostFactory powerShellHostFactory, FakePowerShellHostFactory powerShellHostFactory,
FakePackageManagementProjectService projectService, FakePackageManagementProjectService projectService,
FakePackageManagementAddInPath addinPath) FakePackageManagementAddInPath addinPath)
: base(powerShellHostFactory, projectService, addinPath) : base(solution, powerShellHostFactory, projectService, addinPath)
{ {
this.FakeSolution = solution;
this.FakeScriptingConsole = scriptingConsole; this.FakeScriptingConsole = scriptingConsole;
this.ScriptingConsole = scriptingConsole; this.ScriptingConsole = scriptingConsole;
this.FakePowerShellHostFactory = powerShellHostFactory; this.FakePowerShellHostFactory = powerShellHostFactory;

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

@ -44,7 +44,7 @@ namespace PackageManagement.Tests
var packageManagementEvents = new FakePackageManagementEvents(); var packageManagementEvents = new FakePackageManagementEvents();
fakeProjectService.CurrentProject = testProject; fakeProjectService.CurrentProject = testProject;
solution = solution =
new PackageManagementSolution( new PackageManagementSolution(
fakeRegisteredPackageRepositories, fakeRegisteredPackageRepositories,
packageManagementEvents, packageManagementEvents,
@ -52,6 +52,13 @@ namespace PackageManagement.Tests
fakeProjectFactory); fakeProjectFactory);
} }
TestableProject AddProjectToOpenProjects(string projectName)
{
var project = ProjectHelper.CreateTestProject(projectName);
fakeProjectService.OpenProjects.Add(project);
return project;
}
[Test] [Test]
public void GetActiveProject_ProjectIsSelected_CreatesProjectUsingCurrentProjectSelectedInSharpDevelop() public void GetActiveProject_ProjectIsSelected_CreatesProjectUsingCurrentProjectSelectedInSharpDevelop()
{ {
@ -220,5 +227,59 @@ namespace PackageManagement.Tests
Assert.AreEqual(expectedProject, project); Assert.AreEqual(expectedProject, project);
} }
[Test]
public void GetProject_PackagesSourceAndProjectNamePassed_CreatesProjectUsingFoundProjectMatchingName()
{
CreateSolution();
var expectedProject = AddProjectToOpenProjects("Test");
var source = new PackageSource("http://sharpdevelop.net");
solution.GetProject(source, "Test");
var project = fakeProjectFactory.ProjectPassedToCreateProject;
Assert.AreEqual(expectedProject, project);
}
[Test]
public void GetProject_PackagesSourceAndProjectNameWithDifferentCasePassed_CreatesProjectUsingFoundProjectMatchingName()
{
CreateSolution();
var expectedProject = AddProjectToOpenProjects("Test");
var source = new PackageSource("http://sharpdevelop.net");
solution.GetProject(source, "TEST");
var project = fakeProjectFactory.ProjectPassedToCreateProject;
Assert.AreEqual(expectedProject, project);
}
[Test]
public void GetProject_PackagesSourceAndProjectPassed_ReturnsProjectFromProjectFactory()
{
CreateSolution();
AddProjectToOpenProjects("Test");
var source = new PackageSource("http://sharpdevelop.net");
var project = solution.GetProject(source, "Test");
var expectedProject = fakeProjectFactory.FakeProject;
Assert.AreEqual(expectedProject, project);
}
[Test]
public void GetProject_PackagesSourceAndProjectPassed_PackageSourceUsedToCreateRepository()
{
CreateSolution();
AddProjectToOpenProjects("Test");
var expectedSource = new PackageSource("http://sharpdevelop.net");
var project = solution.GetProject(expectedSource, "Test");
var actualSource = fakeRegisteredPackageRepositories.PackageSourcePassedToCreateRepository;
Assert.AreEqual(expectedSource, actualSource);
}
} }
} }

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

@ -6,6 +6,7 @@ using ICSharpCode.PackageManagement.Design;
using ICSharpCode.PackageManagement.Scripting; using ICSharpCode.PackageManagement.Scripting;
using ICSharpCode.Scripting; using ICSharpCode.Scripting;
using ICSharpCode.Scripting.Tests.Utils; using ICSharpCode.Scripting.Tests.Utils;
using NuGet;
using NUnit.Framework; using NUnit.Framework;
using PackageManagement.Tests.Helpers; using PackageManagement.Tests.Helpers;
@ -17,11 +18,13 @@ namespace PackageManagement.Tests.Scripting
TestablePackageManagementConsoleHost host; TestablePackageManagementConsoleHost host;
FakeScriptingConsoleWithLinesToRead scriptingConsole; FakeScriptingConsoleWithLinesToRead scriptingConsole;
FakePowerShellHost powerShellHost; FakePowerShellHost powerShellHost;
FakePackageManagementSolution fakeSolution;
FakePackageManagementProjectService fakeProjectService; FakePackageManagementProjectService fakeProjectService;
void CreateHost() void CreateHost()
{ {
host = new TestablePackageManagementConsoleHost(); host = new TestablePackageManagementConsoleHost();
fakeSolution = host.FakeSolution;
scriptingConsole = host.FakeScriptingConsole; scriptingConsole = host.FakeScriptingConsole;
powerShellHost = host.FakePowerShellHostFactory.FakePowerShellHost; powerShellHost = host.FakePowerShellHostFactory.FakePowerShellHost;
fakeProjectService = host.FakeProjectService; fakeProjectService = host.FakeProjectService;
@ -252,31 +255,72 @@ namespace PackageManagement.Tests.Scripting
} }
[Test] [Test]
public void GetProject_ThreeProjectsOpenAndProjectWithNameExists_ReturnsMatchingProject() public void GetProject_ProjectNameAndPackageSourcePassed_ProjectNameUsedToGetProject()
{ {
CreateHost(); CreateHost();
string source = "http://sharpdevelop.net";
string expectedProjectName = "Test";
AddProject("One"); host.GetProject(source, expectedProjectName);
var expectedProject = AddProject("Two");
AddProject("Three");
var actualProject = host.GetProject("Two"); var actualProjectName = fakeSolution.ProjectNamePassedToGetProject;
Assert.AreEqual(expectedProject, actualProject); Assert.AreEqual(expectedProjectName, actualProjectName);
} }
[Test] [Test]
public void GetProject_ProjectNameHasDifferentCase_ReturnsMatchingProjectIgnoringCase() public void GetProject_ProjectNameAndPackageSourcePassed_PackageSourceUsedToGetProject()
{ {
CreateHost(); CreateHost();
string expectedSource = "http://sharpdevelop.net";
AddProject("One"); host.GetProject(expectedSource, "Test");
var expectedProject = AddProject("TWO");
AddProject("Three");
var actualProject = host.GetProject("two"); var actualSource = fakeSolution.PackageSourcePassedToGetProject.Source;
Assert.AreEqual(expectedProject, actualProject); Assert.AreEqual(expectedSource, actualSource);
}
[Test]
public void GetProject_ProjectNameAndPackageSourcePassed_ReturnsProject()
{
CreateHost();
string source = "http://sharpdevelop.net";
var project = host.GetProject(source, "Test");
var expectedProject = fakeSolution.FakeProject;
Assert.AreEqual(expectedProject, project);
}
[Test]
public void GetProject_NullPackageSourcePassed_UsesDefaultSourceToCreateProject()
{
CreateHost();
var expectedSource = new PackageSource("http://sharpdevelop.net");
host.ActivePackageSource = expectedSource;
host.GetProject(null, "Test");
var actualSource = fakeSolution.PackageSourcePassedToGetProject;
Assert.AreEqual(expectedSource, actualSource);
}
[Test]
public void GetProject_NullProjectPassed_UsesDefaultProjectToCreateProject()
{
CreateHost();
var source = "http://sharpdevelop.net";
var project = ProjectHelper.CreateTestProject("Test");
host.DefaultProject = project;
host.GetProject(source, null);
var projectName = fakeSolution.ProjectNamePassedToGetProject;
Assert.AreEqual("Test", projectName);
} }
} }
} }

Loading…
Cancel
Save