Skip to content

Commit

Permalink
(GH-1397) Fix: Ensure config reset
Browse files Browse the repository at this point in the history
Ensure the config is reset to a known point with each package being run
in an operation. Previously it was thought this was happening, but the
way the reset occurred was actually changing the original configuration
and the current. Ensure that is getting reset accordingly by doing the
deep copy to set config each time through.
  • Loading branch information
ferventcoder committed Oct 12, 2018
1 parent 742cf64 commit 347f09f
Showing 1 changed file with 15 additions and 6 deletions.
21 changes: 15 additions & 6 deletions src/chocolatey/infrastructure.app/services/NugetService.cs
Original file line number Diff line number Diff line change
Expand Up @@ -436,9 +436,13 @@ public virtual ConcurrentDictionary<string, PackageResult> install_run(Chocolate
addUninstallHandler: true);

bool repositoryIsServiceBased = repository_is_service_based(packageManager.SourceRepository);
var originalConfig = config;

foreach (string packageName in packageNames.or_empty_list_if_null())
{
// reset config each time through
config = originalConfig.deep_copy();

//todo: get smarter about realizing multiple versions have been installed before and allowing that
IPackage installedPackage = packageManager.LocalRepository.FindPackage(packageName);

Expand Down Expand Up @@ -612,12 +616,12 @@ public virtual ConcurrentDictionary<string, PackageResult> upgrade_run(Chocolate
set_package_names_if_all_is_specified(config, () => { config.IgnoreDependencies = true; });
config.IgnoreDependencies = configIgnoreDependencies;

var originalConfig = config.deep_copy();
var originalConfig = config;

foreach (string packageName in config.PackageNames.Split(new[] { ApplicationParameters.PackageNamesSeparator }, StringSplitOptions.RemoveEmptyEntries).or_empty_list_if_null())
{
// set original config back each time through
config = originalConfig;
// reset config each time through
config = originalConfig.deep_copy();

IPackage installedPackage = packageManager.LocalRepository.FindPackage(packageName);

Expand Down Expand Up @@ -879,12 +883,12 @@ public ConcurrentDictionary<string, PackageResult> get_outdated(ChocolateyConfig
set_package_names_if_all_is_specified(config, () => { config.IgnoreDependencies = true; });
var packageNames = config.PackageNames.Split(new[] { ApplicationParameters.PackageNamesSeparator }, StringSplitOptions.RemoveEmptyEntries).or_empty_list_if_null().ToList();

var originalConfig = config.deep_copy();
var originalConfig = config;

foreach (var packageName in packageNames)
{
// set original config back each time through
config = originalConfig;
// reset config each time through
config = originalConfig.deep_copy();

var installedPackage = packageManager.LocalRepository.FindPackage(packageName);
var pkgInfo = _packageInfoService.get_package_information(installedPackage);
Expand Down Expand Up @@ -1367,8 +1371,13 @@ public virtual ConcurrentDictionary<string, PackageResult> uninstall_run(Chocola
config.ForceDependencies = false;
});

var originalConfig = config;

foreach (string packageName in config.PackageNames.Split(new[] { ApplicationParameters.PackageNamesSeparator }, StringSplitOptions.RemoveEmptyEntries).or_empty_list_if_null())
{
// reset config each time through
config = originalConfig.deep_copy();

IList<IPackage> installedPackageVersions = new List<IPackage>();
if (string.IsNullOrWhiteSpace(config.Version))
{
Expand Down

1 comment on commit 347f09f

@ferventcoder
Copy link
Member Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Please sign in to comment.