Browse Source

Merge branch 'master' of github.com:icsharpcode/SharpDevelop into powershell

Conflicts:
	src/AddIns/Misc/PackageManagement/Project/PackageManagement.csproj
	src/AddIns/Misc/PackageManagement/Project/Src/Design/FakePackageManagementService.cs
	src/AddIns/Misc/PackageManagement/Project/Src/Design/FakePackageManager.cs
	src/AddIns/Misc/PackageManagement/Project/Src/IPackageManagementService.cs
	src/AddIns/Misc/PackageManagement/Project/Src/ISharpDevelopPackageManager.cs
	src/AddIns/Misc/PackageManagement/Project/Src/PackageManagementService.cs
	src/AddIns/Misc/PackageManagement/Project/Src/SharpDevelopPackageManager.cs
	src/AddIns/Misc/PackageManagement/Project/Src/SharpDevelopProjectSystem.cs
	src/AddIns/Misc/PackageManagement/Test/PackageManagement.Tests.csproj
	src/AddIns/Misc/PackageManagement/Test/Src/PackageManagementServiceTests.cs
	src/AddIns/Misc/PackageManagement/Test/Src/SharpDevelopPackageManagerTests.cs
pull/15/head
Matt Ward 15 years ago
parent
commit
4be69831a8
  1. BIN
      src/AddIns/Misc/PackageManagement/Packages/NuGet.exe
  2. 3
      src/AddIns/Misc/PackageManagement/Project/PackageManagement.csproj
  3. 7
      src/AddIns/Misc/PackageManagement/Project/Src/Design/FakePackage.cs
  4. 8
      src/AddIns/Misc/PackageManagement/Project/Src/Design/FakePackageAssemblyReference.cs
  5. 11
      src/AddIns/Misc/PackageManagement/Project/Src/Design/FakePackageManagementService.cs
  6. 9
      src/AddIns/Misc/PackageManagement/Project/Src/Design/FakePackageManager.cs
  7. 9
      src/AddIns/Misc/PackageManagement/Project/Src/Design/FakeProjectSystem.cs
  8. 2
      src/AddIns/Misc/PackageManagement/Project/Src/IPackageManagementService.cs
  9. 2
      src/AddIns/Misc/PackageManagement/Project/Src/ISharpDevelopPackageManager.cs
  10. 12
      src/AddIns/Misc/PackageManagement/Project/Src/PackageManagementService.cs
  11. 10
      src/AddIns/Misc/PackageManagement/Project/Src/PackageViewModel.cs
  12. 24
      src/AddIns/Misc/PackageManagement/Project/Src/PackageViewModelFactory.cs
  13. 19
      src/AddIns/Misc/PackageManagement/Project/Src/SharpDevelopPackageManager.cs
  14. 24
      src/AddIns/Misc/PackageManagement/Project/Src/SharpDevelopProjectSystem.cs
  15. 32
      src/AddIns/Misc/PackageManagement/Project/Src/UpdatedPackageViewModel.cs
  16. 28
      src/AddIns/Misc/PackageManagement/Project/Src/UpdatedPackageViewModelFactory.cs
  17. 18
      src/AddIns/Misc/PackageManagement/Project/Src/UpdatedPackagesViewModel.cs
  18. BIN
      src/AddIns/Misc/PackageManagement/RequiredLibraries/NuGet.Core.dll
  19. 3
      src/AddIns/Misc/PackageManagement/Test/PackageManagement.Tests.csproj
  20. 10
      src/AddIns/Misc/PackageManagement/Test/Src/Helpers/FakePackagePathResolver.cs
  21. 13
      src/AddIns/Misc/PackageManagement/Test/Src/Helpers/TestableProjectManager.cs
  22. 63
      src/AddIns/Misc/PackageManagement/Test/Src/Helpers/TestableUpdatedPackageViewModel.cs
  23. 41
      src/AddIns/Misc/PackageManagement/Test/Src/Helpers/UpdatePackageHelper.cs
  24. 79
      src/AddIns/Misc/PackageManagement/Test/Src/PackageManagementServiceTests.cs
  25. 53
      src/AddIns/Misc/PackageManagement/Test/Src/SharpDevelopPackageManagerTests.cs
  26. 46
      src/AddIns/Misc/PackageManagement/Test/Src/SharpDevelopProjectSystemTests.cs
  27. 58
      src/AddIns/Misc/PackageManagement/Test/Src/UpdatedPackageViewModelTests.cs

BIN
src/AddIns/Misc/PackageManagement/Packages/NuGet.exe

Binary file not shown.

3
src/AddIns/Misc/PackageManagement/Project/PackageManagement.csproj

@ -55,7 +55,6 @@ @@ -55,7 +55,6 @@
<ItemGroup>
<Folder Include="Configuration" />
<Folder Include="Scripts" />
<Folder Include="Scripts" />
<Folder Include="Resources" />
<Folder Include="Src" />
<Folder Include="Src\Design" />
@ -187,6 +186,8 @@ @@ -187,6 +186,8 @@
<Compile Include="Src\SharpDevelopProjectSystemFactory.cs" />
<Compile Include="Src\StringToStringCollectionConverter.cs" />
<Compile Include="Src\UpdatedPackages.cs" />
<Compile Include="Src\UpdatedPackageViewModel.cs" />
<Compile Include="Src\UpdatedPackageViewModelFactory.cs" />
<Compile Include="Src\ViewModelBase.cs" />
<Compile Include="Src\ViewModelLocator.cs" />
</ItemGroup>

7
src/AddIns/Misc/PackageManagement/Project/Src/Design/FakePackage.cs

@ -127,5 +127,12 @@ namespace ICSharpCode.PackageManagement.Design @@ -127,5 +127,12 @@ namespace ICSharpCode.PackageManagement.Design
{
DependenciesList.Add(new PackageDependency(id));
}
List<FrameworkAssemblyReference> frameworkAssemblies =
new List<FrameworkAssemblyReference>();
public IEnumerable<FrameworkAssemblyReference> FrameworkAssemblies {
get { return frameworkAssemblies; }
}
}
}

8
src/AddIns/Misc/PackageManagement/Project/Src/Design/FakePackageAssemblyReference.cs

@ -2,8 +2,10 @@ @@ -2,8 +2,10 @@
// This code is distributed under the GNU LGPL (for details please see \doc\license.txt)
using System;
using System.Collections.Generic;
using System.IO;
using System.Runtime.Versioning;
using NuGet;
namespace ICSharpCode.PackageManagement.Design
@ -28,5 +30,11 @@ namespace ICSharpCode.PackageManagement.Design @@ -28,5 +30,11 @@ namespace ICSharpCode.PackageManagement.Design
{
throw new NotImplementedException();
}
public IEnumerable<FrameworkName> SupportedFrameworks {
get {
throw new NotImplementedException();
}
}
}
}

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

@ -237,5 +237,16 @@ namespace ICSharpCode.PackageManagement.Design @@ -237,5 +237,16 @@ namespace ICSharpCode.PackageManagement.Design
ForceRemovePassedToUninstallPackage = forceRemove;
RemoveDependenciesPassedToUninstallPackage = removeDependencies;
}
public IPackageRepository RepositoryPassedToUpdatePackage;
public IPackage PackagePassedToUpdatePackage;
public IEnumerable<PackageOperation> PackageOperationsPassedToUpdatePackage;
public void UpdatePackage(IPackageRepository repository, IPackage package, IEnumerable<PackageOperation> operations)
{
RepositoryPassedToUpdatePackage = repository;
PackagePassedToUpdatePackage = package;
PackageOperationsPassedToUpdatePackage = operations;
}
}
}

9
src/AddIns/Misc/PackageManagement/Project/Src/Design/FakePackageManager.cs

@ -131,5 +131,14 @@ namespace ICSharpCode.PackageManagement.Design @@ -131,5 +131,14 @@ namespace ICSharpCode.PackageManagement.Design
IgnoreDependenciesPassedToGetInstallPackageOperations = ignoreDependencies;
return PackageOperationsToReturnFromGetInstallPackageOperations;
}
public IPackage PackagePassedToUpdatePackage;
public IEnumerable<PackageOperation> PackageOperationsPassedToUpdatePackage;
public void UpdatePackage(IPackage package, IEnumerable<PackageOperation> operations)
{
PackagePassedToUpdatePackage = package;
PackageOperationsPassedToUpdatePackage = operations;
}
}
}

9
src/AddIns/Misc/PackageManagement/Project/Src/Design/FakeProjectSystem.cs

@ -17,9 +17,7 @@ namespace ICSharpCode.PackageManagement.Design @@ -17,9 +17,7 @@ namespace ICSharpCode.PackageManagement.Design
}
public string ProjectName {
get {
throw new NotImplementedException();
}
get { return String.Empty; }
}
public dynamic GetPropertyValue(string propertyName)
@ -46,5 +44,10 @@ namespace ICSharpCode.PackageManagement.Design @@ -46,5 +44,10 @@ namespace ICSharpCode.PackageManagement.Design
{
throw new NotImplementedException();
}
public void AddFrameworkReference(string name)
{
throw new NotImplementedException();
}
}
}

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

@ -39,6 +39,8 @@ namespace ICSharpCode.PackageManagement @@ -39,6 +39,8 @@ namespace ICSharpCode.PackageManagement
bool forceRemove,
bool removeDependencies);
void UpdatePackage(IPackageRepository repository, IPackage package, IEnumerable<PackageOperation> operations);
MSBuildBasedProject GetProject(string name);
PackageManagementOptions Options { get; }

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

@ -13,6 +13,8 @@ namespace ICSharpCode.PackageManagement @@ -13,6 +13,8 @@ namespace ICSharpCode.PackageManagement
void InstallPackage(IPackage package, IEnumerable<PackageOperation> operations, bool ignoreDependencies);
void UninstallPackage(IPackage package);
void UpdatePackage(IPackage package, IEnumerable<PackageOperation> operations);
IEnumerable<PackageOperation> GetInstallPackageOperations(IPackage package, bool ignoreDependencies);
}
}

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

@ -284,5 +284,17 @@ namespace ICSharpCode.PackageManagement @@ -284,5 +284,17 @@ namespace ICSharpCode.PackageManagement
{
return String.Equals(a, b, StringComparison.InvariantCultureIgnoreCase);
}
public void UpdatePackage(
IPackageRepository repository,
IPackage package,
IEnumerable<PackageOperation> operations)
{
ISharpDevelopPackageManager packageManager = CreatePackageManager(repository);
packageManager.UpdatePackage(package, operations);
projectService.RefreshProjectBrowser();
RecentPackageRepository.AddPackage(package);
OnPackageInstalled();
}
}
}

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

@ -272,10 +272,18 @@ namespace ICSharpCode.PackageManagement @@ -272,10 +272,18 @@ namespace ICSharpCode.PackageManagement
void InstallPackage()
{
packageManagementService.InstallPackage(sourcePackageRepository, package, packageOperations);
InstallPackage(sourcePackageRepository, package, packageOperations);
OnPropertyChanged(model => model.IsAdded);
}
protected virtual void InstallPackage(
IPackageRepository sourcePackageRepository,
IPackage package,
IEnumerable<PackageOperation> packageOperations)
{
packageManagementService.InstallPackage(sourcePackageRepository, package, packageOperations);
}
void ReportError(Exception ex)
{
messageReporter.ShowErrorMessage(ex.Message);

24
src/AddIns/Misc/PackageManagement/Project/Src/PackageViewModelFactory.cs

@ -8,27 +8,27 @@ namespace ICSharpCode.PackageManagement @@ -8,27 +8,27 @@ namespace ICSharpCode.PackageManagement
{
public class PackageViewModelFactory : IPackageViewModelFactory
{
IPackageManagementService packageManagementService;
ILicenseAcceptanceService licenseAcceptanceService;
IMessageReporter messageReporter;
public PackageViewModelFactory(
IPackageManagementService packageManagementService,
ILicenseAcceptanceService licenseAcceptanceService,
IMessageReporter messageReport)
IMessageReporter messageReporter)
{
this.packageManagementService = packageManagementService;
this.licenseAcceptanceService = licenseAcceptanceService;
this.messageReporter = messageReport;
this.PackageManagementService = packageManagementService;
this.LicenseAcceptanceService = licenseAcceptanceService;
this.MessageReporter = messageReporter;
}
public PackageViewModel CreatePackageViewModel(IPackage package)
public virtual PackageViewModel CreatePackageViewModel(IPackage package)
{
return new PackageViewModel(
package,
packageManagementService,
licenseAcceptanceService,
messageReporter);
PackageManagementService,
LicenseAcceptanceService,
MessageReporter);
}
protected IPackageManagementService PackageManagementService { get; private set; }
protected ILicenseAcceptanceService LicenseAcceptanceService { get; private set; }
protected IMessageReporter MessageReporter { get; private set; }
}
}

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

@ -103,5 +103,24 @@ namespace ICSharpCode.PackageManagement @@ -103,5 +103,24 @@ namespace ICSharpCode.PackageManagement
Logger,
ignoreDependencies);
}
public void UpdatePackage(IPackage package, IEnumerable<PackageOperation> operations)
{
foreach (PackageOperation operation in operations) {
Execute(operation);
}
UpdatePackageReference(package);
}
void UpdatePackageReference(IPackage package)
{
bool updateDependencies = true;
UpdatePackageReference(package, updateDependencies);
}
void UpdatePackageReference(IPackage package, bool updateDependencies)
{
ProjectManager.UpdatePackageReference(package.Id, package.Version, updateDependencies);
}
}
}

24
src/AddIns/Misc/PackageManagement/Project/Src/SharpDevelopProjectSystem.cs

@ -64,9 +64,7 @@ namespace ICSharpCode.PackageManagement @@ -64,9 +64,7 @@ namespace ICSharpCode.PackageManagement
public void AddReference(string referencePath, Stream stream)
{
ReferenceProjectItem assemblyReference = CreateReference(referencePath);
projectService.AddProjectItem(project, assemblyReference);
projectService.Save(project);
LogAddedReferenceToProject(assemblyReference);
AddReferenceToProject(assemblyReference);
}
ReferenceProjectItem CreateReference(string referencePath)
@ -77,6 +75,13 @@ namespace ICSharpCode.PackageManagement @@ -77,6 +75,13 @@ namespace ICSharpCode.PackageManagement
return assemblyReference;
}
void AddReferenceToProject(ReferenceProjectItem assemblyReference)
{
projectService.AddProjectItem(project, assemblyReference);
projectService.Save(project);
LogAddedReferenceToProject(assemblyReference);
}
void LogAddedReferenceToProject(ReferenceProjectItem referenceProjectItem)
{
LogAddedReferenceToProject(referenceProjectItem.Include, ProjectName);
@ -245,5 +250,18 @@ namespace ICSharpCode.PackageManagement @@ -245,5 +250,18 @@ namespace ICSharpCode.PackageManagement
{
DebugLogFormat("Removed file '{0}' from folder '{1}'.", fileName, directory);
}
public void AddFrameworkReference(string name)
{
ReferenceProjectItem assemblyReference = CreateGacReference(name);
AddReferenceToProject(assemblyReference);
}
ReferenceProjectItem CreateGacReference(string name)
{
var assemblyReference = new ReferenceProjectItem(project);
assemblyReference.Include = name;
return assemblyReference;
}
}
}

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

@ -0,0 +1,32 @@ @@ -0,0 +1,32 @@
// Copyright (c) AlphaSierraPapa for the SharpDevelop Team (for details please see \doc\copyright.txt)
// This code is distributed under the GNU LGPL (for details please see \doc\license.txt)
using System;
using System.Collections.Generic;
using NuGet;
namespace ICSharpCode.PackageManagement
{
public class UpdatedPackageViewModel : PackageViewModel
{
IPackageManagementService packageManagementService;
public UpdatedPackageViewModel(
IPackage package,
IPackageManagementService packageManagementService,
ILicenseAcceptanceService licenseAcceptanceService,
IMessageReporter messageReporter)
: base(package, packageManagementService, licenseAcceptanceService, messageReporter)
{
this.packageManagementService = packageManagementService;
}
protected override void InstallPackage(
IPackageRepository sourcePackageRepository,
IPackage package,
IEnumerable<PackageOperation> packageOperations)
{
packageManagementService.UpdatePackage(sourcePackageRepository, package, packageOperations);
}
}
}

28
src/AddIns/Misc/PackageManagement/Project/Src/UpdatedPackageViewModelFactory.cs

@ -0,0 +1,28 @@ @@ -0,0 +1,28 @@
// Copyright (c) AlphaSierraPapa for the SharpDevelop Team (for details please see \doc\copyright.txt)
// This code is distributed under the GNU LGPL (for details please see \doc\license.txt)
using System;
using NuGet;
namespace ICSharpCode.PackageManagement
{
public class UpdatedPackageViewModelFactory : PackageViewModelFactory
{
public UpdatedPackageViewModelFactory(
IPackageManagementService packageManagementService,
ILicenseAcceptanceService licenseAcceptanceService,
IMessageReporter messageReporter)
: base(packageManagementService, licenseAcceptanceService, messageReporter)
{
}
public override PackageViewModel CreatePackageViewModel(IPackage package)
{
return new UpdatedPackageViewModel(
package,
PackageManagementService,
LicenseAcceptanceService,
MessageReporter);
}
}
}

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

@ -19,7 +19,23 @@ namespace ICSharpCode.PackageManagement @@ -19,7 +19,23 @@ namespace ICSharpCode.PackageManagement
IPackageManagementService packageManagementService,
IMessageReporter messageReporter,
ITaskFactory taskFactory)
: base(packageManagementService, messageReporter, taskFactory)
: this(
packageManagementService,
messageReporter,
new LicenseAcceptanceService(),
taskFactory)
{
}
public UpdatedPackagesViewModel(
IPackageManagementService packageManagementService,
IMessageReporter messageReporter,
ILicenseAcceptanceService licenseAcceptanceService,
ITaskFactory taskFactory)
: base(
packageManagementService,
new UpdatedPackageViewModelFactory(packageManagementService, licenseAcceptanceService, messageReporter),
taskFactory)
{
this.packageManagementService = packageManagementService;
}

BIN
src/AddIns/Misc/PackageManagement/RequiredLibraries/NuGet.Core.dll

Binary file not shown.

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

@ -114,6 +114,7 @@ @@ -114,6 +114,7 @@
<Compile Include="Src\Helpers\TestableOpenHyperlinkCommand.cs" />
<Compile Include="Src\Helpers\TestableSelectedListBoxItemScrollingBehaviour.cs" />
<Compile Include="Src\Helpers\TestableSharpDevelopProjectSystem.cs" />
<Compile Include="Src\Helpers\TestableUpdatedPackageViewModel.cs" />
<Compile Include="Src\Helpers\TestableViewModelBase.cs" />
<Compile Include="Src\Helpers\Tests\PackageReferenceRepositoryTests.cs" />
<Compile Include="Properties\AssemblyInfo.cs" />
@ -122,6 +123,7 @@ @@ -122,6 +123,7 @@
<Compile Include="Src\BooleanToFontWeightConverterTests.cs" />
<Compile Include="Src\DelegateCommandTests.cs" />
<Compile Include="Src\Helpers\UninstallPackageHelper.cs" />
<Compile Include="Src\Helpers\UpdatePackageHelper.cs" />
<Compile Include="Src\InstalledPackagesViewModelTests.cs" />
<Compile Include="Src\LicenseAcceptanceViewModelTests.cs" />
<Compile Include="Src\OpenHyperlinkCommandTests.cs" />
@ -148,6 +150,7 @@ @@ -148,6 +150,7 @@
<Compile Include="Src\SharpDevelopPackageManagerTests.cs" />
<Compile Include="Src\SharpDevelopProjectSystemTests.cs" />
<Compile Include="Src\StringToStringCollectionConverterTests.cs" />
<Compile Include="Src\UpdatedPackageViewModelTests.cs" />
<Compile Include="Src\ViewModelBaseTests.cs" />
</ItemGroup>
<ItemGroup>

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

@ -22,5 +22,15 @@ namespace PackageManagement.Tests.Helpers @@ -22,5 +22,15 @@ namespace PackageManagement.Tests.Helpers
{
throw new NotImplementedException();
}
public string GetPackageDirectory(string packageId, Version version)
{
throw new NotImplementedException();
}
public string GetPackageFileName(string packageId, Version version)
{
throw new NotImplementedException();
}
}
}

13
src/AddIns/Misc/PackageManagement/Test/Src/Helpers/TestableProjectManager.cs

@ -17,6 +17,9 @@ namespace PackageManagement.Tests.Helpers @@ -17,6 +17,9 @@ namespace PackageManagement.Tests.Helpers
public bool ForcePassedToRemovePackageReference;
public bool RemoveDependenciesPassedToRemovePackageReference;
public IPackage PackagePassedToUpdatePackageReference;
public bool UpdateDependenciesPassedToUpdatePackageReference;
public FakePackageRepository FakeLocalRepository {
get { return LocalRepository as FakePackageRepository; }
}
@ -50,5 +53,15 @@ namespace PackageManagement.Tests.Helpers @@ -50,5 +53,15 @@ namespace PackageManagement.Tests.Helpers
ForcePassedToRemovePackageReference = force;
RemoveDependenciesPassedToRemovePackageReference = removeDependencies;
}
public override void UpdatePackageReference(string packageId, Version version, bool updateDependencies)
{
var package = new FakePackage();
package.Id = packageId;
package.Version = version;
PackagePassedToUpdatePackageReference = package;
UpdateDependenciesPassedToUpdatePackageReference = updateDependencies;
}
}
}

63
src/AddIns/Misc/PackageManagement/Test/Src/Helpers/TestableUpdatedPackageViewModel.cs

@ -0,0 +1,63 @@ @@ -0,0 +1,63 @@
// Copyright (c) AlphaSierraPapa for the SharpDevelop Team (for details please see \doc\copyright.txt)
// This code is distributed under the GNU LGPL (for details please see \doc\license.txt)
using System;
using ICSharpCode.PackageManagement;
using ICSharpCode.PackageManagement.Design;
using NuGet;
namespace PackageManagement.Tests.Helpers
{
public class TestableUpdatedPackageViewModel : UpdatedPackageViewModel
{
public FakePackageOperationResolver FakePackageOperationResolver = new FakePackageOperationResolver();
public FakePackageRepository FakeSourcePackageRepository;
public FakePackageManagementService FakePackageManagementService;
public FakeLicenseAcceptanceService FakeLicenseAcceptanceService;
public FakeMessageReporter FakeMessageReporter;
public FakePackage FakePackage;
public ILogger LoggerUsedWhenCreatingPackageResolver;
public string PackageViewModelAddingPackageMessageFormat = String.Empty;
public string PackageViewModelRemovingPackageMessageFormat = String.Empty;
public TestableUpdatedPackageViewModel()
: this(new FakePackageManagementService())
{
}
public TestableUpdatedPackageViewModel(FakePackageManagementService packageManagementService)
: this(
new FakePackage(),
packageManagementService,
new FakeLicenseAcceptanceService(),
new FakeMessageReporter())
{
}
public TestableUpdatedPackageViewModel(
FakePackage package,
FakePackageManagementService packageManagementService,
FakeLicenseAcceptanceService licenseAcceptanceService,
FakeMessageReporter messageReporter)
: base(
package,
packageManagementService,
licenseAcceptanceService,
messageReporter)
{
this.FakePackage = package;
this.FakePackageManagementService = packageManagementService;
this.FakeLicenseAcceptanceService = licenseAcceptanceService;
this.FakeMessageReporter = messageReporter;
this.FakeSourcePackageRepository = FakePackageManagementService.FakeActivePackageRepository;
}
protected override string AddingPackageMessageFormat {
get { return PackageViewModelAddingPackageMessageFormat; }
}
protected override string RemovingPackageMessageFormat {
get { return PackageViewModelRemovingPackageMessageFormat; }
}
}
}

41
src/AddIns/Misc/PackageManagement/Test/Src/Helpers/UpdatePackageHelper.cs

@ -0,0 +1,41 @@ @@ -0,0 +1,41 @@
// Copyright (c) AlphaSierraPapa for the SharpDevelop Team (for details please see \doc\copyright.txt)
// This code is distributed under the GNU LGPL (for details please see \doc\license.txt)
using System;
using System.Collections.Generic;
using ICSharpCode.PackageManagement;
using ICSharpCode.PackageManagement.Design;
using NuGet;
namespace PackageManagement.Tests.Helpers
{
public class UpdatePackageHelper
{
PackageManagementService packageManagementService;
public FakePackage TestPackage = new FakePackage() {
Id = "Test"
};
public FakePackageRepository PackageRepository = new FakePackageRepository();
public List<PackageOperation> PackageOperations = new List<PackageOperation>();
public UpdatePackageHelper(PackageManagementService packageManagementService)
{
this.packageManagementService = packageManagementService;
}
public void UpdateTestPackage()
{
packageManagementService.UpdatePackage(PackageRepository, TestPackage, PackageOperations);
}
public FakePackage AddPackageInstallOperation()
{
var package = new FakePackage("Package to install");
var operation = new PackageOperation(package, PackageAction.Install);
PackageOperations.Add(operation);
return package;
}
}
}

79
src/AddIns/Misc/PackageManagement/Test/Src/PackageManagementServiceTests.cs

@ -25,6 +25,7 @@ namespace PackageManagement.Tests @@ -25,6 +25,7 @@ namespace PackageManagement.Tests
TestableProject testProject;
InstallPackageHelper installPackageHelper;
UninstallPackageHelper uninstallPackageHelper;
UpdatePackageHelper updatePackageHelper;
FakePackageManagementOutputMessagesView fakeOutputMessagesView;
void CreatePackageSources()
@ -55,6 +56,7 @@ namespace PackageManagement.Tests @@ -55,6 +56,7 @@ namespace PackageManagement.Tests
installPackageHelper = new InstallPackageHelper(packageManagementService);
uninstallPackageHelper = new UninstallPackageHelper(packageManagementService);
updatePackageHelper = new UpdatePackageHelper(packageManagementService);
}
FakePackage AddOneFakePackageToPackageRepositoryFactoryRepository(string id)
@ -938,5 +940,82 @@ namespace PackageManagement.Tests @@ -938,5 +940,82 @@ namespace PackageManagement.Tests
Assert.AreEqual(expectedProject, actualProject);
}
[Test]
public void UpdatePackage_PackageAndRepositoryPassed_PackageInstalled()
{
CreatePackageManagementService();
updatePackageHelper.UpdateTestPackage();
var expectedPackage = updatePackageHelper.TestPackage;
var actualPackage = fakePackageManagerFactory.FakePackageManager.PackagePassedToUpdatePackage;
Assert.AreEqual(expectedPackage, actualPackage);
}
[Test]
public void UpdatePackage_PackageAndRepositoryPassed_RepositoryUsedToCreatePackageManager()
{
CreatePackageManagementService();
updatePackageHelper.UpdateTestPackage();
var expectedRepository = updatePackageHelper.PackageRepository;
var actualRepository = fakePackageManagerFactory.PackageRepositoryPassedToCreatePackageManager;
Assert.AreEqual(expectedRepository, actualRepository);
}
[Test]
public void UpdatePackage_PackageAndRepositoryPassed_PackageOperationsUsedToUpdatePackage()
{
CreatePackageManagementService();
updatePackageHelper.UpdateTestPackage();
var expectedOperations = updatePackageHelper.PackageOperations;
var actualOperations = fakePackageManagerFactory.FakePackageManager.PackageOperationsPassedToUpdatePackage;
Assert.AreEqual(expectedOperations, actualOperations);
}
[Test]
public void UpdatePackage_PackageAndRepositoryPassed_ProjectBrowserIsRefreshed()
{
CreatePackageManagementService();
updatePackageHelper.UpdateTestPackage();
bool refreshed = fakeProjectService.IsRefreshProjectBrowserCalled;
Assert.IsTrue(refreshed);
}
[Test]
public void UpdatePackage_PackageAndRepositoryPassed_PackageUpdateIsAddedToRecentPackagesRepository()
{
CreatePackageManagementService();
updatePackageHelper.UpdateTestPackage();
var recentPackages = packageManagementService.RecentPackageRepository.GetPackages();
var expectedPackages = new FakePackage[] {
updatePackageHelper.TestPackage
};
PackageCollectionAssert.AreEqual(expectedPackages, recentPackages);
}
[Test]
public void UpdatePackage_PackageAndRepositoryPassed_PackageInstalledEventIsFired()
{
CreatePackageManagementService();
IPackage package = null;
packageManagementService.PackageInstalled += (sender, e) => {
package = fakePackageManagerFactory.FakePackageManager.PackagePassedToUpdatePackage;
};
updatePackageHelper.UpdateTestPackage();
Assert.AreEqual(installPackageHelper.TestPackage, package);
}
}
}

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

@ -106,7 +106,7 @@ namespace PackageManagement.Tests @@ -106,7 +106,7 @@ namespace PackageManagement.Tests
return package;
}
FakePackage InstallPackageWithOnePackageOperation(PackageOperation operation)
FakePackage InstallPackageWithPackageOperations(PackageOperation operation)
{
var operations = new PackageOperation[] {
operation
@ -181,6 +181,24 @@ namespace PackageManagement.Tests @@ -181,6 +181,24 @@ namespace PackageManagement.Tests
return packageManager.GetInstallPackageOperations(package, true);
}
FakePackage UpdatePackageWithNoPackageOperations()
{
FakePackage package = CreateFakePackage();
var operations = new List<PackageOperation>();
packageManager.UpdatePackage(package, operations);
return package;
}
FakePackage UpdatePackageWithPackageOperations(PackageOperation operation)
{
var operations = new PackageOperation[] {
operation
};
FakePackage package = CreateFakePackage();
packageManager.UpdatePackage(package, operations);
return package;
}
[Test]
public void ProjectManager_InstanceCreated_SourceRepositoryIsSharedRepositoryPassedToPackageManager()
{
@ -276,7 +294,7 @@ namespace PackageManagement.Tests @@ -276,7 +294,7 @@ namespace PackageManagement.Tests
CreateTestableProjectManager();
PackageOperation operation = CreateOneInstallPackageOperation();
InstallPackageWithOnePackageOperation(operation);
InstallPackageWithPackageOperations(operation);
Assert.AreEqual(operation.Package, fakeSolutionSharedRepository.FirstPackageAdded);
}
@ -480,6 +498,37 @@ namespace PackageManagement.Tests @@ -480,6 +498,37 @@ namespace PackageManagement.Tests
bool result = fakePackageOperationResolverFactory.IgnoreDependenciesPassedToCreateInstallPackageOperationResolver;
Assert.IsTrue(result);
}
public void UpdatePackage_PackageInstanceAndNoPackageOperationsPassed_UpdatesReferenceInProject()
{
CreatePackageManager();
CreateTestableProjectManager();
var package = UpdatePackageWithNoPackageOperations();
Assert.AreEqual(package, testableProjectManager.PackagePassedToUpdatePackageReference);
}
[Test]
public void UpdatePackage_PackageInstanceAndNoPackageOperationsPassed_UpdatesDependenciesInProject()
{
CreatePackageManager();
CreateTestableProjectManager();
var package = UpdatePackageWithNoPackageOperations();
Assert.IsTrue(testableProjectManager.UpdateDependenciesPassedToUpdatePackageReference);
}
[Test]
public void UpdatePackage_PackageInstanceAndOneInstallPackageOperationPassed_PackageDefinedInOperationIsInstalledInLocalRepository()
{
CreatePackageManager();
CreateTestableProjectManager();
PackageOperation operation = CreateOneInstallPackageOperation();
UpdatePackageWithPackageOperations(operation);
Assert.AreEqual(operation.Package, fakeSolutionSharedRepository.FirstPackageAdded);
}
}
}

46
src/AddIns/Misc/PackageManagement/Test/Src/SharpDevelopProjectSystemTests.cs

@ -623,5 +623,51 @@ namespace PackageManagement.Tests @@ -623,5 +623,51 @@ namespace PackageManagement.Tests
Assert.AreEqual("test", projectSystem.DirectoryPassedToLogDeletedDirectory);
}
[Test]
public void AddFrameworkReference_SystemXmlToBeAdded_ReferenceAddedToProject()
{
CreateTestProject();
CreateProjectSystem(project);
projectSystem.AddFrameworkReference("System.Xml");
ReferenceProjectItem referenceItem = ProjectHelper.GetReference(project, "System.Xml");
ReferenceProjectItem expectedReferenceItem = new ReferenceProjectItem(project);
expectedReferenceItem.Include = "System.Xml";
ReferenceProjectItemAssert.AreEqual(expectedReferenceItem, referenceItem);
}
[Test]
public void AddFrameworkReference_SystemXmlToBeAdded_ProjectIsSaved()
{
CreateTestProject();
CreateProjectSystem(project);
projectSystem.AddFrameworkReference("System.Xml");
bool saved = project.IsSaved;
Assert.IsTrue(saved);
}
[Test]
public void AddFrameworkReference_SystemXmlToBeAdded_AddedReferenceIsLogged()
{
CreateTestProject();
CreateProjectSystem(project);
project.Name = "MyTestProject";
projectSystem.AddFrameworkReference("System.Xml");
var expectedReferenceAndProjectName = new ReferenceAndProjectName() {
Reference = "System.Xml",
Project = "MyTestProject"
};
Assert.AreEqual(expectedReferenceAndProjectName, projectSystem.ReferenceAndProjectNamePassedToLogAddedReferenceToProject);
}
}
}

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

@ -0,0 +1,58 @@ @@ -0,0 +1,58 @@
// Copyright (c) AlphaSierraPapa for the SharpDevelop Team (for details please see \doc\copyright.txt)
// This code is distributed under the GNU LGPL (for details please see \doc\license.txt)
using System;
using ICSharpCode.PackageManagement.Design;
using NUnit.Framework;
using PackageManagement.Tests.Helpers;
namespace PackageManagement.Tests
{
[TestFixture]
public class UpdatedPackageViewModelTests
{
TestableUpdatedPackageViewModel viewModel;
FakePackageManagementService fakePackageManagementService;
FakePackageRepository sourcePackageRepository;
void CreateViewModel()
{
viewModel = new TestableUpdatedPackageViewModel();
fakePackageManagementService = viewModel.FakePackageManagementService;
sourcePackageRepository = viewModel.FakeSourcePackageRepository;
}
[Test]
public void AddPackage_PackageAddedSuccessfully_PackageUpdatedUsingSourcePackageRepository()
{
CreateViewModel();
viewModel.AddPackage();
Assert.AreEqual(sourcePackageRepository, fakePackageManagementService.RepositoryPassedToUpdatePackage);
}
[Test]
public void AddPackage_PackageAddedSuccessfully_PackageUpdated()
{
CreateViewModel();
viewModel.AddPackage();
var expectedPackage = viewModel.FakePackage;
var actualPackage = fakePackageManagementService.PackagePassedToUpdatePackage;
Assert.AreEqual(expectedPackage, actualPackage);
}
[Test]
public void AddPackage_PackageAddedSuccessfully_PackageUpdatedUsingPackageOperations()
{
CreateViewModel();
viewModel.AddPackage();
var expectedOperations = viewModel.FakePackageOperationResolver.PackageOperations;
var actualOperations = fakePackageManagementService.PackageOperationsPassedToUpdatePackage;
Assert.AreEqual(expectedOperations, actualOperations);
}
}
}
Loading…
Cancel
Save