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

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

@ -51,16 +51,13 @@ namespace ICSharpCode.PackageManagement.Cmdlets @@ -51,16 +51,13 @@ namespace ICSharpCode.PackageManagement.Cmdlets
void InstallPackage()
{
PackageSource packageSource = GetActivePackageSource(Source);
MSBuildBasedProject project = GetActiveProject(ProjectName);
InstallPackageAction action = CreateInstallPackageTask(packageSource, project);
InstallPackageAction action = CreateInstallPackageTask();
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();
action.PackageId = Id;
action.PackageVersion = Version;

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

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

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

@ -51,16 +51,13 @@ namespace ICSharpCode.PackageManagement.Cmdlets @@ -51,16 +51,13 @@ namespace ICSharpCode.PackageManagement.Cmdlets
void UpdatePackage()
{
PackageSource packageSource = GetActivePackageSource(Source);
MSBuildBasedProject project = GetActiveProject(ProjectName);
UpdatePackageAction action = CreateUpdatePackageAction(packageSource, project);
UpdatePackageAction action = CreateUpdatePackageAction();
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();
action.PackageId = Id;
action.PackageVersion = Version;

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

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

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

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

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

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

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

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

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

@ -58,5 +58,15 @@ namespace ICSharpCode.PackageManagement.Design @@ -58,5 +58,15 @@ namespace ICSharpCode.PackageManagement.Design
ProjectPassedToCreateProject = project;
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 @@ -14,5 +14,6 @@ namespace ICSharpCode.PackageManagement
IPackageManagementProject CreateProject(PackageSource source, MSBuildBasedProject project);
IPackageManagementProject CreateProject(IPackageRepository sourceRepository, MSBuildBasedProject project);
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 @@ -10,7 +10,7 @@ namespace ICSharpCode.PackageManagement
{
static readonly PackageManagementOptions options;
static readonly PackageManagementSolution solution;
static readonly PackageManagementConsoleHost consoleHost = new PackageManagementConsoleHost();
static readonly PackageManagementConsoleHost consoleHost;
static readonly RegisteredPackageRepositories registeredPackageRepositories;
static readonly PackageManagementEvents packageManagementEvents = new PackageManagementEvents();
static readonly PackageManagementProjectService projectService = new PackageManagementProjectService();
@ -23,6 +23,7 @@ namespace ICSharpCode.PackageManagement @@ -23,6 +23,7 @@ namespace ICSharpCode.PackageManagement
registeredPackageRepositories = new RegisteredPackageRepositories(options);
outputMessagesView = new PackageManagementOutputMessagesView(packageManagementEvents);
solution = new PackageManagementSolution(registeredPackageRepositories, packageManagementEvents);
consoleHost = new PackageManagementConsoleHost(solution);
projectBrowserRefresher = new ProjectBrowserRefresher(projectService, packageManagementEvents);
}

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

@ -75,5 +75,26 @@ namespace ICSharpCode.PackageManagement @@ -75,5 +75,26 @@ namespace ICSharpCode.PackageManagement
{
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 @@ -19,6 +19,7 @@ namespace ICSharpCode.PackageManagement.Scripting
void Clear();
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 @@ -16,6 +16,7 @@ namespace ICSharpCode.PackageManagement.Scripting
public class PackageManagementConsoleHost : IPackageManagementConsoleHost
{
IThread thread;
IPackageManagementSolution solution;
IPowerShellHostFactory powerShellHostFactory;
IPackageManagementProjectService projectService;
IPowerShellHost powerShellHost;
@ -25,17 +26,20 @@ namespace ICSharpCode.PackageManagement.Scripting @@ -25,17 +26,20 @@ namespace ICSharpCode.PackageManagement.Scripting
Version nuGetVersion;
public PackageManagementConsoleHost(
IPackageManagementSolution solution,
IPowerShellHostFactory powerShellHostFactory,
IPackageManagementProjectService projectService,
IPackageManagementAddInPath addinPath)
{
this.solution = solution;
this.powerShellHostFactory = powerShellHostFactory;
this.projectService = projectService;
this.addinPath = addinPath;
}
public PackageManagementConsoleHost()
public PackageManagementConsoleHost(IPackageManagementSolution solution)
: this(
solution,
new PowerShellHostFactory(),
new PackageManagementProjectService(),
new PackageManagementAddInPath())
@ -176,19 +180,28 @@ namespace ICSharpCode.PackageManagement.Scripting @@ -176,19 +180,28 @@ namespace ICSharpCode.PackageManagement.Scripting
powerShellHost.ExecuteCommand(line);
}
public MSBuildBasedProject GetProject(string name)
public IPackageManagementProject GetProject(string packageSource, string projectName)
{
foreach (IProject project in projectService.GetOpenProjects()) {
if (IsProjectNameMatch(project.Name, name)) {
return project as MSBuildBasedProject;
}
PackageSource source = GetActivePackageSource(packageSource);
projectName = GetActiveProjectName(projectName);
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 @@ -51,19 +51,30 @@ namespace PackageManagement.Tests.Helpers
return source;
}
public MSBuildBasedProject FakeProjectToReturnFromGetProject;
public string NamePassedToGetProject;
public FakePackageManagementProjectService FakeProjectService = new FakePackageManagementProjectService();
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;
return FakeProjectToReturnFromGetProject;
PackageSourcePassedToGetProject = packageSource;
ProjectNamePassedToGetProject = projectName;
return FakeProject;
}
public FakePackageManagementProjectService FakeProjectService = new FakePackageManagementProjectService();
public string PackageSourcePassedToGetActivePackageSource;
public PackageSource PackageSourceToReturnFromGetActivePackageSource = new PackageSource("http://sharpdevelop.com");
public IPackageManagementProjectService ProjectService {
get { return FakeProjectService; }
public PackageSource GetActivePackageSource(string source)
{
PackageSourcePassedToGetActivePackageSource = source;
return PackageSourceToReturnFromGetActivePackageSource;
}
}
}

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

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

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

@ -44,7 +44,7 @@ namespace PackageManagement.Tests @@ -44,7 +44,7 @@ namespace PackageManagement.Tests
var packageManagementEvents = new FakePackageManagementEvents();
fakeProjectService.CurrentProject = testProject;
solution =
solution =
new PackageManagementSolution(
fakeRegisteredPackageRepositories,
packageManagementEvents,
@ -52,6 +52,13 @@ namespace PackageManagement.Tests @@ -52,6 +52,13 @@ namespace PackageManagement.Tests
fakeProjectFactory);
}
TestableProject AddProjectToOpenProjects(string projectName)
{
var project = ProjectHelper.CreateTestProject(projectName);
fakeProjectService.OpenProjects.Add(project);
return project;
}
[Test]
public void GetActiveProject_ProjectIsSelected_CreatesProjectUsingCurrentProjectSelectedInSharpDevelop()
{
@ -220,5 +227,59 @@ namespace PackageManagement.Tests @@ -220,5 +227,59 @@ namespace PackageManagement.Tests
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; @@ -6,6 +6,7 @@ using ICSharpCode.PackageManagement.Design;
using ICSharpCode.PackageManagement.Scripting;
using ICSharpCode.Scripting;
using ICSharpCode.Scripting.Tests.Utils;
using NuGet;
using NUnit.Framework;
using PackageManagement.Tests.Helpers;
@ -17,11 +18,13 @@ namespace PackageManagement.Tests.Scripting @@ -17,11 +18,13 @@ namespace PackageManagement.Tests.Scripting
TestablePackageManagementConsoleHost host;
FakeScriptingConsoleWithLinesToRead scriptingConsole;
FakePowerShellHost powerShellHost;
FakePackageManagementSolution fakeSolution;
FakePackageManagementProjectService fakeProjectService;
void CreateHost()
{
host = new TestablePackageManagementConsoleHost();
fakeSolution = host.FakeSolution;
scriptingConsole = host.FakeScriptingConsole;
powerShellHost = host.FakePowerShellHostFactory.FakePowerShellHost;
fakeProjectService = host.FakeProjectService;
@ -252,31 +255,72 @@ namespace PackageManagement.Tests.Scripting @@ -252,31 +255,72 @@ namespace PackageManagement.Tests.Scripting
}
[Test]
public void GetProject_ThreeProjectsOpenAndProjectWithNameExists_ReturnsMatchingProject()
public void GetProject_ProjectNameAndPackageSourcePassed_ProjectNameUsedToGetProject()
{
CreateHost();
string source = "http://sharpdevelop.net";
string expectedProjectName = "Test";
AddProject("One");
var expectedProject = AddProject("Two");
AddProject("Three");
host.GetProject(source, expectedProjectName);
var actualProject = host.GetProject("Two");
var actualProjectName = fakeSolution.ProjectNamePassedToGetProject;
Assert.AreEqual(expectedProject, actualProject);
Assert.AreEqual(expectedProjectName, actualProjectName);
}
[Test]
public void GetProject_ProjectNameHasDifferentCase_ReturnsMatchingProjectIgnoringCase()
public void GetProject_ProjectNameAndPackageSourcePassed_PackageSourceUsedToGetProject()
{
CreateHost();
string expectedSource = "http://sharpdevelop.net";
AddProject("One");
var expectedProject = AddProject("TWO");
AddProject("Three");
host.GetProject(expectedSource, "Test");
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