Skip to content

Commit 29e8f04

Browse files
vexx32gep13
authored andcommitted
(chocolatey#1092) Update ISourceRunner install_run
This addition is necessary, as many occasions may arise where installing one package involves updating an already-installed dependency. In these cases we should still be running a beforeModify script if it's present, and this facilitates that. (cherry picked from commit 3a30cbc)
1 parent 9eb7f1c commit 29e8f04

File tree

8 files changed

+43
-8
lines changed

8 files changed

+43
-8
lines changed

src/chocolatey.tests/infrastructure.app/services/ChocolateyPackageServiceSpecs.cs

+5-5
Original file line numberDiff line numberDiff line change
@@ -90,9 +90,9 @@ public override void Context()
9090
var expectedResult = new ConcurrentDictionary<string, PackageResult>();
9191
expectedResult.TryAdd("test-feature", new PackageResult(package.Object, "windowsfeatures", null));
9292

93-
FeaturesRunner.Setup(r => r.install_run(It.IsAny<ChocolateyConfiguration>(), It.IsAny<Action<PackageResult, ChocolateyConfiguration>>()))
93+
FeaturesRunner.Setup(r => r.install_run(It.IsAny<ChocolateyConfiguration>(), It.IsAny<Action<PackageResult, ChocolateyConfiguration>>(), It.IsAny<Action<PackageResult, ChocolateyConfiguration>>()))
9494
.Returns(expectedResult);
95-
NormalRunner.Setup(r => r.install_run(It.IsAny<ChocolateyConfiguration>(), It.IsAny<Action<PackageResult, ChocolateyConfiguration>>()))
95+
NormalRunner.Setup(r => r.install_run(It.IsAny<ChocolateyConfiguration>(), It.IsAny<Action<PackageResult, ChocolateyConfiguration>>(), It.IsAny<Action<PackageResult, ChocolateyConfiguration>>()))
9696
.Returns(new ConcurrentDictionary<string, PackageResult>());
9797
SourceRunners.AddRange(new[] { NormalRunner.Object, FeaturesRunner.Object });
9898

@@ -127,20 +127,20 @@ public void should_return_package_that_should_have_been_installed()
127127
[Test]
128128
public void should_have_called_runner_for_windows_features_source()
129129
{
130-
FeaturesRunner.Verify(r => r.install_run(It.Is<ChocolateyConfiguration>(c => c.PackageNames == "test-feature"), It.IsAny<Action<PackageResult, ChocolateyConfiguration>>()), Times.Once);
130+
FeaturesRunner.Verify(r => r.install_run(It.Is<ChocolateyConfiguration>(c => c.PackageNames == "test-feature"), It.IsAny<Action<PackageResult, ChocolateyConfiguration>>(), It.IsAny<Action<PackageResult, ChocolateyConfiguration>>()), Times.Once);
131131
}
132132

133133
[Test]
134134
public void should_not_have_called_runner_for_windows_features_source_with_other_package_names()
135135
{
136-
FeaturesRunner.Verify(r => r.install_run(It.Is<ChocolateyConfiguration>(c => c.PackageNames != "test-feature"), It.IsAny<Action<PackageResult, ChocolateyConfiguration>>()), Times.Never);
136+
FeaturesRunner.Verify(r => r.install_run(It.Is<ChocolateyConfiguration>(c => c.PackageNames != "test-feature"), It.IsAny<Action<PackageResult, ChocolateyConfiguration>>(), It.IsAny<Action<PackageResult, ChocolateyConfiguration>>()), Times.Never);
137137
}
138138

139139
[Test]
140140
public void should_not_have_called_normal_source_runner_for_non_empty_packages()
141141
{
142142
// The normal source runners will be called with an argument
143-
NormalRunner.Verify(r => r.install_run(It.Is<ChocolateyConfiguration>(c => c.PackageNames != string.Empty), It.IsAny<Action<PackageResult, ChocolateyConfiguration>>()), Times.Never);
143+
NormalRunner.Verify(r => r.install_run(It.Is<ChocolateyConfiguration>(c => c.PackageNames != string.Empty), It.IsAny<Action<PackageResult, ChocolateyConfiguration>>(), It.IsAny<Action<PackageResult, ChocolateyConfiguration>>()), Times.Never);
144144
}
145145
}
146146

src/chocolatey/infrastructure.app/services/ChocolateyPackageService.cs

+2-1
Original file line numberDiff line numberDiff line change
@@ -613,7 +613,8 @@ public virtual ConcurrentDictionary<string, PackageResult> install_run(Chocolate
613613
action = (packageResult, configuration) => handle_package_result(packageResult, configuration, CommandNameType.install);
614614
}
615615

616-
var results = perform_source_runner_function(packageConfig, r => r.install_run(packageConfig, action));
616+
var beforeModifyAction = new Action<PackageResult, ChocolateyConfiguration>((packageResult, configuration) => before_package_modify(packageResult, configuration));
617+
var results = perform_source_runner_function(packageConfig, r => r.install_run(packageConfig, action, beforeModifyAction));
617618

618619
foreach (var result in results)
619620
{

src/chocolatey/infrastructure.app/services/CygwinService.cs

+5
Original file line numberDiff line numberDiff line change
@@ -234,6 +234,11 @@ public void install_noop(ChocolateyConfiguration config, Action<PackageResult, C
234234
}
235235

236236
public ConcurrentDictionary<string, PackageResult> install_run(ChocolateyConfiguration config, Action<PackageResult, ChocolateyConfiguration> continueAction)
237+
{
238+
return install_run(config, continueAction, beforeModifyAction: null);
239+
}
240+
241+
public ConcurrentDictionary<string, PackageResult> install_run(ChocolateyConfiguration config, Action<PackageResult, ChocolateyConfiguration> continueAction, Action<PackageResult, ChocolateyConfiguration> beforeModifyAction)
237242
{
238243
var args = build_args(config, _installArguments);
239244
var packageResults = new ConcurrentDictionary<string, PackageResult>(StringComparer.InvariantCultureIgnoreCase);

src/chocolatey/infrastructure.app/services/ISourceRunner.cs

+10-1
Original file line numberDiff line numberDiff line change
@@ -77,6 +77,15 @@ public interface ISourceRunner
7777
/// <returns>results of installs</returns>
7878
ConcurrentDictionary<string, PackageResult> install_run(ChocolateyConfiguration config, Action<PackageResult, ChocolateyConfiguration> continueAction);
7979

80+
/// <summary>
81+
/// Installs packages from the source feed
82+
/// </summary>
83+
/// <param name="config">The configuration.</param>
84+
/// <param name="continueAction">The action to continue with when install is successful.</param>
85+
/// <param name="beforeModifyAction">The action (if any) to run on any currently installed package dependencies before triggering the install or updating those dependencies.</param>
86+
/// <returns>results of installs</returns>
87+
ConcurrentDictionary<string, PackageResult> install_run(ChocolateyConfiguration config, Action<PackageResult, ChocolateyConfiguration> continueAction, Action<PackageResult, ChocolateyConfiguration> beforeModifyAction);
88+
8089
/// <summary>
8190
/// Run upgrade in noop mode
8291
/// </summary>
@@ -89,7 +98,7 @@ public interface ISourceRunner
8998
/// </summary>
9099
/// <param name="config">The configuration.</param>
91100
/// <param name="continueAction">The action to continue with when upgrade is successful.</param>
92-
/// <param name="beforeUpgradeAction">The action (if any) to run on any currently installed package before triggering the upgrade.</param>
101+
/// <param name="beforeUpgradeAction">The action (if any) to run on any currently installed package or its dependencies before triggering the upgrade.</param>
93102
/// <returns>results of installs</returns>
94103
ConcurrentDictionary<string, PackageResult> upgrade_run(ChocolateyConfiguration config, Action<PackageResult, ChocolateyConfiguration> continueAction, Action<PackageResult, ChocolateyConfiguration> beforeUpgradeAction = null);
95104

src/chocolatey/infrastructure.app/services/NugetService.cs

+6-1
Original file line numberDiff line numberDiff line change
@@ -457,6 +457,11 @@ public void install_noop(ChocolateyConfiguration config, Action<PackageResult, C
457457
}
458458

459459
public virtual ConcurrentDictionary<string, PackageResult> install_run(ChocolateyConfiguration config, Action<PackageResult, ChocolateyConfiguration> continueAction)
460+
{
461+
return install_run(config, continueAction, beforeModifyAction: null);
462+
}
463+
464+
public virtual ConcurrentDictionary<string, PackageResult> install_run(ChocolateyConfiguration config, Action<PackageResult, ChocolateyConfiguration> continueAction, Action<PackageResult, ChocolateyConfiguration> beforeModifyAction)
460465
{
461466
_fileSystem.create_directory_if_not_exists(ApplicationParameters.PackagesLocation);
462467
var packageResultsToReturn = new ConcurrentDictionary<string, PackageResult>(StringComparer.InvariantCultureIgnoreCase);
@@ -1013,7 +1018,7 @@ public virtual ConcurrentDictionary<string, PackageResult> upgrade_run(Chocolate
10131018
}
10141019
else
10151020
{
1016-
var installResults = install_run(config, continueAction);
1021+
var installResults = install_run(config, continueAction, beforeUpgradeAction);
10171022
foreach (var result in installResults)
10181023
{
10191024
packageResultsToReturn.GetOrAdd(result.Key, result.Value);

src/chocolatey/infrastructure.app/services/PythonService.cs

+5
Original file line numberDiff line numberDiff line change
@@ -337,6 +337,11 @@ public void install_noop(ChocolateyConfiguration config, Action<PackageResult, C
337337
}
338338

339339
public ConcurrentDictionary<string, PackageResult> install_run(ChocolateyConfiguration config, Action<PackageResult, ChocolateyConfiguration> continueAction)
340+
{
341+
return install_run(config, continueAction, beforeModifyAction: null);
342+
}
343+
344+
public ConcurrentDictionary<string, PackageResult> install_run(ChocolateyConfiguration config, Action<PackageResult, ChocolateyConfiguration> continueAction, Action<PackageResult, ChocolateyConfiguration> beforeModifyAction)
340345
{
341346
set_executable_path_if_not_set();
342347
var args = build_args(config, _installArguments);

src/chocolatey/infrastructure.app/services/RubyGemsService.cs

+5
Original file line numberDiff line numberDiff line change
@@ -196,6 +196,11 @@ public void install_noop(ChocolateyConfiguration config, Action<PackageResult, C
196196
}
197197

198198
public ConcurrentDictionary<string, PackageResult> install_run(ChocolateyConfiguration config, Action<PackageResult, ChocolateyConfiguration> continueAction)
199+
{
200+
return install_run(config, continueAction, beforeModifyAction: null);
201+
}
202+
203+
public ConcurrentDictionary<string, PackageResult> install_run(ChocolateyConfiguration config, Action<PackageResult, ChocolateyConfiguration> continueAction, Action<PackageResult, ChocolateyConfiguration> beforeModifyAction)
199204
{
200205
var packageResults = new ConcurrentDictionary<string, PackageResult>(StringComparer.InvariantCultureIgnoreCase);
201206
var args = ExternalCommandArgsBuilder.build_arguments(config, _installArguments);

src/chocolatey/infrastructure.app/services/WindowsFeatureService.cs

+5
Original file line numberDiff line numberDiff line change
@@ -258,6 +258,11 @@ public void install_noop(ChocolateyConfiguration config, Action<PackageResult, C
258258
}
259259

260260
public ConcurrentDictionary<string, PackageResult> install_run(ChocolateyConfiguration config, Action<PackageResult, ChocolateyConfiguration> continueAction)
261+
{
262+
return install_run(config, continueAction, beforeModifyAction: null);
263+
}
264+
265+
public ConcurrentDictionary<string, PackageResult> install_run(ChocolateyConfiguration config, Action<PackageResult, ChocolateyConfiguration> continueAction, Action<PackageResult, ChocolateyConfiguration> beforeModifyAction)
261266
{
262267
set_executable_path_if_not_set();
263268
var args = build_args(config, _installArguments);

0 commit comments

Comments
 (0)