Browse Source

Fix null reference error message show in Manage Packages dialog.

Show no package sources error in Manage Packages dialog instead
of null reference error message.
pull/403/head
Matt Ward 11 years ago
parent
commit
f64ddc14d4
  1. 1
      src/AddIns/Misc/PackageManagement/Project/PackageManagement.csproj
  2. 2
      src/AddIns/Misc/PackageManagement/Project/Src/Design/FakeRegisteredPackageRepositories.cs
  3. 30
      src/AddIns/Misc/PackageManagement/Project/Src/NoPackageSourcesConfiguredException.cs
  4. 15
      src/AddIns/Misc/PackageManagement/Project/Src/RecentPackagesViewModel.cs
  5. 9
      src/AddIns/Misc/PackageManagement/Project/Src/RegisteredPackageRepositories.cs
  6. 2
      src/AddIns/Misc/PackageManagement/Test/Src/AvailablePackagesViewModelTests.cs
  7. 12
      src/AddIns/Misc/PackageManagement/Test/Src/Helpers/ExceptionThrowingRegisteredPackageRepositories.cs
  8. 21
      src/AddIns/Misc/PackageManagement/Test/Src/RecentPackagesViewModelTests.cs
  9. 13
      src/AddIns/Misc/PackageManagement/Test/Src/RegisteredPackageRepositoriesTests.cs

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

@ -225,6 +225,7 @@ @@ -225,6 +225,7 @@
<Compile Include="Src\ManagePackagesViewTitle.cs" />
<Compile Include="Src\MSBuildBasedProjectExtensions.cs" />
<Compile Include="Src\IPackageFromRepositoryExtensions.cs" />
<Compile Include="Src\NoPackageSourcesConfiguredException.cs" />
<Compile Include="Src\NuGetExePath.cs" />
<Compile Include="Src\NuGetPackageRestoreCommandLine.cs" />
<Compile Include="Src\PackageLicenseViewModel.cs" />

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

@ -37,7 +37,7 @@ namespace ICSharpCode.PackageManagement.Design @@ -37,7 +37,7 @@ namespace ICSharpCode.PackageManagement.Design
public FakePackageRepository FakeRecentPackageRepository = new FakePackageRepository();
public IRecentPackageRepository RecentPackageRepository {
public virtual IRecentPackageRepository RecentPackageRepository {
get { return FakeRecentPackageRepository; }
}

30
src/AddIns/Misc/PackageManagement/Project/Src/NoPackageSourcesConfiguredException.cs

@ -0,0 +1,30 @@ @@ -0,0 +1,30 @@
// 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;
namespace ICSharpCode.PackageManagement
{
public class NoPackageSourcesConfiguredException : Exception
{
public NoPackageSourcesConfiguredException()
: base("No package sources configured")
{
}
}
}

15
src/AddIns/Misc/PackageManagement/Project/Src/RecentPackagesViewModel.cs

@ -39,8 +39,6 @@ namespace ICSharpCode.PackageManagement @@ -39,8 +39,6 @@ namespace ICSharpCode.PackageManagement
packageViewModelFactory,
taskFactory)
{
recentPackagesRepository = registeredPackageRepositories.RecentPackageRepository;
this.packageManagementEvents = packageManagementEvents;
RegisterEvents();
}
@ -52,6 +50,15 @@ namespace ICSharpCode.PackageManagement @@ -52,6 +50,15 @@ namespace ICSharpCode.PackageManagement
packageManagementEvents.ParentPackagesUpdated += OnAddRecentPackage;
}
protected override void UpdateRepositoryBeforeReadPackagesTaskStarts()
{
try {
recentPackagesRepository = RegisteredPackageRepositories.RecentPackageRepository;
} catch (Exception ex) {
errorMessage = ex.Message;
}
}
protected override void OnDispose()
{
packageManagementEvents.ParentPackageInstalled -= OnAddRecentPackage;
@ -66,6 +73,10 @@ namespace ICSharpCode.PackageManagement @@ -66,6 +73,10 @@ namespace ICSharpCode.PackageManagement
protected override IQueryable<IPackage> GetAllPackages()
{
if (recentPackagesRepository == null) {
throw new ApplicationException(errorMessage);
}
return recentPackagesRepository.GetPackages();
}
}

9
src/AddIns/Misc/PackageManagement/Project/Src/RegisteredPackageRepositories.cs

@ -94,6 +94,8 @@ namespace ICSharpCode.PackageManagement @@ -94,6 +94,8 @@ namespace ICSharpCode.PackageManagement
void CreateActiveRepository()
{
EnsureActivePackageSourceIsConfigured();
if (ActivePackageSource.IsAggregate()) {
activePackageRepository = CreateAggregateRepository();
} else {
@ -101,6 +103,13 @@ namespace ICSharpCode.PackageManagement @@ -101,6 +103,13 @@ namespace ICSharpCode.PackageManagement
}
}
void EnsureActivePackageSourceIsConfigured()
{
if (ActivePackageSource == null) {
throw new NoPackageSourcesConfiguredException();
}
}
public void UpdatePackageSources(IEnumerable<PackageSource> updatedPackageSources)
{
PackageSources.Clear();

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

@ -390,7 +390,7 @@ namespace PackageManagement.Tests @@ -390,7 +390,7 @@ namespace PackageManagement.Tests
CreateViewModel(exceptionThrowingRegisteredPackageRepositories);
viewModel.ReadPackages();
ApplicationException ex = Assert.Throws<ApplicationException>(() => CompleteReadPackagesTask());
ApplicationException ex = Assert.Throws<ApplicationException>(CompleteReadPackagesTask);
Assert.AreEqual("Test", ex.Message);
}

12
src/AddIns/Misc/PackageManagement/Test/Src/Helpers/ExceptionThrowingRegisteredPackageRepositories.cs

@ -17,6 +17,7 @@ @@ -17,6 +17,7 @@
// DEALINGS IN THE SOFTWARE.
using System;
using ICSharpCode.PackageManagement;
using ICSharpCode.PackageManagement.Design;
using NuGet;
@ -34,5 +35,16 @@ namespace PackageManagement.Tests.Helpers @@ -34,5 +35,16 @@ namespace PackageManagement.Tests.Helpers
return base.ActiveRepository;
}
}
public Exception ExeptionToThrowWhenRecentPackageRepositoryAccessed { get; set; }
public override IRecentPackageRepository RecentPackageRepository {
get {
if (ExeptionToThrowWhenRecentPackageRepositoryAccessed != null) {
throw ExeptionToThrowWhenRecentPackageRepositoryAccessed;
}
return base.RecentPackageRepository;
}
}
}
}

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

@ -34,7 +34,12 @@ namespace PackageManagement.Tests @@ -34,7 +34,12 @@ namespace PackageManagement.Tests
void CreateViewModel()
{
registeredPackageRepositories = new FakeRegisteredPackageRepositories();
CreateViewModel(new FakeRegisteredPackageRepositories());
}
void CreateViewModel(FakeRegisteredPackageRepositories registeredPackageRepositories)
{
this.registeredPackageRepositories = registeredPackageRepositories;
taskFactory = new FakeTaskFactory();
var packageViewModelFactory = new FakePackageViewModelFactory();
packageManagementEvents = new PackageManagementEvents();
@ -133,5 +138,19 @@ namespace PackageManagement.Tests @@ -133,5 +138,19 @@ namespace PackageManagement.Tests
Assert.AreEqual(0, viewModel.PackageViewModels.Count);
}
[Test]
public void ReadPackages_ExceptionThrownWhenAccessingActiveRepository_ErrorMessageFromExceptionNotOverriddenByReadPackagesCall()
{
var registeredRepositories = new ExceptionThrowingRegisteredPackageRepositories();
registeredRepositories.ExeptionToThrowWhenRecentPackageRepositoryAccessed =
new Exception("Test");
CreateViewModel(registeredRepositories);
viewModel.ReadPackages();
ApplicationException ex = Assert.Throws<ApplicationException>(CompleteReadPackagesTask);
Assert.AreEqual("Test", ex.Message);
}
}
}

13
src/AddIns/Misc/PackageManagement/Test/Src/RegisteredPackageRepositoriesTests.cs

@ -330,5 +330,18 @@ namespace PackageManagement.Tests @@ -330,5 +330,18 @@ namespace PackageManagement.Tests
Assert.AreEqual(expectedPackageSource, activePackageSource);
}
[Test]
public void ActiveRepository_NullInOptionsAndNoEnabledPackageSources_ThrowsNoPackageSourcesConfiguredException()
{
CreateRegisteredPackageRepositories();
packageSourcesHelper.Options.ActivePackageSource = null;
registeredRepositories.PackageSources.Clear();
registeredRepositories.PackageSources.Add(new PackageSource("source") { IsEnabled = false });
Assert.Throws<NoPackageSourcesConfiguredException>(() => {
IPackageRepository repository = registeredRepositories.ActiveRepository;
});
}
}
}

Loading…
Cancel
Save