Browse Source

Add option to enable/disable NuGet package restore.

Package restore setting in Tools Options dialog is now used to update the NuGet.config in the user's profile.
pull/28/head
Matt Ward 13 years ago
parent
commit
11c7563d42
  1. 21
      src/AddIns/Misc/PackageManagement/Project/Src/Design/FakeSettings.cs
  2. 7
      src/AddIns/Misc/PackageManagement/Project/Src/PackageManagementOptions.cs
  3. 27
      src/AddIns/Misc/PackageManagement/Project/Src/PackageManagementOptionsView.xaml
  4. 7
      src/AddIns/Misc/PackageManagement/Project/Src/PackageManagementOptionsView.xaml.cs
  5. 12
      src/AddIns/Misc/PackageManagement/Project/Src/PackageManagementOptionsViewModel.cs
  6. 53
      src/AddIns/Misc/PackageManagement/Test/Src/PackageManagementOptionsTests.cs
  7. 62
      src/AddIns/Misc/PackageManagement/Test/Src/PackageManagementOptionsViewModelTests.cs

21
src/AddIns/Misc/PackageManagement/Project/Src/Design/FakeSettings.cs

@ -30,6 +30,9 @@ namespace ICSharpCode.PackageManagement.Design @@ -30,6 +30,9 @@ namespace ICSharpCode.PackageManagement.Design
public string GetValue(string section, string key)
{
if (!Sections.ContainsKey(section))
return null;
IList<KeyValuePair<string, string>> values = Sections[section];
foreach (KeyValuePair<string, string> keyPair in values) {
if (keyPair.Key == key) {
@ -161,5 +164,23 @@ namespace ICSharpCode.PackageManagement.Design @@ -161,5 +164,23 @@ namespace ICSharpCode.PackageManagement.Design
return SavedSectionValueLists.ContainsKey(RegisteredPackageSourceSettings.DisabledPackageSourceSectionName);
}
}
public void SetPackageRestoreSetting(bool enabled)
{
var items = new List<KeyValuePair<string, string>>();
items.Add(new KeyValuePair<string, string>("enabled", enabled.ToString()));
Sections.Add("packageRestore", items);
}
public KeyValuePair<string, string> GetValuePassedToSetValueForPackageRestoreSection()
{
return SavedSectionValues["packageRestore"];
}
public bool IsPackageRestoreSectionDeleted {
get {
return SectionsDeleted.Contains("packageRestore");
}
}
}
}

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

@ -18,11 +18,13 @@ namespace ICSharpCode.PackageManagement @@ -18,11 +18,13 @@ namespace ICSharpCode.PackageManagement
RegisteredPackageSourceSettings registeredPackageSourceSettings;
Properties properties;
List<RecentPackageInfo> recentPackages;
PackageRestoreConsent packageRestoreConsent;
public PackageManagementOptions(Properties properties, ISettings settings)
{
this.properties = properties;
registeredPackageSourceSettings = new RegisteredPackageSourceSettings(settings);
packageRestoreConsent = new PackageRestoreConsent(settings);
}
public PackageManagementOptions(Properties properties)
@ -35,6 +37,11 @@ namespace ICSharpCode.PackageManagement @@ -35,6 +37,11 @@ namespace ICSharpCode.PackageManagement
{
}
public bool IsPackageRestoreEnabled {
get { return packageRestoreConsent.IsGrantedInSettings; }
set { packageRestoreConsent.IsGrantedInSettings = value; }
}
public RegisteredPackageSources PackageSources {
get { return registeredPackageSourceSettings.PackageSources; }
}

27
src/AddIns/Misc/PackageManagement/Project/Src/PackageManagementOptionsView.xaml

@ -5,19 +5,20 @@ @@ -5,19 +5,20 @@
xmlns:pm="clr-namespace:ICSharpCode.PackageManagement"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml">
<gui:OptionPanel.Resources>
<pm:PackageManagementViewModels x:Key="ViewModels"/>
<BooleanToVisibilityConverter x:Key="BoolToVisibility"/>
</gui:OptionPanel.Resources>
<gui:OptionPanel.DataContext>
<Binding Source="{StaticResource ViewModels}" Path="PackageManagementOptionsViewModel"/>
</gui:OptionPanel.DataContext>
<Grid>
<Grid.Resources>
<pm:PackageManagementViewModels x:Key="ViewModels"/>
<BooleanToVisibilityConverter x:Key="BoolToVisibility"/>
</Grid.Resources>
<Grid.DataContext>
<Binding Source="{StaticResource ViewModels}" Path="PackageManagementOptionsViewModel"/>
</Grid.DataContext>
<Grid.RowDefinitions>
<RowDefinition Height="Auto"/>
<RowDefinition Height="Auto"/>
<RowDefinition Height="Auto"/>
</Grid.RowDefinitions>
<GroupBox
@ -55,5 +56,13 @@ @@ -55,5 +56,13 @@
Text="No cached packages"/>
</StackPanel>
</GroupBox>
<GroupBox
Grid.Row="2"
Header="R_estore Packages">
<CheckBox
Margin="4, 4"
IsChecked="{Binding Path=IsPackageRestoreEnabled}"
Content="Enable package restore"/>
</GroupBox>
</Grid>
</gui:OptionPanel>

7
src/AddIns/Misc/PackageManagement/Project/Src/PackageManagementOptionsView.xaml.cs

@ -12,5 +12,12 @@ namespace ICSharpCode.PackageManagement @@ -12,5 +12,12 @@ namespace ICSharpCode.PackageManagement
{
InitializeComponent();
}
public override bool SaveOptions()
{
var viewModel = DataContext as PackageManagementOptionsViewModel;
viewModel.SaveOptions();
return true;
}
}
}

12
src/AddIns/Misc/PackageManagement/Project/Src/PackageManagementOptionsViewModel.cs

@ -9,32 +9,37 @@ namespace ICSharpCode.PackageManagement @@ -9,32 +9,37 @@ namespace ICSharpCode.PackageManagement
{
public class PackageManagementOptionsViewModel : ViewModelBase<PackageManagementOptionsViewModel>
{
PackageManagementOptions options;
IRecentPackageRepository recentPackageRepository;
IMachinePackageCache machinePackageCache;
IProcess process;
public PackageManagementOptionsViewModel(IRecentPackageRepository recentPackageRepository)
: this(recentPackageRepository, new MachinePackageCache(), new Process())
: this(PackageManagementServices.Options, recentPackageRepository, new MachinePackageCache(), new Process())
{
}
public PackageManagementOptionsViewModel(
PackageManagementOptions options,
IRecentPackageRepository recentPackageRepository,
IMachinePackageCache machinePackageCache,
IProcess process)
{
this.options = options;
this.recentPackageRepository = recentPackageRepository;
this.machinePackageCache = machinePackageCache;
this.process = process;
this.HasNoRecentPackages = !RecentPackageRepositoryHasPackages();
this.HasNoCachedPackages = !MachinePackageCacheHasPackages();
this.IsPackageRestoreEnabled = options.IsPackageRestoreEnabled;
CreateCommands();
}
public bool HasNoRecentPackages { get; private set; }
public bool HasNoCachedPackages { get; private set; }
public bool IsPackageRestoreEnabled { get; set; }
bool MachinePackageCacheHasPackages()
{
@ -78,5 +83,10 @@ namespace ICSharpCode.PackageManagement @@ -78,5 +83,10 @@ namespace ICSharpCode.PackageManagement
{
process.Start(machinePackageCache.Source);
}
public void SaveOptions()
{
options.IsPackageRestoreEnabled = IsPackageRestoreEnabled;
}
}
}

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

@ -72,6 +72,11 @@ namespace PackageManagement.Tests @@ -72,6 +72,11 @@ namespace PackageManagement.Tests
return recentPackage;
}
void EnablePackageRestoreInSettings()
{
fakeSettings.SetPackageRestoreSetting(true);
}
[Test]
public void PackageSources_OnePackageSourceInSettings_ContainsSinglePackageSourceFromSettings()
{
@ -388,5 +393,53 @@ namespace PackageManagement.Tests @@ -388,5 +393,53 @@ namespace PackageManagement.Tests
Assert.IsFalse(result);
}
[Test]
public void IsPackageRestoreEnabled_EnabledInSettings_ReturnsTrue()
{
CreateSettings();
EnablePackageRestoreInSettings();
CreateOptions(fakeSettings);
bool enabled = options.IsPackageRestoreEnabled;
Assert.IsTrue(enabled);
}
[Test]
public void IsPackageRestoreEnabled_PackageRestoreNotInSettings_ReturnsFalse()
{
CreateOptions();
bool enabled = options.IsPackageRestoreEnabled;
Assert.IsFalse(enabled);
}
[Test]
public void IsPackageRestoreEnabled_NotInSettingsOriginallyButSetToTrue_PackageRestoreEnabledInSettings()
{
CreateOptions();
options.IsPackageRestoreEnabled = true;
KeyValuePair<string, string> keyPair = fakeSettings.GetValuePassedToSetValueForPackageRestoreSection();
Assert.AreEqual("enabled", keyPair.Key);
Assert.AreEqual("True", keyPair.Value);
}
[Test]
public void IsPackageRestoreEnabled_OriginallyEnabledInSettingsButSetToTrue_PackageRestoreSectionDeletedFromSettings()
{
CreateSettings();
EnablePackageRestoreInSettings();
CreateOptions(fakeSettings);
options.IsPackageRestoreEnabled = false;
bool deleted = fakeSettings.IsPackageRestoreSectionDeleted;
Assert.IsTrue(deleted);
}
}
}

62
src/AddIns/Misc/PackageManagement/Test/Src/PackageManagementOptionsViewModelTests.cs

@ -3,6 +3,7 @@ @@ -3,6 +3,7 @@
using System;
using System.Collections.Generic;
using ICSharpCode.Core;
using ICSharpCode.PackageManagement;
using ICSharpCode.PackageManagement.Design;
using NUnit.Framework;
@ -18,6 +19,8 @@ namespace PackageManagement.Tests @@ -18,6 +19,8 @@ namespace PackageManagement.Tests
FakeMachinePackageCache fakeMachineCache;
FakeProcess fakeProcess;
List<string> propertiesChanged;
PackageManagementOptions options;
FakeSettings fakeSettings;
void CreateRecentRepository()
{
@ -29,18 +32,37 @@ namespace PackageManagement.Tests @@ -29,18 +32,37 @@ namespace PackageManagement.Tests
fakeMachineCache = new FakeMachinePackageCache();
}
void CreateOptions()
{
var properties = new Properties();
fakeSettings = new FakeSettings();
options = new PackageManagementOptions(properties, fakeSettings);
}
void EnablePackageRestoreInOptions()
{
fakeSettings.SetPackageRestoreSetting(true);
}
void CreateViewModelUsingCreatedMachineCache()
{
CreateRecentRepository();
CreateOptions();
fakeProcess = new FakeProcess();
viewModel = new PackageManagementOptionsViewModel(fakeRecentRepository, fakeMachineCache, fakeProcess);
CreateViewModel(options);
}
void CreateViewModelUsingCreatedRecentRepository()
{
CreateMachineCache();
CreateOptions();
fakeProcess = new FakeProcess();
viewModel = new PackageManagementOptionsViewModel(fakeRecentRepository, fakeMachineCache, fakeProcess);
CreateViewModel(options);
}
void CreateViewModel(PackageManagementOptions options)
{
viewModel = new PackageManagementOptionsViewModel(options, fakeRecentRepository, fakeMachineCache, fakeProcess);
}
void AddPackageToRecentRepository()
@ -277,5 +299,41 @@ namespace PackageManagement.Tests @@ -277,5 +299,41 @@ namespace PackageManagement.Tests
Assert.AreEqual(expectedFileName, fileName);
}
[Test]
public void IsPackageRestoreEnabled_TrueInOptions_ReturnsTrue()
{
CreateOptions();
EnablePackageRestoreInOptions();
CreateViewModel(options);
bool result = viewModel.IsPackageRestoreEnabled;
Assert.IsTrue(result);
}
[Test]
public void IsPackageRestoreEnabled_FalseInOptions_ReturnsFalse()
{
CreateOptions();
CreateViewModel(options);
bool result = viewModel.IsPackageRestoreEnabled;
Assert.IsFalse(result);
}
[Test]
public void SaveOptions_PackageRestoreChangedFromFalseToTrue_PackageRestoreUpdatedInSettings()
{
CreateOptions();
CreateViewModel(options);
viewModel.IsPackageRestoreEnabled = true;
viewModel.SaveOptions();
KeyValuePair<string, string> keyPair = fakeSettings.GetValuePassedToSetValueForPackageRestoreSection();
Assert.AreEqual("True", keyPair.Value);
}
}
}

Loading…
Cancel
Save