Browse Source

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

pull/637/merge
Peter Forstmeier 10 years ago
parent
commit
f1b78f0fea
  1. 17
      src/AddIns/Misc/PackageManagement/Project/Src/Design/FakePackageManagementProject.cs
  2. 2
      src/AddIns/Misc/PackageManagement/Project/Src/Design/FakePackageManager.cs
  3. 2
      src/AddIns/Misc/PackageManagement/Project/Src/IPackageManagementProject.cs
  4. 25
      src/AddIns/Misc/PackageManagement/Project/Src/PackageManagementProject.cs
  5. 6
      src/AddIns/Misc/PackageManagement/Project/Src/ProcessPackageAction.cs
  6. 4
      src/AddIns/Misc/PackageManagement/Project/Src/SharpDevelopPackageManager.cs
  7. 5
      src/AddIns/Misc/PackageManagement/Project/Src/UninstallPackageAction.cs
  8. 68
      src/AddIns/Misc/PackageManagement/Test/Src/PackageManagementProjectTests.cs
  9. 22
      src/AddIns/Misc/PackageManagement/Test/Src/SharpDevelopPackageManagerTests.cs
  10. 26
      src/AddIns/Misc/PackageManagement/Test/Src/UninstallPackageActionTests.cs

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

@ -299,5 +299,22 @@ namespace ICSharpCode.PackageManagement.Design @@ -299,5 +299,22 @@ namespace ICSharpCode.PackageManagement.Design
public IPackageConstraintProvider ConstraintProvider { get; set; }
public FrameworkName TargetFramework { get; set; }
public FakePackageRepository FakeLocalRepository = new FakePackageRepository();
public IPackage FindPackage(string packageId, SemanticVersion version)
{
return FakeLocalRepository.FindPackage(packageId, version);
}
public void AddFakePackageToLocalRepository(string packageId)
{
FakeLocalRepository.AddFakePackage(packageId);
}
public FakePackage AddFakePackageToLocalRepository(string packageId, string version)
{
return FakeLocalRepository.AddFakePackageWithVersion(packageId, version);
}
}
}

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

@ -60,11 +60,13 @@ namespace ICSharpCode.PackageManagement.Design @@ -60,11 +60,13 @@ namespace ICSharpCode.PackageManagement.Design
public ISharpDevelopProjectManager ProjectManager { get; set; }
public FakePackageRepository FakeSourceRepository = new FakePackageRepository();
public FakePackageRepository FakeLocalRepository = new FakePackageRepository();
public FakePackageManager()
{
ProjectManager = FakeProjectManager;
SourceRepository = FakeSourceRepository;
LocalRepository = FakeLocalRepository;
}
public bool ForceRemovePassedToUninstallPackage;

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

@ -65,5 +65,7 @@ namespace ICSharpCode.PackageManagement @@ -65,5 +65,7 @@ namespace ICSharpCode.PackageManagement
UpdatePackagesAction CreateUpdatePackagesAction();
void RunPackageOperations(IEnumerable<PackageOperation> expectedOperations);
IPackage FindPackage(string packageId, SemanticVersion version);
}
}

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

@ -195,5 +195,30 @@ namespace ICSharpCode.PackageManagement @@ -195,5 +195,30 @@ namespace ICSharpCode.PackageManagement
return NullConstraintProvider.Instance;
}
}
public IPackage FindPackage(string packageId, SemanticVersion version)
{
IPackage package = projectManager.LocalRepository.FindPackage(packageId, version);
if (package != null) {
return package;
}
if (version != null) {
return packageManager.LocalRepository.FindPackage(packageId, version);
}
List<IPackage> packages = packageManager.LocalRepository.FindPackagesById(packageId).ToList();
if (packages.Count > 1) {
throw CreateAmbiguousPackageException(packageId);
}
return packages.FirstOrDefault();
}
InvalidOperationException CreateAmbiguousPackageException(string packageId)
{
string message = String.Format("Multiple versions of '{0}' found. Please specify the version.", packageId);
return new InvalidOperationException(message);
}
}
}

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

@ -125,16 +125,16 @@ namespace ICSharpCode.PackageManagement @@ -125,16 +125,16 @@ namespace ICSharpCode.PackageManagement
void GetPackageIfMissing()
{
if (Package == null) {
FindPackage();
Package = FindPackage();
}
if (Package == null) {
ThrowPackageNotFoundError(PackageId);
}
}
void FindPackage()
protected virtual IPackage FindPackage()
{
Package = Project.SourceRepository.FindPackage(
return Project.SourceRepository.FindPackage(
PackageId,
PackageVersion,
Project.ConstraintProvider,

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

@ -108,10 +108,14 @@ namespace ICSharpCode.PackageManagement @@ -108,10 +108,14 @@ namespace ICSharpCode.PackageManagement
public override void UninstallPackage(IPackage package, bool forceRemove, bool removeDependencies)
{
if (package.IsProjectPackage()) {
ProjectManager.RemovePackageReference(package.Id, forceRemove, removeDependencies);
if (!IsPackageReferencedByOtherProjects(package)) {
base.UninstallPackage(package, forceRemove, removeDependencies);
}
} else {
base.UninstallPackage(package, forceRemove, removeDependencies);
}
}
public void UninstallPackageFromSolutionRepository(IPackage package)

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

@ -52,5 +52,10 @@ namespace ICSharpCode.PackageManagement @@ -52,5 +52,10 @@ namespace ICSharpCode.PackageManagement
var files = new PackageFiles(Package);
return files.HasUninstallPackageScript();
}
protected override IPackage FindPackage()
{
return Project.FindPackage(PackageId, PackageVersion);
}
}
}

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

@ -805,5 +805,73 @@ namespace PackageManagement.Tests @@ -805,5 +805,73 @@ namespace PackageManagement.Tests
Assert.AreEqual(expectedName, targetFramework);
}
[Test]
public void FindPackage_PackageExistsInProjectLocalRepository_PackageReturned()
{
CreateProject();
FakePackage package = fakeProjectManager.FakeLocalRepository.AddFakePackageWithVersion("Test", "1.0");
IPackage packageFound = project.FindPackage("Test", new SemanticVersion("1.0"));
Assert.AreEqual(package, packageFound);
}
[Test]
public void FindPackage_PackageWithDifferentVersionExistsInProjectLocalRepository_PackageNotFound()
{
CreateProject();
fakeProjectManager.FakeLocalRepository.AddFakePackageWithVersion("Test", "1.0");
IPackage packageFound = project.FindPackage("Test", new SemanticVersion("2.1"));
Assert.IsNull(packageFound);
}
[Test]
public void FindPackage_PackageWithSameVersionExistsInSolutionPackageRepository_PackageReturned()
{
CreateProject();
FakePackage package = fakePackageManager.FakeLocalRepository.AddFakePackageWithVersion("Test", "1.0");
IPackage packageFound = project.FindPackage("Test", new SemanticVersion("1.0"));
Assert.AreEqual(package, packageFound);
}
[Test]
public void FindPackage_PackageWithDifferentVersionExistsInSolutionPackageRepository_PackageNotFound()
{
CreateProject();
fakePackageManager.FakeLocalRepository.AddFakePackageWithVersion("Test", "1.0");
IPackage packageFound = project.FindPackage("Test", new SemanticVersion("2.1"));
Assert.IsNull(packageFound);
}
[Test]
public void FindPackage_PackageWithoutVersionWhichExistsInSolutionPackageRepository_PackageReturned()
{
CreateProject();
FakePackage package = fakePackageManager.FakeLocalRepository.AddFakePackageWithVersion("Test", "1.0");
IPackage packageFound = project.FindPackage("Test", null);
Assert.AreEqual(package, packageFound);
}
[Test]
public void FindPackage_PackageWithoutVersionWhenPackageExistsWithMultipleVersionsInSolutionPackageRepository_InvalidOperationExceptionThrown()
{
CreateProject();
fakePackageManager.FakeLocalRepository.AddFakePackageWithVersion("Test", "1.0");
fakePackageManager.FakeLocalRepository.AddFakePackageWithVersion("Test", "1.1");
InvalidOperationException ex =
Assert.Throws<InvalidOperationException>(() => project.FindPackage("Test", null));
Assert.AreEqual("Multiple versions of 'Test' found. Please specify the version.", ex.Message);
}
}
}

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

@ -98,7 +98,9 @@ namespace PackageManagement.Tests @@ -98,7 +98,9 @@ namespace PackageManagement.Tests
FakePackage CreateFakePackage(string id = "Test", string version = "1.0.0.0")
{
return new FakePackage(id, version);
var package = new FakePackage(id, version);
package.FrameworkAssembliesList.Add(new FrameworkAssemblyReference("System.Xml"));
return package;
}
FakePackage InstallPackage()
@ -632,7 +634,7 @@ namespace PackageManagement.Tests @@ -632,7 +634,7 @@ namespace PackageManagement.Tests
CreatePackageManager();
CreateTestableProjectManager();
var package = new FakePackage("MyPackageId", "1.4.5.2");
FakePackage package = CreateFakePackage("MyPackageId", "1.4.5.2");
testableProjectManager.FakeLocalRepository.FakePackages.Add(package);
fakeSolutionSharedRepository.FakePackages.Add(package);
@ -1116,5 +1118,21 @@ namespace PackageManagement.Tests @@ -1116,5 +1118,21 @@ namespace PackageManagement.Tests
Assert.IsTrue(fakeSolutionSharedRepository.FakePackages.Contains(installedPackage));
}
[Test]
public void UninstallPackage_SolutionLevelPackage_PackageIsRemovedFromSharedSolutionRepositoryAndProjectManagerNotUsed()
{
CreatePackageManager();
CreateTestableProjectManager();
var package = new FakePackage("MyPackage", "1.0");
fakeSolutionSharedRepository.FakePackages.Add(package);
packageManager.UninstallPackage(package);
bool containsPackage = fakeSolutionSharedRepository.FakePackages.Contains(package);
Assert.IsFalse(containsPackage);
Assert.IsNull(testableProjectManager.PackagePassedToRemovePackageReference);
}
}
}

26
src/AddIns/Misc/PackageManagement/Test/Src/UninstallPackageActionTests.cs

@ -42,14 +42,14 @@ namespace PackageManagement.Tests @@ -42,14 +42,14 @@ namespace PackageManagement.Tests
uninstallPackageHelper = new UninstallPackageHelper(action);
}
FakePackage AddOnePackageToProjectSourceRepository(string packageId)
FakePackage AddOnePackageToProjectLocalRepository(string packageId)
{
return fakeProject.FakeSourceRepository.AddFakePackage(packageId);
return fakeProject.FakeLocalRepository.AddFakePackage(packageId);
}
FakePackage AddOnePackageToProjectSourceRepository(string packageId, string version)
FakePackage AddOnePackageToProjectLocalRepository(string packageId, string version)
{
return fakeProject.FakeSourceRepository.AddFakePackageWithVersion(packageId, version);
return fakeProject.FakeLocalRepository.AddFakePackageWithVersion(packageId, version);
}
void AddFileToPackageBeingUninstalled(string fileName)
@ -90,7 +90,7 @@ namespace PackageManagement.Tests @@ -90,7 +90,7 @@ namespace PackageManagement.Tests
public void Execute_PackageObjectPassedAndForceRemoveIsFalse_PackageIsNotForcefullyRemoved()
{
CreateAction();
fakeProject.AddFakePackageToSourceRepository("PackageId");
fakeProject.AddFakePackageToLocalRepository("PackageId");
uninstallPackageHelper.ForceRemove = false;
uninstallPackageHelper.UninstallPackageById("PackageId");
@ -103,7 +103,7 @@ namespace PackageManagement.Tests @@ -103,7 +103,7 @@ namespace PackageManagement.Tests
public void Execute_PackageObjectPassedAndForceRemoveIsTrue_PackageIsForcefullyRemoved()
{
CreateAction();
fakeProject.AddFakePackageToSourceRepository("PackageId");
fakeProject.AddFakePackageToLocalRepository("PackageId");
uninstallPackageHelper.ForceRemove = true;
uninstallPackageHelper.UninstallPackageById("PackageId");
@ -116,7 +116,7 @@ namespace PackageManagement.Tests @@ -116,7 +116,7 @@ namespace PackageManagement.Tests
public void Execute_PackageObjectPassedAndRemoveDependenciesIsFalse_PackageDependenciesAreNotRemoved()
{
CreateAction();
fakeProject.AddFakePackageToSourceRepository("PackageId");
fakeProject.AddFakePackageToLocalRepository("PackageId");
uninstallPackageHelper.RemoveDependencies = false;
uninstallPackageHelper.UninstallPackageById("PackageId");
@ -129,7 +129,7 @@ namespace PackageManagement.Tests @@ -129,7 +129,7 @@ namespace PackageManagement.Tests
public void Execute_PackageObjectPassedAndRemoveDependenciesIsTrue_PackageDependenciesAreRemoved()
{
CreateAction();
fakeProject.AddFakePackageToSourceRepository("PackageId");
fakeProject.AddFakePackageToLocalRepository("PackageId");
uninstallPackageHelper.RemoveDependencies = true;
uninstallPackageHelper.UninstallPackageById("PackageId");
@ -142,7 +142,7 @@ namespace PackageManagement.Tests @@ -142,7 +142,7 @@ namespace PackageManagement.Tests
public void Execute_PackageIdSpecifiedAndForceRemoveIsTrue_PackageIsForcefullyRemoved()
{
CreateAction();
fakeProject.AddFakePackageToSourceRepository("PackageId");
fakeProject.AddFakePackageToLocalRepository("PackageId");
uninstallPackageHelper.ForceRemove = true;
uninstallPackageHelper.UninstallPackageById("PackageId");
@ -155,7 +155,7 @@ namespace PackageManagement.Tests @@ -155,7 +155,7 @@ namespace PackageManagement.Tests
public void Execute_PackageIdSpecifiedAndRemoveDependenciesIsTrue_PackageDependenciesAreRemoved()
{
CreateAction();
fakeProject.AddFakePackageToSourceRepository("PackageId");
fakeProject.AddFakePackageToLocalRepository("PackageId");
uninstallPackageHelper.RemoveDependencies = true;
uninstallPackageHelper.UninstallPackageById("PackageId");
@ -169,9 +169,9 @@ namespace PackageManagement.Tests @@ -169,9 +169,9 @@ namespace PackageManagement.Tests
{
CreateAction();
FakePackage recentPackage = AddOnePackageToProjectSourceRepository("PackageId", "1.2.0.0");
FakePackage oldPackage = AddOnePackageToProjectSourceRepository("PackageId", "1.0.0.0");
FakePackage package = AddOnePackageToProjectSourceRepository("PackageId", "1.1.0");
FakePackage recentPackage = AddOnePackageToProjectLocalRepository("PackageId", "1.2.0.0");
FakePackage oldPackage = AddOnePackageToProjectLocalRepository("PackageId", "1.0.0.0");
FakePackage package = AddOnePackageToProjectLocalRepository("PackageId", "1.1.0");
uninstallPackageHelper.Version = package.Version;
uninstallPackageHelper.UninstallPackageById("PackageId");

Loading…
Cancel
Save