Browse Source

Save the selected NuGet package source.

pull/15/head
mrward 15 years ago
parent
commit
99d51fb502
  1. 25
      src/AddIns/Misc/PackageManagement/Project/Src/PackageManagementOptions.cs
  2. 2
      src/AddIns/Misc/PackageManagement/Project/Src/PackageManagementService.cs
  3. 1
      src/AddIns/Misc/PackageManagement/Test/PackageManagement.Tests.csproj
  4. 116
      src/AddIns/Misc/PackageManagement/Test/Src/PackageManagementOptionsTests.cs
  5. 40
      src/AddIns/Misc/PackageManagement/Test/Src/PackageManagementServiceTests.cs

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

@ -12,10 +12,12 @@ namespace ICSharpCode.PackageManagement @@ -12,10 +12,12 @@ namespace ICSharpCode.PackageManagement
{
public class PackageManagementOptions
{
Properties properties;
const string PackageSourcesPropertyName = "PackageSources";
const string PackageDirectoryPropertyName = "PackagesDirectory";
const string ActivePackageSourcePropertyName = "ActivePackageSource";
RegisteredPackageSources packageSources;
Properties properties;
public PackageManagementOptions(Properties properties)
{
@ -68,5 +70,26 @@ namespace ICSharpCode.PackageManagement @@ -68,5 +70,26 @@ namespace ICSharpCode.PackageManagement
get { return properties.Get(PackageDirectoryPropertyName, "packages"); }
set { properties.Set(PackageDirectoryPropertyName, value); }
}
public PackageSource ActivePackageSource {
get {
if (properties.Contains(ActivePackageSourcePropertyName)) {
var registeredPackageSource = properties.Get<RegisteredPackageSource>(ActivePackageSourcePropertyName, null);
var packageSource = registeredPackageSource.ToPackageSource();
if (PackageSources.Contains(packageSource)) {
return packageSource;
}
}
return null;
}
set {
if (value == null) {
properties.Remove(ActivePackageSourcePropertyName);
} else {
var packageSource = new RegisteredPackageSource(value);
properties.Set(ActivePackageSourcePropertyName, packageSource);
}
}
}
}
}

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

@ -111,6 +111,7 @@ namespace ICSharpCode.PackageManagement @@ -111,6 +111,7 @@ namespace ICSharpCode.PackageManagement
public PackageSource ActivePackageSource {
get {
activePackageSource = options.ActivePackageSource;
if (activePackageSource == null) {
activePackageSource = options.PackageSources[0];
}
@ -119,6 +120,7 @@ namespace ICSharpCode.PackageManagement @@ -119,6 +120,7 @@ namespace ICSharpCode.PackageManagement
set {
if (activePackageSource != value) {
activePackageSource = value;
options.ActivePackageSource = value;
activePackageRepository = null;
}
}

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

@ -105,6 +105,7 @@ @@ -105,6 +105,7 @@
<Compile Include="Src\InstalledPackagesViewModelTests.cs" />
<Compile Include="Src\LicenseAcceptanceViewModelTests.cs" />
<Compile Include="Src\OpenHyperlinkCommandTests.cs" />
<Compile Include="Src\PackageManagementOptionsTests.cs" />
<Compile Include="Src\PackageManagementOptionsViewModelTests.cs" />
<Compile Include="Src\PackageManagementServiceTests.cs" />
<Compile Include="Src\PackageRepositoryPathsTests.cs" />

116
src/AddIns/Misc/PackageManagement/Test/Src/PackageManagementOptionsTests.cs

@ -0,0 +1,116 @@ @@ -0,0 +1,116 @@
// 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.IO;
using System.Text;
using System.Xml;
using ICSharpCode.Core;
using ICSharpCode.PackageManagement;
using NuGet;
using NUnit.Framework;
namespace PackageManagement.Tests
{
[TestFixture]
public class PackageManagementOptionsTests
{
Properties properties;
PackageManagementOptions options;
void CreateOptions()
{
CreateProperties();
CreateOptions(properties);
}
void CreateProperties()
{
properties = new Properties();
}
void CreateOptions(Properties properties)
{
options = new PackageManagementOptions(properties);
}
void SaveOptions()
{
StringBuilder xml = new StringBuilder();
StringWriter stringWriter = new StringWriter(xml);
using (XmlTextWriter writer = new XmlTextWriter(stringWriter)) {
properties.WriteProperties(writer);
}
}
[Test]
public void ActivePackageSource_NoInitialPropertiesSet_ReturnsNull()
{
CreateOptions();
PackageSource actualSource = options.ActivePackageSource;
Assert.IsNull(options.ActivePackageSource);
}
[Test]
public void ActivePackageSource_ActivePackageSourceNonNullWhenPropertiesSaved_OnReloadingPropertiesActivatePackageSourceRemembered()
{
CreateOptions();
var expectedSource = new PackageSource("http://source-url", "Test");
options.PackageSources.Add(expectedSource);
options.ActivePackageSource = expectedSource;
CreateOptions(properties);
PackageSource actualSource = options.ActivePackageSource;
Assert.AreEqual(expectedSource, actualSource);
}
[Test]
public void ActivePackageSource_SetToNullAfterHavingNonNullValue_ReturnsNull()
{
CreateOptions();
var source = new PackageSource("http://source-url", "Test");
options.ActivePackageSource = source;
options.ActivePackageSource = null;
PackageSource actualSource = options.ActivePackageSource;
Assert.IsNull(actualSource);
}
[Test]
public void ActivePackageSource_SaveActivePackageSource_DoesNotThrowSerializationError()
{
CreateOptions();
var source = new PackageSource("http://source-url", "Test");
options.ActivePackageSource = source;
Assert.DoesNotThrow(() => SaveOptions());
}
[Test]
public void ActivePackageSource_SaveDefaultNullActivePackageSource_DoesNotThrowSerializationError()
{
CreateOptions();
var source = options.ActivePackageSource;
Assert.DoesNotThrow(() => SaveOptions());
Assert.IsNull(source);
}
[Test]
public void ActivePackageSource_ActivePackageSourceRemovedFromPackageSources_ActivePackageSourceSetToNull()
{
CreateOptions();
var source = new PackageSource("http://source-url", "Test");
options.PackageSources.Add(source);
var differentSource = new PackageSource("http://different-url", "Test2");
options.ActivePackageSource = differentSource;
var activeSource = options.ActivePackageSource;
Assert.IsNull(activeSource);
}
}
}

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

@ -22,16 +22,26 @@ namespace PackageManagement.Tests @@ -22,16 +22,26 @@ namespace PackageManagement.Tests
FakePackageManagementProjectService fakeProjectService;
TestableProject testProject;
void CreatePackageSources()
{
packageSourcesHelper = new OneRegisteredPackageSourceHelper();
}
void CreatePackageManagementService()
{
CreatePackageSources();
CreatePackageManagementService(packageSourcesHelper.Options);
}
void CreatePackageManagementService(PackageManagementOptions options)
{
testProject = ProjectHelper.CreateTestProject();
fakePackageRepositoryFactory = new FakePackageRepositoryFactory();
fakePackageManagerFactory = new FakePackageManagerFactory();
fakeProjectService = new FakePackageManagementProjectService();
fakeProjectService.CurrentProject = testProject;
packageSourcesHelper = new OneRegisteredPackageSourceHelper();
packageManagementService =
new PackageManagementService(packageSourcesHelper.Options,
new PackageManagementService(options,
fakePackageRepositoryFactory,
fakePackageManagerFactory,
fakeProjectService);
@ -314,5 +324,31 @@ namespace PackageManagement.Tests @@ -314,5 +324,31 @@ namespace PackageManagement.Tests
Assert.AreEqual(0, fakePackageRepositoryFactory.PackageSourcesPassedToCreateRepository.Count);
}
[Test]
public void ActivePackageSource_ChangedToNonNullPackageSource_SavedInOptions()
{
CreatePackageManagementService();
packageManagementService.Options.ActivePackageSource = null;
var packageSource = new PackageSource("http://source-url", "Test");
packageManagementService.Options.PackageSources.Add(packageSource);
packageManagementService.ActivePackageSource = packageSource;
Assert.AreEqual(packageSource, packageManagementService.Options.ActivePackageSource);
}
[Test]
public void ActivePackageSource_ActivePackageSourceNonNullInOptionsBeforeInstanceCreate_ActivePackageSourceReadFromOptions()
{
CreatePackageSources();
var packageSource = new PackageSource("http://source-url", "Test");
packageSourcesHelper.Options.PackageSources.Add(packageSource);
packageSourcesHelper.Options.ActivePackageSource = packageSource;
CreatePackageManagementService(packageSourcesHelper.Options);
Assert.AreEqual(packageSource, packageManagementService.ActivePackageSource);
}
}
}

Loading…
Cancel
Save