Browse Source

Fix #422 - Unable to install Microsoft.CodeAnalysis NuGet package

If a package has only dependencies on other packages and no other
content then treat the package as project package and not as a
solution package.
pull/429/head
Matt Ward 11 years ago
parent
commit
74400d6919
  1. 4
      src/AddIns/Misc/PackageManagement/Project/Src/IPackageExtensions.cs
  2. 5
      src/AddIns/Misc/PackageManagement/Project/Src/PackagesViewModel.cs
  3. 2
      src/AddIns/Misc/PackageManagement/Test/PackageManagement.Tests.csproj
  4. 4
      src/AddIns/Misc/PackageManagement/Test/Src/AvailablePackagesViewModelTests.cs
  5. 55
      src/AddIns/Misc/PackageManagement/Test/Src/Helpers/TestableAvailablepackagesViewModel.cs
  6. 9
      src/AddIns/Misc/PackageManagement/Test/Src/Helpers/TestablePackagesViewModels.cs
  7. 55
      src/AddIns/Misc/PackageManagement/Test/Src/Helpers/TestableRecentPackagesViewModel.cs
  8. 86
      src/AddIns/Misc/PackageManagement/Test/Src/IPackageExtensionsTests.cs
  9. 4
      src/AddIns/Misc/PackageManagement/Test/Src/RecentPackagesViewModelTests.cs

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

@ -17,6 +17,7 @@ @@ -17,6 +17,7 @@
// DEALINGS IN THE SOFTWARE.
using System;
using System.Linq;
using NuGet;
namespace ICSharpCode.PackageManagement
@ -45,7 +46,8 @@ namespace ICSharpCode.PackageManagement @@ -45,7 +46,8 @@ namespace ICSharpCode.PackageManagement
public static bool IsProjectPackage(this IPackage package)
{
return package.HasProjectContent();
return package.HasProjectContent() ||
package.DependencySets.SelectMany(p => p.Dependencies).Any();
}
}
}

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

@ -275,11 +275,6 @@ namespace ICSharpCode.PackageManagement @@ -275,11 +275,6 @@ namespace ICSharpCode.PackageManagement
return null;
}
protected virtual bool IsProjectPackage (IPackage package)
{
return package.IsProjectPackage();
}
/// <summary>
/// Allows filtering of the packages before paging the results. Call base class method
/// to run default filtering.

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

@ -119,12 +119,10 @@ @@ -119,12 +119,10 @@
<Compile Include="Src\Helpers\PropertiesHelper.cs" />
<Compile Include="Src\Helpers\SelectedProjectCollectionAssert.cs" />
<Compile Include="Src\Helpers\SolutionHelper.cs" />
<Compile Include="Src\Helpers\TestableAvailablepackagesViewModel.cs" />
<Compile Include="Src\Helpers\TestableInstalledPackageViewModel.cs" />
<Compile Include="Src\Helpers\TestablePackageFromRepository.cs" />
<Compile Include="Src\Helpers\TestablePackagesViewModels.cs" />
<Compile Include="Src\Helpers\TestableProjectBehaviour.cs" />
<Compile Include="Src\Helpers\TestableRecentPackagesViewModel.cs" />
<Compile Include="Src\Helpers\TestableSelectedProjectsForUpdatedPackages.cs" />
<Compile Include="Src\Helpers\TestableSolutionSnapshot.cs" />
<Compile Include="Src\Helpers\TestableUpdatePackagesAction.cs" />

4
src/AddIns/Misc/PackageManagement/Test/Src/AvailablePackagesViewModelTests.cs

@ -30,7 +30,7 @@ namespace PackageManagement.Tests @@ -30,7 +30,7 @@ namespace PackageManagement.Tests
[TestFixture]
public class AvailablePackagesViewModelTests
{
TestableAvailablePackagesViewModel viewModel;
AvailablePackagesViewModel viewModel;
PackageManagementEvents packageManagementEvents;
FakeRegisteredPackageRepositories registeredPackageRepositories;
ExceptionThrowingRegisteredPackageRepositories exceptionThrowingRegisteredPackageRepositories;
@ -53,7 +53,7 @@ namespace PackageManagement.Tests @@ -53,7 +53,7 @@ namespace PackageManagement.Tests
var packageViewModelFactory = new FakePackageViewModelFactory();
packageManagementEvents = new PackageManagementEvents();
viewModel = new TestableAvailablePackagesViewModel(
viewModel = new AvailablePackagesViewModel(
new FakePackageManagementSolution(),
packageManagementEvents,
registeredPackageRepositories,

55
src/AddIns/Misc/PackageManagement/Test/Src/Helpers/TestableAvailablepackagesViewModel.cs

@ -1,55 +0,0 @@ @@ -1,55 +0,0 @@
// Copyright (c) 2014 AlphaSierraPapa for the SharpDevelop Team
//
// Permission is hereby granted, free of charge, to any person obtaining a copy of this
// software and associated documentation files (the "Software"), to deal in the Software
// without restriction, including without limitation the rights to use, copy, modify, merge,
// publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons
// to whom the Software is furnished to do so, subject to the following conditions:
//
// The above copyright notice and this permission notice shall be included in all copies or
// substantial portions of the Software.
//
// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED,
// INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR
// PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE
// FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR
// OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER
// DEALINGS IN THE SOFTWARE.
using System;
using ICSharpCode.PackageManagement;
namespace PackageManagement.Tests.Helpers
{
/// <summary>
/// Description of TestableAvailablepackagesViewModel.
/// </summary>
public class TestableAvailablePackagesViewModel : AvailablePackagesViewModel
{
public TestableAvailablePackagesViewModel(
IPackageManagementSolution solution,
IPackageManagementEvents packageManagementEvents,
IRegisteredPackageRepositories registeredPackageRepositories,
IPackageViewModelFactory packageViewModelFactory,
ITaskFactory taskFactory)
: base(
solution,
packageManagementEvents,
registeredPackageRepositories,
packageViewModelFactory,
taskFactory)
{
IsProjectPackageReturnsValue = true;
IsProjectPackageIsCalled = false;
}
protected override bool IsProjectPackage(NuGet.IPackage package)
{
IsProjectPackageIsCalled = true;
return IsProjectPackageReturnsValue;
}
public bool IsProjectPackageReturnsValue { get; set; }
public bool IsProjectPackageIsCalled { get; set; }
}
}

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

@ -21,9 +21,6 @@ using ICSharpCode.PackageManagement; @@ -21,9 +21,6 @@ using ICSharpCode.PackageManagement;
namespace PackageManagement.Tests.Helpers
{
/// <summary>
/// Description of TestablePackagesViewModels.
/// </summary>
public class TestablePackagesViewModels : PackagesViewModels
{
public TestablePackagesViewModels(
@ -31,15 +28,15 @@ namespace PackageManagement.Tests.Helpers @@ -31,15 +28,15 @@ namespace PackageManagement.Tests.Helpers
IRegisteredPackageRepositories registeredPackageRepositories,
IThreadSafePackageManagementEvents packageManagementEvents,
IPackageActionRunner actionRunner,
ITaskFactory taskFactory) : base()
ITaskFactory taskFactory)
{
var packageViewModelFactory = new PackageViewModelFactory(solution, packageManagementEvents, actionRunner);
var updatedPackageViewModelFactory = new UpdatedPackageViewModelFactory(packageViewModelFactory);
AvailablePackagesViewModel = new TestableAvailablePackagesViewModel(solution, packageManagementEvents, registeredPackageRepositories, packageViewModelFactory, taskFactory);
AvailablePackagesViewModel = new AvailablePackagesViewModel(solution, packageManagementEvents, registeredPackageRepositories, packageViewModelFactory, taskFactory);
InstalledPackagesViewModel = new InstalledPackagesViewModel(solution, packageManagementEvents, registeredPackageRepositories, packageViewModelFactory, taskFactory);
UpdatedPackagesViewModel = new UpdatedPackagesViewModel(solution, packageManagementEvents, registeredPackageRepositories, updatedPackageViewModelFactory, taskFactory);
RecentPackagesViewModel = new TestableRecentPackagesViewModel(solution, packageManagementEvents, registeredPackageRepositories, packageViewModelFactory, taskFactory);
RecentPackagesViewModel = new RecentPackagesViewModel(solution, packageManagementEvents, registeredPackageRepositories, packageViewModelFactory, taskFactory);
}
}
}

55
src/AddIns/Misc/PackageManagement/Test/Src/Helpers/TestableRecentPackagesViewModel.cs

@ -1,55 +0,0 @@ @@ -1,55 +0,0 @@
// Copyright (c) 2014 AlphaSierraPapa for the SharpDevelop Team
//
// Permission is hereby granted, free of charge, to any person obtaining a copy of this
// software and associated documentation files (the "Software"), to deal in the Software
// without restriction, including without limitation the rights to use, copy, modify, merge,
// publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons
// to whom the Software is furnished to do so, subject to the following conditions:
//
// The above copyright notice and this permission notice shall be included in all copies or
// substantial portions of the Software.
//
// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED,
// INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR
// PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE
// FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR
// OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER
// DEALINGS IN THE SOFTWARE.
using System;
using ICSharpCode.PackageManagement;
namespace PackageManagement.Tests.Helpers
{
/// <summary>
/// Description of TestableRecentPackagesViewModel.
/// </summary>
public class TestableRecentPackagesViewModel : RecentPackagesViewModel
{
public TestableRecentPackagesViewModel(
IPackageManagementSolution solution,
IPackageManagementEvents packageManagementEvents,
IRegisteredPackageRepositories registeredPackageRepositories,
IPackageViewModelFactory packageViewModelFactory,
ITaskFactory taskFactory)
: base(
solution,
packageManagementEvents,
registeredPackageRepositories,
packageViewModelFactory,
taskFactory)
{
IsProjectPackageReturnsValue = true;
IsProjectPackageIsCalled = false;
}
protected override bool IsProjectPackage(NuGet.IPackage package)
{
IsProjectPackageIsCalled = true;
return IsProjectPackageReturnsValue;
}
public bool IsProjectPackageReturnsValue { get; set; }
public bool IsProjectPackageIsCalled { get; set; }
}
}

86
src/AddIns/Misc/PackageManagement/Test/Src/IPackageExtensionsTests.cs

@ -32,7 +32,28 @@ namespace PackageManagement.Tests @@ -32,7 +32,28 @@ namespace PackageManagement.Tests
void CreatePackageWithSummary(string summary)
{
package = new FakePackage() { Summary = summary };
package = new FakePackage { Summary = summary };
}
void CreatePackageWithTitle(string title)
{
package = new FakePackage { Title = title };
}
void CreatePackageWithNoProjectContent()
{
package = new FakePackage();
}
void CreatePackageWithProjectContent()
{
CreatePackageWithNoProjectContent();
package.FrameworkAssembliesList.Add(new FrameworkAssemblyReference("System.Xml"));
}
void AddDependencyToPackage()
{
package.AddDependency("Id");
}
[Test]
@ -66,5 +87,68 @@ namespace PackageManagement.Tests @@ -66,5 +87,68 @@ namespace PackageManagement.Tests
Assert.AreEqual("description", result);
}
[Test]
public void GetName_PackageHasTitle_ReturnsTitle()
{
CreatePackageWithTitle("title");
string result = package.GetName();
Assert.AreEqual("title", result);
}
[Test]
public void GetName_PackageHasNullTitle_ReturnsPackageId()
{
CreatePackageWithTitle(null);
package.Id = "Id";
string result = package.GetName();
Assert.AreEqual("Id", result);
}
[Test]
public void GetName_PackageHasEmptyStringTitle_ReturnsPackageId()
{
CreatePackageWithTitle(String.Empty);
package.Id = "Id";
string result = package.GetName();
Assert.AreEqual("Id", result);
}
[Test]
public void IsProjectPackage_PackageHasNoProjectContent_ReturnsFalse()
{
CreatePackageWithNoProjectContent();
bool result = package.IsProjectPackage();
Assert.IsFalse(result);
}
[Test]
public void IsProjectPackage_PackageHasProjectContent_ReturnsTrie()
{
CreatePackageWithProjectContent();
bool result = package.IsProjectPackage();
Assert.IsTrue(result);
}
[Test]
public void IsProjectPackage_PackageHasNoProjectContentButHasDependency_ReturnsTrue()
{
CreatePackageWithNoProjectContent();
AddDependencyToPackage();
bool result = package.IsProjectPackage();
Assert.IsTrue(result);
}
}
}

4
src/AddIns/Misc/PackageManagement/Test/Src/RecentPackagesViewModelTests.cs

@ -27,7 +27,7 @@ namespace PackageManagement.Tests @@ -27,7 +27,7 @@ namespace PackageManagement.Tests
[TestFixture]
public class RecentPackagesViewModelTests
{
TestableRecentPackagesViewModel viewModel;
RecentPackagesViewModel viewModel;
PackageManagementEvents packageManagementEvents;
FakeRegisteredPackageRepositories registeredPackageRepositories;
FakeTaskFactory taskFactory;
@ -43,7 +43,7 @@ namespace PackageManagement.Tests @@ -43,7 +43,7 @@ namespace PackageManagement.Tests
taskFactory = new FakeTaskFactory();
var packageViewModelFactory = new FakePackageViewModelFactory();
packageManagementEvents = new PackageManagementEvents();
viewModel = new TestableRecentPackagesViewModel(
viewModel = new RecentPackagesViewModel(
new FakePackageManagementSolution(),
packageManagementEvents,
registeredPackageRepositories,

Loading…
Cancel
Save