From 464759343d88981bb3aa133f4392b5e72f54e886 Mon Sep 17 00:00:00 2001 From: mrward Date: Sat, 7 May 2011 15:46:22 +0100 Subject: [PATCH] Use NuGet.Config file to store package sources. --- .../PackageManagement/PackageManagement.sln | 2 +- .../Project/PackageManagement.csproj | 1 + ...gnTimeRegisteredPackageSourcesViewModel.cs | 2 +- .../Design/FakePackageManagementService.cs | 2 +- .../Project/Src/Design/FakeSettings.cs | 115 ++++++++++++ .../Project/Src/PackageManagementOptions.cs | 32 ++-- .../Project/Src/RegisteredPackageSources.cs | 124 +++++++++++++ .../Test/PackageManagement.Tests.csproj | 2 +- .../OneRegisteredPackageSourceHelper.cs | 7 +- .../TestablePackageManagementOptions.cs | 28 +++ .../Test/Src/PackageManagementOptionsTests.cs | 175 +++++++++++++++--- .../Test/Src/PackageRepositoryPathsTests.cs | 2 +- .../Test/Src/RegisteredPackageSourcesTests.cs | 66 ------- .../RegisteredPackageSourcesViewModelTests.cs | 2 +- .../SharpDevelopPackageManagerFactoryTests.cs | 2 +- .../Src/SharpDevelopPackageManagerTests.cs | 2 +- 16 files changed, 444 insertions(+), 120 deletions(-) create mode 100644 src/AddIns/Misc/PackageManagement/Project/Src/Design/FakeSettings.cs create mode 100644 src/AddIns/Misc/PackageManagement/Test/Src/Helpers/TestablePackageManagementOptions.cs delete mode 100644 src/AddIns/Misc/PackageManagement/Test/Src/RegisteredPackageSourcesTests.cs diff --git a/src/AddIns/Misc/PackageManagement/PackageManagement.sln b/src/AddIns/Misc/PackageManagement/PackageManagement.sln index 8b2b5afbc5..2a1dbc49e4 100644 --- a/src/AddIns/Misc/PackageManagement/PackageManagement.sln +++ b/src/AddIns/Misc/PackageManagement/PackageManagement.sln @@ -1,7 +1,7 @@  Microsoft Visual Studio Solution File, Format Version 11.00 # Visual Studio 2010 -# SharpDevelop 4.1.0.7289-alpha +# SharpDevelop 4.1.0.7374-alpha Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "PackageManagement", "Project\PackageManagement.csproj", "{AE4AB0FA-6087-4480-AF37-0FA1452B3DA1}" EndProject Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "PackageManagement.Tests", "Test\PackageManagement.Tests.csproj", "{56E98A01-8398-4A08-9578-C7337711A52B}" diff --git a/src/AddIns/Misc/PackageManagement/Project/PackageManagement.csproj b/src/AddIns/Misc/PackageManagement/Project/PackageManagement.csproj index 37ca520242..a1537b1d6a 100644 --- a/src/AddIns/Misc/PackageManagement/Project/PackageManagement.csproj +++ b/src/AddIns/Misc/PackageManagement/Project/PackageManagement.csproj @@ -84,6 +84,7 @@ + diff --git a/src/AddIns/Misc/PackageManagement/Project/Src/Design/DesignTimeRegisteredPackageSourcesViewModel.cs b/src/AddIns/Misc/PackageManagement/Project/Src/Design/DesignTimeRegisteredPackageSourcesViewModel.cs index 346149f46c..d17603935b 100644 --- a/src/AddIns/Misc/PackageManagement/Project/Src/Design/DesignTimeRegisteredPackageSourcesViewModel.cs +++ b/src/AddIns/Misc/PackageManagement/Project/Src/Design/DesignTimeRegisteredPackageSourcesViewModel.cs @@ -11,7 +11,7 @@ namespace ICSharpCode.PackageManagement.Design public class DesignTimeRegisteredPackageSourcesViewModel : RegisteredPackageSourcesViewModel { public DesignTimeRegisteredPackageSourcesViewModel() - : this(new PackageManagementOptions(new Properties())) + : this(new PackageManagementOptions(new Properties(), new FakeSettings())) { } diff --git a/src/AddIns/Misc/PackageManagement/Project/Src/Design/FakePackageManagementService.cs b/src/AddIns/Misc/PackageManagement/Project/Src/Design/FakePackageManagementService.cs index 5c5b211bdb..b212b15087 100644 --- a/src/AddIns/Misc/PackageManagement/Project/Src/Design/FakePackageManagementService.cs +++ b/src/AddIns/Misc/PackageManagement/Project/Src/Design/FakePackageManagementService.cs @@ -13,7 +13,7 @@ namespace ICSharpCode.PackageManagement.Design { public event EventHandler PackageInstalled; - PackageManagementOptions options = new PackageManagementOptions(new Properties()); + PackageManagementOptions options = new PackageManagementOptions(new Properties(), new FakeSettings()); public List PackageOperationsPassedToInstallPackage = new List(); protected virtual void OnPackageInstalled() diff --git a/src/AddIns/Misc/PackageManagement/Project/Src/Design/FakeSettings.cs b/src/AddIns/Misc/PackageManagement/Project/Src/Design/FakeSettings.cs new file mode 100644 index 0000000000..0cb7af1f7e --- /dev/null +++ b/src/AddIns/Misc/PackageManagement/Project/Src/Design/FakeSettings.cs @@ -0,0 +1,115 @@ +// 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.Collections.Generic; +using NuGet; + +namespace ICSharpCode.PackageManagement.Design +{ + public class FakeSettings : ISettings + { + public List> PackageSources + = new List>(); + + public List> ActivePackageSourceSettings = + new List>(); + + public Dictionary>> Sections + = new Dictionary>>(); + + public FakeSettings() + { + Sections.Add(RegisteredPackageSources.PackageSourcesSectionName, PackageSources); + Sections.Add(RegisteredPackageSources.ActivePackageSourceSectionName, ActivePackageSourceSettings); + } + + public string GetValue(string section, string key) + { + throw new NotImplementedException(); + } + + public IList> GetValues(string section) + { + return Sections[section]; + } + + public void AddFakePackageSource(PackageSource packageSource) + { + var valuePair = new KeyValuePair(packageSource.Name, packageSource.Source); + PackageSources.Add(valuePair); + } + + public Dictionary> SavedSectionValues = + new Dictionary>(); + + public void SetValue(string section, string key, string value) + { + SavedSectionValues.Remove(section); + SavedSectionValues.Add(section, new KeyValuePair(key, value)); + } + + public KeyValuePair GetValuePassedToSetValueForActivePackageSourceSection() + { + return SavedSectionValues[RegisteredPackageSources.ActivePackageSourceSectionName]; + } + + public void SetValues(string section, IList> values) + { + SavedSectionValueLists.Remove(section); + SavedSectionValueLists.Add(section, values); + } + + public Dictionary>> SavedSectionValueLists + = new Dictionary>>(); + + public IList> GetValuesPassedToSetValuesForPackageSourcesSection() + { + return SavedSectionValueLists[RegisteredPackageSources.PackageSourcesSectionName]; + } + + public bool DeleteValue(string section, string key) + { + throw new NotImplementedException(); + } + + public List SectionsDeleted = new List(); + + public bool DeleteSection(string section) + { + SectionsDeleted.Add(section); + return true; + } + + public bool IsPackageSourcesSectionDeleted { + get { + return SectionsDeleted.Contains(RegisteredPackageSources.PackageSourcesSectionName); + } + } + + public bool IsActivePackageSourceSectionDeleted { + get { + return SectionsDeleted.Contains(RegisteredPackageSources.ActivePackageSourceSectionName); + } + } + + public void SetFakeActivePackageSource(PackageSource packageSource) + { + ActivePackageSourceSettings.Clear(); + var valuePair = new KeyValuePair(packageSource.Name, packageSource.Source); + ActivePackageSourceSettings.Add(valuePair); + } + + public void MakeActivePackageSourceSectionNull() + { + Sections.Remove(RegisteredPackageSources.ActivePackageSourceSectionName); + Sections.Add(RegisteredPackageSources.ActivePackageSourceSectionName, null); + } + + public void MakePackageSourceSectionsNull() + { + Sections.Remove(RegisteredPackageSources.PackageSourcesSectionName); + Sections.Add(RegisteredPackageSources.PackageSourcesSectionName, null); + } + } +} diff --git a/src/AddIns/Misc/PackageManagement/Project/Src/PackageManagementOptions.cs b/src/AddIns/Misc/PackageManagement/Project/Src/PackageManagementOptions.cs index 9735fb7fa2..799529fdfd 100644 --- a/src/AddIns/Misc/PackageManagement/Project/Src/PackageManagementOptions.cs +++ b/src/AddIns/Misc/PackageManagement/Project/Src/PackageManagementOptions.cs @@ -19,11 +19,18 @@ namespace ICSharpCode.PackageManagement RegisteredPackageSources packageSources; Properties properties; + ISettings settings; List recentPackages; - public PackageManagementOptions(Properties properties) + public PackageManagementOptions(Properties properties, ISettings settings) { this.properties = properties; + this.settings = settings; + } + + public PackageManagementOptions(Properties properties) + : this(properties, Settings.UserSettings) + { } public PackageManagementOptions() @@ -34,8 +41,7 @@ namespace ICSharpCode.PackageManagement public RegisteredPackageSources PackageSources { get { if (packageSources == null) { - packageSources = new RegisteredPackageSources(GetSavedPackageSources()); - packageSources.CollectionChanged += PackageSourcesChanged; + packageSources = new RegisteredPackageSources(settings); } return packageSources; } @@ -74,24 +80,8 @@ namespace ICSharpCode.PackageManagement } public PackageSource ActivePackageSource { - get { - if (properties.Contains(ActivePackageSourcePropertyName)) { - var registeredPackageSource = properties.Get(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); - } - } + get { return PackageSources.ActivePackageSource; } + set { PackageSources.ActivePackageSource = value; } } public IList RecentPackages { diff --git a/src/AddIns/Misc/PackageManagement/Project/Src/RegisteredPackageSources.cs b/src/AddIns/Misc/PackageManagement/Project/Src/RegisteredPackageSources.cs index e1847a224e..e53da0c67b 100644 --- a/src/AddIns/Misc/PackageManagement/Project/Src/RegisteredPackageSources.cs +++ b/src/AddIns/Misc/PackageManagement/Project/Src/RegisteredPackageSources.cs @@ -5,6 +5,7 @@ using System; using System.Collections.Generic; using System.Collections.ObjectModel; using System.Collections.Specialized; +using System.Linq; using ICSharpCode.Core; using NuGet; @@ -15,14 +16,60 @@ namespace ICSharpCode.PackageManagement public static readonly string DefaultPackageSourceUrl = "http://go.microsoft.com/fwlink/?LinkID=206669"; public static readonly string DefaultPackageSourceName = "NuGet Official Package Source"; + public static readonly string PackageSourcesSectionName = "packageSources"; + public static readonly string ActivePackageSourceSectionName = "activePackageSource"; + public static readonly PackageSource DefaultPackageSource = new PackageSource(DefaultPackageSourceUrl, DefaultPackageSourceName); + ISettings settings; + PackageSource activePackageSource; + public RegisteredPackageSources(IEnumerable packageSources) { AddPackageSources(packageSources); AddDefaultPackageSourceIfNoRegisteredPackageSources(); } + + public RegisteredPackageSources(ISettings settings) + { + this.settings = settings; + AddPackageSources(); + AddDefaultPackageSourceIfNoRegisteredPackageSources(); + ReadActivePackageSource(); + } + + void AddPackageSources() + { + foreach (PackageSource source in GetPackageSourcesFromSettings()) { + Add(source); + } + } + + IEnumerable GetPackageSourcesFromSettings() + { + IList> savedPackageSources = settings.GetValues(PackageSourcesSectionName); + if (HasAny(savedPackageSources)) { + foreach (KeyValuePair packageSource in savedPackageSources) { + yield return CreatePackageSourceFromKeyValuePair(packageSource); + } + } + } + + bool HasAny(IList> packageSources) + { + if (packageSources != null) { + return packageSources.Any(); + } + return false; + } + + PackageSource CreatePackageSourceFromKeyValuePair(KeyValuePair savedPackageSource) + { + string source = savedPackageSource.Value; + string name = savedPackageSource.Key; + return new PackageSource(source, name); + } void AddPackageSources(IEnumerable packageSources) { @@ -45,5 +92,82 @@ namespace ICSharpCode.PackageManagement public bool HasMultiplePackageSources { get { return Count > 1; } } + + void ReadActivePackageSource() + { + IList> packageSources = settings.GetValues(ActivePackageSourceSectionName); + if (HasAny(packageSources)) { + activePackageSource = CreatePackageSourceFromKeyValuePair(packageSources[0]); + } + } + + protected override void OnCollectionChanged(NotifyCollectionChangedEventArgs e) + { + base.OnCollectionChanged(e); + UpdatePackageSourceSettingsWithChanges(); + } + + void UpdatePackageSourceSettingsWithChanges() + { + if (settings != null) { + IList> newPackageSourceSettings = GetSettingsFromPackageSources(); + SavePackageSourceSettings(newPackageSourceSettings); + } + } + + IList> GetSettingsFromPackageSources() + { + var settings = new List>(); + foreach (PackageSource source in this) { + settings.Add(CreateKeyValuePairFromPackageSource(source)); + } + return settings; + } + + KeyValuePair CreateKeyValuePairFromPackageSource(PackageSource source) + { + return new KeyValuePair(source.Name, source.Source); + } + + void SavePackageSourceSettings(IList> newPackageSourceSettings) + { + settings.DeleteSection(PackageSourcesSectionName); + settings.SetValues(PackageSourcesSectionName, newPackageSourceSettings); + } + + public PackageSource ActivePackageSource { + get { + if (Contains(activePackageSource)) { + return activePackageSource; + } + return null; + } + set { + activePackageSource = value; + if (activePackageSource == null) { + RemoveActivePackageSourceSetting(); + } else { + UpdateActivePackageSourceSetting(); + } + } + } + + void RemoveActivePackageSourceSetting() + { + settings.DeleteSection(ActivePackageSourceSectionName); + } + + void UpdateActivePackageSourceSetting() + { + RemoveActivePackageSourceSetting(); + + KeyValuePair activePackageSourceSetting = CreateKeyValuePairFromPackageSource(activePackageSource); + SaveActivePackageSourceSetting(activePackageSourceSetting); + } + + void SaveActivePackageSourceSetting(KeyValuePair activePackageSource) + { + settings.SetValue(ActivePackageSourceSectionName, activePackageSource.Key, activePackageSource.Value); + } } } diff --git a/src/AddIns/Misc/PackageManagement/Test/PackageManagement.Tests.csproj b/src/AddIns/Misc/PackageManagement/Test/PackageManagement.Tests.csproj index 9daab03376..0e149ea9a0 100644 --- a/src/AddIns/Misc/PackageManagement/Test/PackageManagement.Tests.csproj +++ b/src/AddIns/Misc/PackageManagement/Test/PackageManagement.Tests.csproj @@ -97,6 +97,7 @@ + @@ -137,7 +138,6 @@ - diff --git a/src/AddIns/Misc/PackageManagement/Test/Src/Helpers/OneRegisteredPackageSourceHelper.cs b/src/AddIns/Misc/PackageManagement/Test/Src/Helpers/OneRegisteredPackageSourceHelper.cs index 0a13d7345f..b6505ec360 100644 --- a/src/AddIns/Misc/PackageManagement/Test/Src/Helpers/OneRegisteredPackageSourceHelper.cs +++ b/src/AddIns/Misc/PackageManagement/Test/Src/Helpers/OneRegisteredPackageSourceHelper.cs @@ -4,6 +4,7 @@ using System; using ICSharpCode.Core; using ICSharpCode.PackageManagement; +using ICSharpCode.PackageManagement.Design; using NuGet; namespace PackageManagement.Tests.Helpers @@ -11,7 +12,8 @@ namespace PackageManagement.Tests.Helpers public class OneRegisteredPackageSourceHelper { public RegisteredPackageSources RegisteredPackageSources; - public PackageManagementOptions Options; + public TestablePackageManagementOptions Options; + public FakeSettings FakeSettings; public PackageSource PackageSource = new PackageSource("http://sharpdevelop.com", "Test Package Source"); public OneRegisteredPackageSourceHelper() @@ -22,7 +24,8 @@ namespace PackageManagement.Tests.Helpers void CreateOneRegisteredPackageSource() { Properties properties = new Properties(); - Options = new PackageManagementOptions(properties); + Options = new TestablePackageManagementOptions(); + FakeSettings = Options.FakeSettings; RegisteredPackageSources = Options.PackageSources; AddOnePackageSource(); } diff --git a/src/AddIns/Misc/PackageManagement/Test/Src/Helpers/TestablePackageManagementOptions.cs b/src/AddIns/Misc/PackageManagement/Test/Src/Helpers/TestablePackageManagementOptions.cs new file mode 100644 index 0000000000..1493548853 --- /dev/null +++ b/src/AddIns/Misc/PackageManagement/Test/Src/Helpers/TestablePackageManagementOptions.cs @@ -0,0 +1,28 @@ +// 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 ICSharpCode.Core; +using ICSharpCode.PackageManagement; +using ICSharpCode.PackageManagement.Design; + +namespace PackageManagement.Tests.Helpers +{ + public class TestablePackageManagementOptions : PackageManagementOptions + { + public Properties Properties; + public FakeSettings FakeSettings; + + public TestablePackageManagementOptions() + : this(new Properties(), new FakeSettings()) + { + } + + public TestablePackageManagementOptions(Properties properties, FakeSettings fakeSettings) + : base(properties, fakeSettings) + { + this.Properties = properties; + this.FakeSettings = fakeSettings; + } + } +} diff --git a/src/AddIns/Misc/PackageManagement/Test/Src/PackageManagementOptionsTests.cs b/src/AddIns/Misc/PackageManagement/Test/Src/PackageManagementOptionsTests.cs index 84637cd9df..ea90a13a73 100644 --- a/src/AddIns/Misc/PackageManagement/Test/Src/PackageManagementOptionsTests.cs +++ b/src/AddIns/Misc/PackageManagement/Test/Src/PackageManagementOptionsTests.cs @@ -20,11 +20,13 @@ namespace PackageManagement.Tests { Properties properties; PackageManagementOptions options; + FakeSettings fakeSettings; void CreateOptions() { CreateProperties(); - CreateOptions(properties); + CreateSettings(); + CreateOptions(properties, fakeSettings); } void CreateProperties() @@ -32,9 +34,26 @@ namespace PackageManagement.Tests properties = new Properties(); } + void CreateSettings() + { + fakeSettings = new FakeSettings(); + } + void CreateOptions(Properties properties) { - options = new PackageManagementOptions(properties); + CreateSettings(); + CreateOptions(properties, fakeSettings); + } + + void CreateOptions(FakeSettings fakeSettings) + { + CreateProperties(); + options = new PackageManagementOptions(properties, fakeSettings); + } + + void CreateOptions(Properties properties, FakeSettings fakeSettings) + { + options = new PackageManagementOptions(properties, fakeSettings); } void SaveOptions() @@ -46,6 +65,82 @@ namespace PackageManagement.Tests } } + [Test] + public void PackageSources_OnePackageSourceInSettings_ContainsSinglePackageSourceFromSettings() + { + CreateSettings(); + var packageSource = new PackageSource("http://codeplex.com", "Test"); + fakeSettings.AddFakePackageSource(packageSource); + CreateOptions(fakeSettings); + + var actualSources = options.PackageSources; + + List expectedSources = new List(); + expectedSources.Add(packageSource); + + Assert.AreEqual(expectedSources, actualSources); + } + + [Test] + public void PackageSources_NoPackageSourceInSavedSettings_ContainsDefaultPackageSource() + { + CreateSettings(); + CreateOptions(fakeSettings); + + List expectedSources = new List(); + expectedSources.Add(RegisteredPackageSources.DefaultPackageSource); + + var actualPackageSources = options.PackageSources; + + CollectionAssert.AreEqual(expectedSources, actualPackageSources); + } + + [Test] + public void PackageSources_OnePackageSourceAdded_PackageSourceSavedInSettings() + { + CreateSettings(); + CreateOptions(fakeSettings); + var registeredPackageSources = options.PackageSources; + + var packageSource = new PackageSource("http://codeplex.com", "Test"); + registeredPackageSources.Clear(); + registeredPackageSources.Add(packageSource); + + var expectedSavedPackageSourceSettings = new List>(); + expectedSavedPackageSourceSettings.Add(new KeyValuePair("Test", "http://codeplex.com")); + + var actualSavedPackageSourceSettings = fakeSettings.GetValuesPassedToSetValuesForPackageSourcesSection(); + + Assert.AreEqual(expectedSavedPackageSourceSettings, actualSavedPackageSourceSettings); + } + + [Test] + public void PackageSources_OnePackageSourceAdded_PackageSourcesSectionDeletedFromSettings() + { + CreateSettings(); + CreateOptions(fakeSettings); + var registeredPackageSources = options.PackageSources; + + var packageSource = new PackageSource("http://codeplex.com", "Test"); + registeredPackageSources.Clear(); + registeredPackageSources.Add(packageSource); + + bool sectionDeleted = fakeSettings.IsPackageSourcesSectionDeleted; + + Assert.IsTrue(sectionDeleted); + } + + [Test] + public void PackageSources_SettingsFilesDoesNotExistSoSettingsReturnsNullForPackageSourcesSection_DoesNotThrowException() + { + CreateSettings(); + fakeSettings.MakePackageSourceSectionsNull(); + CreateOptions(fakeSettings); + + RegisteredPackageSources packageSources = null; + Assert.DoesNotThrow(() => packageSources = options.PackageSources); + } + [Test] public void ActivePackageSource_NoInitialPropertiesSet_ReturnsNull() { @@ -55,15 +150,30 @@ namespace PackageManagement.Tests } [Test] - public void ActivePackageSource_ActivePackageSourceNonNullWhenPropertiesSaved_OnReloadingPropertiesActivatePackageSourceRemembered() + public void ActivePackageSource_SourceChanged_ActivePackageSourceUpdatedInSettings() { CreateOptions(); + var packageSource = new PackageSource("http://sharpdevelop.com", "Test"); + + options.ActivePackageSource = packageSource; + + var expectedKeyValuePair = new KeyValuePair("Test", "http://sharpdevelop.com"); + var actualKeyValuePair = fakeSettings.GetValuePassedToSetValueForActivePackageSourceSection(); + + Assert.AreEqual(expectedKeyValuePair, actualKeyValuePair); + } + + [Test] + public void ActivePackageSource_ActivePackageSourceNonNullInSettings_ReturnsActivatePackageSourceInSavedSettings() + { + CreateSettings(); var expectedSource = new PackageSource("http://source-url", "Test"); - options.PackageSources.Add(expectedSource); - options.ActivePackageSource = expectedSource; - CreateOptions(properties); + fakeSettings.SetFakeActivePackageSource(expectedSource); + fakeSettings.AddFakePackageSource(expectedSource); + CreateOptions(fakeSettings); PackageSource actualSource = options.ActivePackageSource; + Assert.AreEqual(expectedSource, actualSource); } @@ -79,40 +189,59 @@ namespace PackageManagement.Tests PackageSource actualSource = options.ActivePackageSource; Assert.IsNull(actualSource); } - + [Test] - public void ActivePackageSource_SaveActivePackageSource_DoesNotThrowSerializationError() + public void ActivePackageSource_ActivePackageSourceRemovedFromPackageSources_ActivePackageSourceSetToNull() { CreateOptions(); var source = new PackageSource("http://source-url", "Test"); - options.ActivePackageSource = source; + options.PackageSources.Add(source); - Assert.DoesNotThrow(() => SaveOptions()); + var differentSource = new PackageSource("http://different-url", "Test2"); + options.ActivePackageSource = differentSource; + + var activeSource = options.ActivePackageSource; + + Assert.IsNull(activeSource); } [Test] - public void ActivePackageSource_SaveDefaultNullActivePackageSource_DoesNotThrowSerializationError() + public void ActivePackageSource_ActivePackageSourceChanged_ActivePackageSourceSectionRemovedFromSettings() { CreateOptions(); - var source = options.ActivePackageSource; - Assert.DoesNotThrow(() => SaveOptions()); - Assert.IsNull(source); + options.ActivePackageSource = new PackageSource("http://sharpdevelop.com", "Test"); + + bool sectionDeleted = fakeSettings.IsActivePackageSourceSectionDeleted; + + Assert.IsTrue(sectionDeleted); } - + [Test] - public void ActivePackageSource_ActivePackageSourceRemovedFromPackageSources_ActivePackageSourceSetToNull() + public void ActivePackageSource_OneActivePackageSourceInSettingsAndActivePackageSourceSetToNull_ActivePackageSourceSectionRemoved() { - CreateOptions(); - var source = new PackageSource("http://source-url", "Test"); - options.PackageSources.Add(source); + CreateSettings(); + var expectedSource = new PackageSource("http://source-url", "Test"); + fakeSettings.SetFakeActivePackageSource(expectedSource); + fakeSettings.AddFakePackageSource(expectedSource); + CreateOptions(fakeSettings); - var differentSource = new PackageSource("http://different-url", "Test2"); - options.ActivePackageSource = differentSource; + options.ActivePackageSource = null; - var activeSource = options.ActivePackageSource; + bool sectionRemoved = fakeSettings.IsActivePackageSourceSectionDeleted; - Assert.IsNull(activeSource); + Assert.IsTrue(sectionRemoved); + } + + [Test] + public void ActivePackageSource_SettingsFilesDoesNotExistSoSettingsReturnsNullForActivePackageSourceSection_DoesNotThrowException() + { + CreateSettings(); + fakeSettings.MakeActivePackageSourceSectionNull(); + CreateOptions(fakeSettings); + + PackageSource activePackageSource = null; + Assert.DoesNotThrow(() => activePackageSource = options.ActivePackageSource); } [Test] diff --git a/src/AddIns/Misc/PackageManagement/Test/Src/PackageRepositoryPathsTests.cs b/src/AddIns/Misc/PackageManagement/Test/Src/PackageRepositoryPathsTests.cs index 4ef7f0f3c0..e943e14077 100644 --- a/src/AddIns/Misc/PackageManagement/Test/Src/PackageRepositoryPathsTests.cs +++ b/src/AddIns/Misc/PackageManagement/Test/Src/PackageRepositoryPathsTests.cs @@ -29,7 +29,7 @@ namespace PackageManagement.Tests void CreatePackageManagementOptions() { - options = new PackageManagementOptions(new Properties()); + options = new TestablePackageManagementOptions(); } [Test] diff --git a/src/AddIns/Misc/PackageManagement/Test/Src/RegisteredPackageSourcesTests.cs b/src/AddIns/Misc/PackageManagement/Test/Src/RegisteredPackageSourcesTests.cs deleted file mode 100644 index 40dab4fe14..0000000000 --- a/src/AddIns/Misc/PackageManagement/Test/Src/RegisteredPackageSourcesTests.cs +++ /dev/null @@ -1,66 +0,0 @@ -// 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.Collections.Generic; -using ICSharpCode.PackageManagement; -using ICSharpCode.Core; -using NuGet; -using NUnit.Framework; - -namespace PackageManagement.Tests -{ - [TestFixture] - public class RegisteredPackageSourcesTests - { - RegisteredPackageSources registeredPackageSources; - PackageManagementOptions options; - Properties properties; - - void CreateProperties() - { - properties = new Properties(); - } - - void CreateRegisteredPackageSources() - { - CreateProperties(); - CreateRegisteredPackageSources(properties); - } - - void CreateRegisteredPackageSources(Properties properties) - { - options = new PackageManagementOptions(properties); - registeredPackageSources = options.PackageSources; - } - - [Test] - public void Constructor_NoExistingSavedProperties_NewInstanceContainsDefaultPackageSource() - { - CreateRegisteredPackageSources(); - - List expectedSources = new List(); - expectedSources.Add(RegisteredPackageSources.DefaultPackageSource); - - CollectionAssert.AreEqual(expectedSources, registeredPackageSources); - } - - [Test] - public void Constructor_OnePackageSourceInSavedProperties_NewInstanceContainsSinglePackageSourceFromProperties() - { - CreateProperties(); - CreateRegisteredPackageSources(properties); - - var packageSource = new PackageSource("http://codeplex.com", "Test"); - registeredPackageSources.Clear(); - registeredPackageSources.Add(packageSource); - - CreateRegisteredPackageSources(properties); - - List expectedSources = new List(); - expectedSources.Add(packageSource); - - Assert.AreEqual(expectedSources, registeredPackageSources); - } - } -} diff --git a/src/AddIns/Misc/PackageManagement/Test/Src/RegisteredPackageSourcesViewModelTests.cs b/src/AddIns/Misc/PackageManagement/Test/Src/RegisteredPackageSourcesViewModelTests.cs index c3098b9d04..c1028821da 100644 --- a/src/AddIns/Misc/PackageManagement/Test/Src/RegisteredPackageSourcesViewModelTests.cs +++ b/src/AddIns/Misc/PackageManagement/Test/Src/RegisteredPackageSourcesViewModelTests.cs @@ -21,7 +21,7 @@ namespace PackageManagement.Tests void CreateViewModel() { - options = new PackageManagementOptions(new Properties()); + options = new TestablePackageManagementOptions(); options.PackageSources.Clear(); fakeFolderBrowser = new FakeFolderBrowser(); viewModel = new RegisteredPackageSourcesViewModel(options, fakeFolderBrowser); diff --git a/src/AddIns/Misc/PackageManagement/Test/Src/SharpDevelopPackageManagerFactoryTests.cs b/src/AddIns/Misc/PackageManagement/Test/Src/SharpDevelopPackageManagerFactoryTests.cs index d3e8411ba9..1eb4b6675d 100644 --- a/src/AddIns/Misc/PackageManagement/Test/Src/SharpDevelopPackageManagerFactoryTests.cs +++ b/src/AddIns/Misc/PackageManagement/Test/Src/SharpDevelopPackageManagerFactoryTests.cs @@ -25,7 +25,7 @@ namespace PackageManagement.Tests void CreateFactory() { - options = new PackageManagementOptions(new Properties()); + options = new TestablePackageManagementOptions(); fakePackageRepositoryFactory = new FakePackageRepositoryFactory(); fakeProjectSystemFactory = new FakeProjectSystemFactory(); factory = new SharpDevelopPackageManagerFactory(fakePackageRepositoryFactory, fakeProjectSystemFactory, options); diff --git a/src/AddIns/Misc/PackageManagement/Test/Src/SharpDevelopPackageManagerTests.cs b/src/AddIns/Misc/PackageManagement/Test/Src/SharpDevelopPackageManagerTests.cs index bb49d4a1df..66a9c23fb4 100644 --- a/src/AddIns/Misc/PackageManagement/Test/Src/SharpDevelopPackageManagerTests.cs +++ b/src/AddIns/Misc/PackageManagement/Test/Src/SharpDevelopPackageManagerTests.cs @@ -28,7 +28,7 @@ namespace PackageManagement.Tests void CreatePackageManager(IProject project, PackageReferenceRepositoryHelper packageRefRepositoryHelper) { - options = new PackageManagementOptions(new Properties()); + options = new TestablePackageManagementOptions(); options.PackagesDirectory = "packages"; repositoryPaths = new PackageRepositoryPaths(project, options);