Skip to content
This repository was archived by the owner on Oct 16, 2020. It is now read-only.

Commit 74400d6

Browse files
committed
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.
1 parent b214b35 commit 74400d6

9 files changed

Lines changed: 95 additions & 129 deletions

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

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -17,6 +17,7 @@
1717
// DEALINGS IN THE SOFTWARE.
1818

1919
using System;
20+
using System.Linq;
2021
using NuGet;
2122

2223
namespace ICSharpCode.PackageManagement
@@ -45,7 +46,8 @@ public static string GetName(this IPackage package)
4546

4647
public static bool IsProjectPackage(this IPackage package)
4748
{
48-
return package.HasProjectContent();
49+
return package.HasProjectContent() ||
50+
package.DependencySets.SelectMany(p => p.Dependencies).Any();
4951
}
5052
}
5153
}

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

Lines changed: 0 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -275,11 +275,6 @@ protected virtual IQueryable<IPackage> GetAllPackages(string searchCriteria)
275275
return null;
276276
}
277277

278-
protected virtual bool IsProjectPackage (IPackage package)
279-
{
280-
return package.IsProjectPackage();
281-
}
282-
283278
/// <summary>
284279
/// Allows filtering of the packages before paging the results. Call base class method
285280
/// to run default filtering.

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

Lines changed: 0 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -119,12 +119,10 @@
119119
<Compile Include="Src\Helpers\PropertiesHelper.cs" />
120120
<Compile Include="Src\Helpers\SelectedProjectCollectionAssert.cs" />
121121
<Compile Include="Src\Helpers\SolutionHelper.cs" />
122-
<Compile Include="Src\Helpers\TestableAvailablepackagesViewModel.cs" />
123122
<Compile Include="Src\Helpers\TestableInstalledPackageViewModel.cs" />
124123
<Compile Include="Src\Helpers\TestablePackageFromRepository.cs" />
125124
<Compile Include="Src\Helpers\TestablePackagesViewModels.cs" />
126125
<Compile Include="Src\Helpers\TestableProjectBehaviour.cs" />
127-
<Compile Include="Src\Helpers\TestableRecentPackagesViewModel.cs" />
128126
<Compile Include="Src\Helpers\TestableSelectedProjectsForUpdatedPackages.cs" />
129127
<Compile Include="Src\Helpers\TestableSolutionSnapshot.cs" />
130128
<Compile Include="Src\Helpers\TestableUpdatePackagesAction.cs" />

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

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -30,7 +30,7 @@ namespace PackageManagement.Tests
3030
[TestFixture]
3131
public class AvailablePackagesViewModelTests
3232
{
33-
TestableAvailablePackagesViewModel viewModel;
33+
AvailablePackagesViewModel viewModel;
3434
PackageManagementEvents packageManagementEvents;
3535
FakeRegisteredPackageRepositories registeredPackageRepositories;
3636
ExceptionThrowingRegisteredPackageRepositories exceptionThrowingRegisteredPackageRepositories;
@@ -53,7 +53,7 @@ void CreateViewModel(FakeRegisteredPackageRepositories registeredPackageReposito
5353
var packageViewModelFactory = new FakePackageViewModelFactory();
5454
packageManagementEvents = new PackageManagementEvents();
5555

56-
viewModel = new TestableAvailablePackagesViewModel(
56+
viewModel = new AvailablePackagesViewModel(
5757
new FakePackageManagementSolution(),
5858
packageManagementEvents,
5959
registeredPackageRepositories,

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

Lines changed: 0 additions & 55 deletions
This file was deleted.

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

Lines changed: 3 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -21,25 +21,22 @@
2121

2222
namespace PackageManagement.Tests.Helpers
2323
{
24-
/// <summary>
25-
/// Description of TestablePackagesViewModels.
26-
/// </summary>
2724
public class TestablePackagesViewModels : PackagesViewModels
2825
{
2926
public TestablePackagesViewModels(
3027
IPackageManagementSolution solution,
3128
IRegisteredPackageRepositories registeredPackageRepositories,
3229
IThreadSafePackageManagementEvents packageManagementEvents,
3330
IPackageActionRunner actionRunner,
34-
ITaskFactory taskFactory) : base()
31+
ITaskFactory taskFactory)
3532
{
3633
var packageViewModelFactory = new PackageViewModelFactory(solution, packageManagementEvents, actionRunner);
3734
var updatedPackageViewModelFactory = new UpdatedPackageViewModelFactory(packageViewModelFactory);
3835

39-
AvailablePackagesViewModel = new TestableAvailablePackagesViewModel(solution, packageManagementEvents, registeredPackageRepositories, packageViewModelFactory, taskFactory);
36+
AvailablePackagesViewModel = new AvailablePackagesViewModel(solution, packageManagementEvents, registeredPackageRepositories, packageViewModelFactory, taskFactory);
4037
InstalledPackagesViewModel = new InstalledPackagesViewModel(solution, packageManagementEvents, registeredPackageRepositories, packageViewModelFactory, taskFactory);
4138
UpdatedPackagesViewModel = new UpdatedPackagesViewModel(solution, packageManagementEvents, registeredPackageRepositories, updatedPackageViewModelFactory, taskFactory);
42-
RecentPackagesViewModel = new TestableRecentPackagesViewModel(solution, packageManagementEvents, registeredPackageRepositories, packageViewModelFactory, taskFactory);
39+
RecentPackagesViewModel = new RecentPackagesViewModel(solution, packageManagementEvents, registeredPackageRepositories, packageViewModelFactory, taskFactory);
4340
}
4441
}
4542
}

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

Lines changed: 0 additions & 55 deletions
This file was deleted.

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

Lines changed: 85 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -32,7 +32,28 @@ public class IPackageExtensionsTests
3232

3333
void CreatePackageWithSummary(string summary)
3434
{
35-
package = new FakePackage() { Summary = summary };
35+
package = new FakePackage { Summary = summary };
36+
}
37+
38+
void CreatePackageWithTitle(string title)
39+
{
40+
package = new FakePackage { Title = title };
41+
}
42+
43+
void CreatePackageWithNoProjectContent()
44+
{
45+
package = new FakePackage();
46+
}
47+
48+
void CreatePackageWithProjectContent()
49+
{
50+
CreatePackageWithNoProjectContent();
51+
package.FrameworkAssembliesList.Add(new FrameworkAssemblyReference("System.Xml"));
52+
}
53+
54+
void AddDependencyToPackage()
55+
{
56+
package.AddDependency("Id");
3657
}
3758

3859
[Test]
@@ -66,5 +87,68 @@ public void SummaryOrDescription_PackageHasDescriptionButEmptySummary_ReturnsDes
6687

6788
Assert.AreEqual("description", result);
6889
}
90+
91+
[Test]
92+
public void GetName_PackageHasTitle_ReturnsTitle()
93+
{
94+
CreatePackageWithTitle("title");
95+
96+
string result = package.GetName();
97+
98+
Assert.AreEqual("title", result);
99+
}
100+
101+
[Test]
102+
public void GetName_PackageHasNullTitle_ReturnsPackageId()
103+
{
104+
CreatePackageWithTitle(null);
105+
package.Id = "Id";
106+
107+
string result = package.GetName();
108+
109+
Assert.AreEqual("Id", result);
110+
}
111+
112+
[Test]
113+
public void GetName_PackageHasEmptyStringTitle_ReturnsPackageId()
114+
{
115+
CreatePackageWithTitle(String.Empty);
116+
package.Id = "Id";
117+
118+
string result = package.GetName();
119+
120+
Assert.AreEqual("Id", result);
121+
}
122+
123+
[Test]
124+
public void IsProjectPackage_PackageHasNoProjectContent_ReturnsFalse()
125+
{
126+
CreatePackageWithNoProjectContent();
127+
128+
bool result = package.IsProjectPackage();
129+
130+
Assert.IsFalse(result);
131+
}
132+
133+
[Test]
134+
public void IsProjectPackage_PackageHasProjectContent_ReturnsTrie()
135+
{
136+
CreatePackageWithProjectContent();
137+
138+
bool result = package.IsProjectPackage();
139+
140+
Assert.IsTrue(result);
141+
}
142+
143+
[Test]
144+
public void IsProjectPackage_PackageHasNoProjectContentButHasDependency_ReturnsTrue()
145+
{
146+
CreatePackageWithNoProjectContent();
147+
AddDependencyToPackage();
148+
149+
bool result = package.IsProjectPackage();
150+
151+
Assert.IsTrue(result);
152+
}
69153
}
70154
}

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

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -27,7 +27,7 @@ namespace PackageManagement.Tests
2727
[TestFixture]
2828
public class RecentPackagesViewModelTests
2929
{
30-
TestableRecentPackagesViewModel viewModel;
30+
RecentPackagesViewModel viewModel;
3131
PackageManagementEvents packageManagementEvents;
3232
FakeRegisteredPackageRepositories registeredPackageRepositories;
3333
FakeTaskFactory taskFactory;
@@ -43,7 +43,7 @@ void CreateViewModel(FakeRegisteredPackageRepositories registeredPackageReposito
4343
taskFactory = new FakeTaskFactory();
4444
var packageViewModelFactory = new FakePackageViewModelFactory();
4545
packageManagementEvents = new PackageManagementEvents();
46-
viewModel = new TestableRecentPackagesViewModel(
46+
viewModel = new RecentPackagesViewModel(
4747
new FakePackageManagementSolution(),
4848
packageManagementEvents,
4949
registeredPackageRepositories,

0 commit comments

Comments
 (0)