26 changed files with 1456 additions and 85 deletions
@ -0,0 +1,156 @@ |
|||||||
|
// 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 System.Linq; |
||||||
|
|
||||||
|
using NuGet; |
||||||
|
|
||||||
|
namespace ICSharpCode.PackageManagement.Scripting |
||||||
|
{ |
||||||
|
public class RunAllProjectPackageScriptsAction : IDisposable |
||||||
|
{ |
||||||
|
IPackageScriptRunner scriptRunner; |
||||||
|
List<IPackageManagementProject> projects; |
||||||
|
IPackageScriptFactory scriptFactory; |
||||||
|
|
||||||
|
List<EventHandler<PackageOperationEventArgs>> packageInstalledHandlers = |
||||||
|
new List<EventHandler<PackageOperationEventArgs>>(); |
||||||
|
|
||||||
|
List<EventHandler<PackageOperationEventArgs>> packageReferenceAddedHandlers = |
||||||
|
new List<EventHandler<PackageOperationEventArgs>>(); |
||||||
|
|
||||||
|
List<EventHandler<PackageOperationEventArgs>> packageReferenceRemovedHandlers = |
||||||
|
new List<EventHandler<PackageOperationEventArgs>>(); |
||||||
|
|
||||||
|
public RunAllProjectPackageScriptsAction( |
||||||
|
IPackageScriptRunner scriptRunner, |
||||||
|
IEnumerable<IPackageManagementProject> projects) |
||||||
|
: this(scriptRunner, projects, new PackageScriptFactory()) |
||||||
|
{ |
||||||
|
} |
||||||
|
|
||||||
|
public RunAllProjectPackageScriptsAction( |
||||||
|
IPackageScriptRunner scriptRunner, |
||||||
|
IEnumerable<IPackageManagementProject> projects, |
||||||
|
IPackageScriptFactory scriptFactory) |
||||||
|
{ |
||||||
|
this.scriptRunner = scriptRunner; |
||||||
|
this.projects = projects.ToList(); |
||||||
|
this.scriptFactory = scriptFactory; |
||||||
|
|
||||||
|
RegisterEvents(); |
||||||
|
} |
||||||
|
|
||||||
|
public void Dispose() |
||||||
|
{ |
||||||
|
IsDisposed = true; |
||||||
|
UnregisterEvents(); |
||||||
|
} |
||||||
|
|
||||||
|
public bool IsDisposed { get; private set; } |
||||||
|
|
||||||
|
void RegisterEvents() |
||||||
|
{ |
||||||
|
foreach (IPackageManagementProject project in projects) { |
||||||
|
RegisterPackageInstalledEvent(project); |
||||||
|
RegisterPackageReferenceAddedEvent(project); |
||||||
|
RegisterPackageReferenceRemovedEvent(project); |
||||||
|
} |
||||||
|
} |
||||||
|
|
||||||
|
void RegisterPackageInstalledEvent(IPackageManagementProject project) |
||||||
|
{ |
||||||
|
EventHandler<PackageOperationEventArgs> installHandler = |
||||||
|
(_, e) => PackageInstalled(project, e); |
||||||
|
packageInstalledHandlers.Add(installHandler); |
||||||
|
project.PackageInstalled += installHandler; |
||||||
|
} |
||||||
|
|
||||||
|
void RegisterPackageReferenceAddedEvent(IPackageManagementProject project) |
||||||
|
{ |
||||||
|
EventHandler<PackageOperationEventArgs> referenceAddedHandler = |
||||||
|
(_, e) => PackageReferenceAdded(project, e); |
||||||
|
packageReferenceAddedHandlers.Add(referenceAddedHandler); |
||||||
|
project.PackageReferenceAdded += referenceAddedHandler; |
||||||
|
} |
||||||
|
|
||||||
|
void RegisterPackageReferenceRemovedEvent(IPackageManagementProject project) |
||||||
|
{ |
||||||
|
EventHandler<PackageOperationEventArgs> referenceRemovedHandler = |
||||||
|
(_, e) => PackageReferenceRemoved(project, e); |
||||||
|
packageReferenceRemovedHandlers.Add(referenceRemovedHandler); |
||||||
|
project.PackageReferenceRemoved += referenceRemovedHandler; |
||||||
|
} |
||||||
|
|
||||||
|
void UnregisterEvents() |
||||||
|
{ |
||||||
|
foreach (IPackageManagementProject project in projects) { |
||||||
|
UnregisterPackageInstalledEvent(project); |
||||||
|
UnregisterPackageReferenceAddedEvent(project); |
||||||
|
UnregisterPackageReferenceRemovedEvent(project); |
||||||
|
} |
||||||
|
} |
||||||
|
|
||||||
|
void UnregisterPackageInstalledEvent(IPackageManagementProject project) |
||||||
|
{ |
||||||
|
EventHandler<PackageOperationEventArgs> handler = packageInstalledHandlers.First(); |
||||||
|
packageInstalledHandlers.Remove(handler); |
||||||
|
project.PackageInstalled -= handler; |
||||||
|
} |
||||||
|
|
||||||
|
void UnregisterPackageReferenceAddedEvent(IPackageManagementProject project) |
||||||
|
{ |
||||||
|
EventHandler<PackageOperationEventArgs> handler = packageReferenceAddedHandlers.First(); |
||||||
|
packageReferenceAddedHandlers.Remove(handler); |
||||||
|
project.PackageReferenceAdded -= handler; |
||||||
|
} |
||||||
|
|
||||||
|
void UnregisterPackageReferenceRemovedEvent(IPackageManagementProject project) |
||||||
|
{ |
||||||
|
EventHandler<PackageOperationEventArgs> handler = packageReferenceRemovedHandlers.First(); |
||||||
|
packageReferenceRemovedHandlers.Remove(handler); |
||||||
|
project.PackageReferenceRemoved -= handler; |
||||||
|
} |
||||||
|
|
||||||
|
void PackageInstalled(IPackageManagementProject project, PackageOperationEventArgs e) |
||||||
|
{ |
||||||
|
RunInitScript(project, e); |
||||||
|
} |
||||||
|
|
||||||
|
void PackageReferenceAdded(IPackageManagementProject project, PackageOperationEventArgs e) |
||||||
|
{ |
||||||
|
RunInstallScript(project, e); |
||||||
|
} |
||||||
|
|
||||||
|
void PackageReferenceRemoved(IPackageManagementProject project, PackageOperationEventArgs e) |
||||||
|
{ |
||||||
|
RunUninstallScript(project, e); |
||||||
|
} |
||||||
|
|
||||||
|
void RunInitScript(IPackageManagementProject project, PackageOperationEventArgs e) |
||||||
|
{ |
||||||
|
IPackageScript script = scriptFactory.CreatePackageInitializeScript(e.Package, e.InstallPath); |
||||||
|
RunScript(project, script); |
||||||
|
} |
||||||
|
|
||||||
|
void RunScript(IPackageManagementProject project, IPackageScript script) |
||||||
|
{ |
||||||
|
script.Project = project; |
||||||
|
scriptRunner.Run(script); |
||||||
|
} |
||||||
|
|
||||||
|
void RunInstallScript(IPackageManagementProject project, PackageOperationEventArgs e) |
||||||
|
{ |
||||||
|
IPackageScript script = scriptFactory.CreatePackageInstallScript(e.Package, e.InstallPath); |
||||||
|
RunScript(project, script); |
||||||
|
} |
||||||
|
|
||||||
|
void RunUninstallScript(IPackageManagementProject project, PackageOperationEventArgs e) |
||||||
|
{ |
||||||
|
IPackageScript script = scriptFactory.CreatePackageUninstallScript(e.Package, e.InstallPath); |
||||||
|
RunScript(project, script); |
||||||
|
} |
||||||
|
} |
||||||
|
} |
||||||
@ -0,0 +1,120 @@ |
|||||||
|
// 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 System.Linq; |
||||||
|
using ICSharpCode.PackageManagement.Scripting; |
||||||
|
using NuGet; |
||||||
|
|
||||||
|
namespace ICSharpCode.PackageManagement |
||||||
|
{ |
||||||
|
public class UpdateSolutionPackagesAction : IPackageAction, IUpdatePackageSettings |
||||||
|
{ |
||||||
|
List<IPackageFromRepository> packages = new List<IPackageFromRepository>(); |
||||||
|
List<PackageOperation> operations = new List<PackageOperation>(); |
||||||
|
List<IPackageManagementProject> projects; |
||||||
|
|
||||||
|
public UpdateSolutionPackagesAction(IPackageManagementSolution solution) |
||||||
|
{ |
||||||
|
this.Solution = solution; |
||||||
|
this.UpdateDependencies = true; |
||||||
|
} |
||||||
|
|
||||||
|
public IPackageManagementSolution Solution { get; private set; } |
||||||
|
public IPackageScriptRunner PackageScriptRunner { get; set; } |
||||||
|
public bool UpdateDependencies { get; set; } |
||||||
|
public bool AllowPrereleaseVersions { get; set; } |
||||||
|
public ILogger Logger { get; set; } |
||||||
|
|
||||||
|
public IEnumerable<PackageOperation> Operations { |
||||||
|
get { return operations; } |
||||||
|
} |
||||||
|
|
||||||
|
public IEnumerable<IPackageFromRepository> Packages { |
||||||
|
get { return packages; } |
||||||
|
} |
||||||
|
|
||||||
|
public bool HasPackageScriptsToRun() |
||||||
|
{ |
||||||
|
var files = new PackageFilesForOperations(Operations); |
||||||
|
return files.HasAnyPackageScripts(); |
||||||
|
} |
||||||
|
|
||||||
|
public void AddOperations(IEnumerable<PackageOperation> operations) |
||||||
|
{ |
||||||
|
this.operations.AddRange(operations); |
||||||
|
} |
||||||
|
|
||||||
|
public void AddPackages(IEnumerable<IPackageFromRepository> packages) |
||||||
|
{ |
||||||
|
this.packages.AddRange(packages); |
||||||
|
} |
||||||
|
|
||||||
|
public void Execute() |
||||||
|
{ |
||||||
|
if (PackageScriptRunner != null) { |
||||||
|
ExecuteWithScriptRunner(); |
||||||
|
} else { |
||||||
|
ExecuteCore(); |
||||||
|
} |
||||||
|
} |
||||||
|
|
||||||
|
void ExecuteWithScriptRunner() |
||||||
|
{ |
||||||
|
using (RunAllProjectPackageScriptsAction runScriptsAction = CreateRunPackageScriptsAction()) { |
||||||
|
ExecuteCore(); |
||||||
|
} |
||||||
|
} |
||||||
|
|
||||||
|
RunAllProjectPackageScriptsAction CreateRunPackageScriptsAction() |
||||||
|
{ |
||||||
|
return CreateRunPackageScriptsAction(PackageScriptRunner, GetProjects()); |
||||||
|
} |
||||||
|
|
||||||
|
void ExecuteCore() |
||||||
|
{ |
||||||
|
RunPackageOperations(); |
||||||
|
UpdatePackageReferences(); |
||||||
|
} |
||||||
|
|
||||||
|
void RunPackageOperations() |
||||||
|
{ |
||||||
|
IPackageManagementProject project = GetProjects().First(); |
||||||
|
project.RunPackageOperations(operations); |
||||||
|
} |
||||||
|
|
||||||
|
IEnumerable<IPackageManagementProject> GetProjects() |
||||||
|
{ |
||||||
|
if (projects == null) { |
||||||
|
IPackageFromRepository package = packages.First(); |
||||||
|
projects = Solution |
||||||
|
.GetProjects(package.Repository) |
||||||
|
.Select(project => { |
||||||
|
project.Logger = Logger; |
||||||
|
return project; |
||||||
|
}) |
||||||
|
.ToList(); |
||||||
|
} |
||||||
|
return projects; |
||||||
|
} |
||||||
|
|
||||||
|
void UpdatePackageReferences() |
||||||
|
{ |
||||||
|
foreach (IPackageManagementProject project in GetProjects()) { |
||||||
|
foreach (IPackageFromRepository package in packages) { |
||||||
|
if (project.HasOlderPackageInstalled(package)) { |
||||||
|
project.UpdatePackageReference(package, this); |
||||||
|
} |
||||||
|
} |
||||||
|
} |
||||||
|
} |
||||||
|
|
||||||
|
protected virtual RunAllProjectPackageScriptsAction CreateRunPackageScriptsAction( |
||||||
|
IPackageScriptRunner scriptRunner, |
||||||
|
IEnumerable<IPackageManagementProject> projects) |
||||||
|
{ |
||||||
|
return new RunAllProjectPackageScriptsAction(scriptRunner, projects); |
||||||
|
} |
||||||
|
} |
||||||
|
} |
||||||
@ -0,0 +1,36 @@ |
|||||||
|
// 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 NuGet; |
||||||
|
using Rhino.Mocks; |
||||||
|
|
||||||
|
namespace PackageManagement.Tests.Helpers |
||||||
|
{ |
||||||
|
public class TestPackageHelper |
||||||
|
{ |
||||||
|
public TestPackageHelper() |
||||||
|
{ |
||||||
|
Package = MockRepository.GenerateStub<IPackage>(); |
||||||
|
} |
||||||
|
|
||||||
|
public TestPackageHelper(string id, string version) |
||||||
|
: this() |
||||||
|
{ |
||||||
|
SetId(id); |
||||||
|
SetVersion(version); |
||||||
|
} |
||||||
|
|
||||||
|
public IPackage Package { get; set; } |
||||||
|
|
||||||
|
public void SetId(string id) |
||||||
|
{ |
||||||
|
Package.Stub(p => p.Id).Return(id); |
||||||
|
} |
||||||
|
|
||||||
|
public void SetVersion(string version) |
||||||
|
{ |
||||||
|
Package.Stub(p => p.Version).Return(new SemanticVersion(version)); |
||||||
|
} |
||||||
|
} |
||||||
|
} |
||||||
@ -0,0 +1,39 @@ |
|||||||
|
// 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 System.Linq; |
||||||
|
using ICSharpCode.PackageManagement; |
||||||
|
using ICSharpCode.PackageManagement.Scripting; |
||||||
|
|
||||||
|
namespace PackageManagement.Tests.Helpers |
||||||
|
{ |
||||||
|
public class TestableUpdateSolutionPackagesAction : UpdateSolutionPackagesAction |
||||||
|
{ |
||||||
|
public bool IsRunPackageScriptsActionCreated; |
||||||
|
public IPackageScriptRunner ScriptRunnerPassedToCreateRunPackageScriptsAction; |
||||||
|
public List<IPackageManagementProject> ProjectsPassedToCreateRunPackageScriptsAction; |
||||||
|
public RunAllProjectPackageScriptsAction RunPackageScriptsAction; |
||||||
|
|
||||||
|
public TestableUpdateSolutionPackagesAction(IPackageManagementSolution solution) |
||||||
|
: base(solution) |
||||||
|
{ |
||||||
|
} |
||||||
|
|
||||||
|
protected override RunAllProjectPackageScriptsAction CreateRunPackageScriptsAction( |
||||||
|
IPackageScriptRunner scriptRunner, |
||||||
|
IEnumerable<IPackageManagementProject> projects) |
||||||
|
{ |
||||||
|
IsRunPackageScriptsActionCreated = true; |
||||||
|
ScriptRunnerPassedToCreateRunPackageScriptsAction = scriptRunner; |
||||||
|
ProjectsPassedToCreateRunPackageScriptsAction = projects.ToList(); |
||||||
|
RunPackageScriptsAction = base.CreateRunPackageScriptsAction(scriptRunner, projects); |
||||||
|
return RunPackageScriptsAction; |
||||||
|
} |
||||||
|
|
||||||
|
public bool IsRunPackageScriptsActionDisposed { |
||||||
|
get { return RunPackageScriptsAction.IsDisposed; } |
||||||
|
} |
||||||
|
} |
||||||
|
} |
||||||
@ -0,0 +1,339 @@ |
|||||||
|
// 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.PackageManagement.Scripting; |
||||||
|
using NuGet; |
||||||
|
using NUnit.Framework; |
||||||
|
using PackageManagement.Tests.Helpers; |
||||||
|
using Rhino.Mocks; |
||||||
|
using Rhino.Mocks.Constraints; |
||||||
|
|
||||||
|
namespace PackageManagement.Tests |
||||||
|
{ |
||||||
|
[TestFixture] |
||||||
|
public class RunAllProjectPackageScriptsActionTests |
||||||
|
{ |
||||||
|
RunAllProjectPackageScriptsAction action; |
||||||
|
List<IPackageManagementProject> projects; |
||||||
|
IPackageScriptRunner scriptRunner; |
||||||
|
IPackageScriptFactory scriptFactory; |
||||||
|
|
||||||
|
[SetUp] |
||||||
|
public void Init() |
||||||
|
{ |
||||||
|
CreateProjectsList(); |
||||||
|
} |
||||||
|
|
||||||
|
void CreateProjectsList() |
||||||
|
{ |
||||||
|
projects = new List<IPackageManagementProject>(); |
||||||
|
} |
||||||
|
|
||||||
|
void CreateAction() |
||||||
|
{ |
||||||
|
scriptRunner = MockRepository.GenerateStub<IPackageScriptRunner>(); |
||||||
|
scriptFactory = MockRepository.GenerateStub<IPackageScriptFactory>(); |
||||||
|
action = new RunAllProjectPackageScriptsAction(scriptRunner, projects, scriptFactory); |
||||||
|
} |
||||||
|
|
||||||
|
IPackageManagementProject AddProject() |
||||||
|
{ |
||||||
|
IPackageManagementProject project = MockRepository.GenerateStub<IPackageManagementProject>(); |
||||||
|
projects.Add(project); |
||||||
|
return project; |
||||||
|
} |
||||||
|
|
||||||
|
PackageOperationEventArgs CreatePackageOperationEventArgs() |
||||||
|
{ |
||||||
|
IPackage package = CreatePackage(); |
||||||
|
return CreatePackageOperationEventArgs(package); |
||||||
|
} |
||||||
|
|
||||||
|
IPackage CreatePackage() |
||||||
|
{ |
||||||
|
return new TestPackageHelper("Test", "1.0").Package; |
||||||
|
} |
||||||
|
|
||||||
|
PackageOperationEventArgs CreatePackageOperationEventArgs( |
||||||
|
IPackage package, |
||||||
|
string installPath = @"d:\projects\myproject\packages\test") |
||||||
|
{ |
||||||
|
return new PackageOperationEventArgs(package, null, installPath); |
||||||
|
} |
||||||
|
|
||||||
|
void FirePackageInstalledEvent(IPackageManagementProject project, PackageOperationEventArgs eventArgs) |
||||||
|
{ |
||||||
|
project.Raise(p => p.PackageInstalled += null, null, eventArgs); |
||||||
|
} |
||||||
|
|
||||||
|
void FirePackageReferenceAddedEvent(IPackageManagementProject project, PackageOperationEventArgs eventArgs) |
||||||
|
{ |
||||||
|
project.Raise(p => p.PackageReferenceAdded += null, null, eventArgs); |
||||||
|
} |
||||||
|
|
||||||
|
void FirePackageReferenceRemovedEvent(IPackageManagementProject project, PackageOperationEventArgs eventArgs) |
||||||
|
{ |
||||||
|
project.Raise(p => p.PackageReferenceRemoved += null, null, eventArgs); |
||||||
|
} |
||||||
|
|
||||||
|
IPackageScript CreatePackageScript() |
||||||
|
{ |
||||||
|
return MockRepository.GenerateStub<IPackageScript>(); |
||||||
|
} |
||||||
|
|
||||||
|
void SetInitScriptToReturnFromScriptFactory(IPackageScript initScript) |
||||||
|
{ |
||||||
|
scriptFactory.Stub(factory => factory.CreatePackageInitializeScript( |
||||||
|
Arg<IPackage>.Is.Anything, |
||||||
|
Arg<string>.Is.Anything)) |
||||||
|
.Return(initScript); |
||||||
|
} |
||||||
|
|
||||||
|
void SetInstallScriptToReturnFromScriptFactory(IPackageScript installScript) |
||||||
|
{ |
||||||
|
scriptFactory.Stub(factory => factory.CreatePackageInstallScript( |
||||||
|
Arg<IPackage>.Is.Anything, |
||||||
|
Arg<string>.Is.Anything)) |
||||||
|
.Return(installScript); |
||||||
|
} |
||||||
|
|
||||||
|
void SetUninstallScriptToReturnFromScriptFactory(IPackageScript uninstallScript) |
||||||
|
{ |
||||||
|
scriptFactory.Stub(factory => factory.CreatePackageUninstallScript( |
||||||
|
Arg<IPackage>.Is.Anything, |
||||||
|
Arg<string>.Is.Anything)) |
||||||
|
.Return(uninstallScript); |
||||||
|
} |
||||||
|
|
||||||
|
[Test] |
||||||
|
public void Constructor_OneProjectAndOnePackageIsInstalled_PackageInitializeScriptCreated() |
||||||
|
{ |
||||||
|
IPackageManagementProject project = AddProject(); |
||||||
|
CreateAction(); |
||||||
|
IPackageScript initScript = CreatePackageScript(); |
||||||
|
SetInitScriptToReturnFromScriptFactory(initScript); |
||||||
|
IPackage package = CreatePackage(); |
||||||
|
string installPath = @"d:\projects\MyProject\packages\foo"; |
||||||
|
PackageOperationEventArgs eventArgs = CreatePackageOperationEventArgs(package, installPath); |
||||||
|
|
||||||
|
FirePackageInstalledEvent(project, eventArgs); |
||||||
|
|
||||||
|
scriptFactory.AssertWasCalled(factory => factory.CreatePackageInitializeScript(package, installPath)); |
||||||
|
} |
||||||
|
|
||||||
|
[Test] |
||||||
|
public void Constructor_OneProjectAndOnePackageIsInstalled_PackageInitializeScriptIsRun() |
||||||
|
{ |
||||||
|
IPackageManagementProject project = AddProject(); |
||||||
|
CreateAction(); |
||||||
|
IPackageScript initScript = CreatePackageScript(); |
||||||
|
SetInitScriptToReturnFromScriptFactory(initScript); |
||||||
|
PackageOperationEventArgs eventArgs = CreatePackageOperationEventArgs(); |
||||||
|
|
||||||
|
FirePackageInstalledEvent(project, eventArgs); |
||||||
|
|
||||||
|
scriptRunner.AssertWasCalled(runner => runner.Run(initScript)); |
||||||
|
} |
||||||
|
|
||||||
|
[Test] |
||||||
|
public void Constructor_OneProjectAndOnePackageIsInstalled_ProjectSetForPackageScript() |
||||||
|
{ |
||||||
|
IPackageManagementProject project = AddProject(); |
||||||
|
CreateAction(); |
||||||
|
IPackageScript initScript = CreatePackageScript(); |
||||||
|
SetInitScriptToReturnFromScriptFactory(initScript); |
||||||
|
PackageOperationEventArgs eventArgs = CreatePackageOperationEventArgs(); |
||||||
|
|
||||||
|
FirePackageInstalledEvent(project, eventArgs); |
||||||
|
|
||||||
|
Assert.AreEqual(project, initScript.Project); |
||||||
|
} |
||||||
|
|
||||||
|
[Test] |
||||||
|
public void Constructor_TwoProjectsAndPackageIsInstalledForSecondProject_PackageInitializeScriptIsRun() |
||||||
|
{ |
||||||
|
IPackageManagementProject project1 = AddProject(); |
||||||
|
IPackageManagementProject project2 = AddProject(); |
||||||
|
CreateAction(); |
||||||
|
IPackageScript initScript = CreatePackageScript(); |
||||||
|
SetInitScriptToReturnFromScriptFactory(initScript); |
||||||
|
PackageOperationEventArgs eventArgs = CreatePackageOperationEventArgs(); |
||||||
|
|
||||||
|
FirePackageInstalledEvent(project2, eventArgs); |
||||||
|
|
||||||
|
scriptRunner.AssertWasCalled(runner => runner.Run(initScript)); |
||||||
|
} |
||||||
|
|
||||||
|
[Test] |
||||||
|
public void Constructor_TwoProjectsAndPackageIsInstalledForSecondProject_SecondProjectSetForPackageScript() |
||||||
|
{ |
||||||
|
IPackageManagementProject project1 = AddProject(); |
||||||
|
IPackageManagementProject project2 = AddProject(); |
||||||
|
CreateAction(); |
||||||
|
IPackageScript initScript = CreatePackageScript(); |
||||||
|
SetInitScriptToReturnFromScriptFactory(initScript); |
||||||
|
PackageOperationEventArgs eventArgs = CreatePackageOperationEventArgs(); |
||||||
|
|
||||||
|
FirePackageInstalledEvent(project2, eventArgs); |
||||||
|
|
||||||
|
Assert.AreEqual(project2, initScript.Project); |
||||||
|
} |
||||||
|
|
||||||
|
[Test] |
||||||
|
public void Dispose_OneProjectAndOnePackageIsInstalledAfterScriptsActionIsDisposed_PackageInitializeScriptIsNotRun() |
||||||
|
{ |
||||||
|
IPackageManagementProject project = AddProject(); |
||||||
|
CreateAction(); |
||||||
|
IPackageScript initScript = CreatePackageScript(); |
||||||
|
SetInitScriptToReturnFromScriptFactory(initScript); |
||||||
|
PackageOperationEventArgs eventArgs = CreatePackageOperationEventArgs(); |
||||||
|
|
||||||
|
action.Dispose(); |
||||||
|
FirePackageInstalledEvent(project, eventArgs); |
||||||
|
|
||||||
|
scriptRunner.AssertWasNotCalled(runner => runner.Run(Arg<IPackageScript>.Is.Anything)); |
||||||
|
} |
||||||
|
|
||||||
|
[Test] |
||||||
|
public void Dispose_TwoProjectsAndOnePackageIsInstalledForSecondProjectAfterScriptsActionIsDisposed_PackageInitializeScriptIsNotRun() |
||||||
|
{ |
||||||
|
IPackageManagementProject project1 = AddProject(); |
||||||
|
IPackageManagementProject project2 = AddProject(); |
||||||
|
CreateAction(); |
||||||
|
IPackageScript initScript = CreatePackageScript(); |
||||||
|
SetInitScriptToReturnFromScriptFactory(initScript); |
||||||
|
PackageOperationEventArgs eventArgs = CreatePackageOperationEventArgs(); |
||||||
|
|
||||||
|
action.Dispose(); |
||||||
|
FirePackageInstalledEvent(project2, eventArgs); |
||||||
|
|
||||||
|
scriptRunner.AssertWasNotCalled(runner => runner.Run(Arg<IPackageScript>.Is.Anything)); |
||||||
|
} |
||||||
|
|
||||||
|
[Test] |
||||||
|
public void Constructor_OneProjectAndPackageReferencedAddedToProject_PackageInstallScriptCreated() |
||||||
|
{ |
||||||
|
IPackageManagementProject project = AddProject(); |
||||||
|
CreateAction(); |
||||||
|
IPackageScript installScript = CreatePackageScript(); |
||||||
|
SetInstallScriptToReturnFromScriptFactory(installScript); |
||||||
|
IPackage package = CreatePackage(); |
||||||
|
string installPath = @"d:\projects\MyProject\packages\foo"; |
||||||
|
PackageOperationEventArgs eventArgs = CreatePackageOperationEventArgs(package, installPath); |
||||||
|
|
||||||
|
FirePackageReferenceAddedEvent(project, eventArgs); |
||||||
|
|
||||||
|
scriptFactory.AssertWasCalled(factory => factory.CreatePackageInstallScript(package, installPath)); |
||||||
|
} |
||||||
|
|
||||||
|
[Test] |
||||||
|
public void Constructor_TwoProjectsAndPackageReferencedAddedToSecondProject_PackageInstallScriptIsRun() |
||||||
|
{ |
||||||
|
IPackageManagementProject project1 = AddProject(); |
||||||
|
IPackageManagementProject project2 = AddProject(); |
||||||
|
CreateAction(); |
||||||
|
IPackageScript installScript = CreatePackageScript(); |
||||||
|
SetInstallScriptToReturnFromScriptFactory(installScript); |
||||||
|
PackageOperationEventArgs eventArgs = CreatePackageOperationEventArgs(); |
||||||
|
|
||||||
|
FirePackageReferenceAddedEvent(project2, eventArgs); |
||||||
|
|
||||||
|
scriptRunner.AssertWasCalled(runner => runner.Run(installScript)); |
||||||
|
} |
||||||
|
|
||||||
|
[Test] |
||||||
|
public void Constructor_TwoProjectsAndPackageReferencedIsAddedForSecondProject_SecondProjectSetForPackageScript() |
||||||
|
{ |
||||||
|
IPackageManagementProject project1 = AddProject(); |
||||||
|
IPackageManagementProject project2 = AddProject(); |
||||||
|
CreateAction(); |
||||||
|
IPackageScript installScript = CreatePackageScript(); |
||||||
|
SetInstallScriptToReturnFromScriptFactory(installScript); |
||||||
|
PackageOperationEventArgs eventArgs = CreatePackageOperationEventArgs(); |
||||||
|
|
||||||
|
FirePackageReferenceAddedEvent(project2, eventArgs); |
||||||
|
|
||||||
|
Assert.AreEqual(project2, installScript.Project); |
||||||
|
} |
||||||
|
|
||||||
|
[Test] |
||||||
|
public void Dispose_OneProjectAndPackageReferencedAddedToProjectAfterActionIsDisposed_PackageInstallScriptIsNotRun() |
||||||
|
{ |
||||||
|
IPackageManagementProject project = AddProject(); |
||||||
|
CreateAction(); |
||||||
|
IPackageScript installScript = CreatePackageScript(); |
||||||
|
SetInstallScriptToReturnFromScriptFactory(installScript); |
||||||
|
IPackage package = CreatePackage(); |
||||||
|
PackageOperationEventArgs eventArgs = CreatePackageOperationEventArgs(); |
||||||
|
|
||||||
|
action.Dispose(); |
||||||
|
FirePackageReferenceAddedEvent(project, eventArgs); |
||||||
|
|
||||||
|
scriptRunner.AssertWasNotCalled(runner => runner.Run(installScript)); |
||||||
|
} |
||||||
|
|
||||||
|
[Test] |
||||||
|
public void Constructor_OneProjectAndPackageReferencedRemovedFromProject_PackageUninstallScriptCreated() |
||||||
|
{ |
||||||
|
IPackageManagementProject project = AddProject(); |
||||||
|
CreateAction(); |
||||||
|
IPackageScript uninstallScript = CreatePackageScript(); |
||||||
|
SetUninstallScriptToReturnFromScriptFactory(uninstallScript); |
||||||
|
IPackage package = CreatePackage(); |
||||||
|
string installPath = @"d:\projects\MyProject\packages\foo"; |
||||||
|
PackageOperationEventArgs eventArgs = CreatePackageOperationEventArgs(package, installPath); |
||||||
|
|
||||||
|
FirePackageReferenceRemovedEvent(project, eventArgs); |
||||||
|
|
||||||
|
scriptFactory.AssertWasCalled(factory => factory.CreatePackageUninstallScript(package, installPath)); |
||||||
|
} |
||||||
|
|
||||||
|
[Test] |
||||||
|
public void Constructor_TwoProjectsAndPackageReferencedRemovedFromSecondProject_PackageUninstallScriptIsRun() |
||||||
|
{ |
||||||
|
IPackageManagementProject project1 = AddProject(); |
||||||
|
IPackageManagementProject project2 = AddProject(); |
||||||
|
CreateAction(); |
||||||
|
IPackageScript uninstallScript = CreatePackageScript(); |
||||||
|
SetUninstallScriptToReturnFromScriptFactory(uninstallScript); |
||||||
|
PackageOperationEventArgs eventArgs = CreatePackageOperationEventArgs(); |
||||||
|
|
||||||
|
FirePackageReferenceRemovedEvent(project2, eventArgs); |
||||||
|
|
||||||
|
scriptRunner.AssertWasCalled(runner => runner.Run(uninstallScript)); |
||||||
|
} |
||||||
|
|
||||||
|
[Test] |
||||||
|
public void Constructor_TwoProjectsAndPackageReferencedIsRemovedFromSecondProject_SecondProjectSetForPackageScript() |
||||||
|
{ |
||||||
|
IPackageManagementProject project1 = AddProject(); |
||||||
|
IPackageManagementProject project2 = AddProject(); |
||||||
|
CreateAction(); |
||||||
|
IPackageScript uninstallScript = CreatePackageScript(); |
||||||
|
SetUninstallScriptToReturnFromScriptFactory(uninstallScript); |
||||||
|
PackageOperationEventArgs eventArgs = CreatePackageOperationEventArgs(); |
||||||
|
|
||||||
|
FirePackageReferenceRemovedEvent(project2, eventArgs); |
||||||
|
|
||||||
|
Assert.AreEqual(project2, uninstallScript.Project); |
||||||
|
} |
||||||
|
|
||||||
|
[Test] |
||||||
|
public void Dispose_OneProjectAndPackageReferencedRemovedFromProjectAfterActionIsDisposed_PackageUninstallScriptIsNotRun() |
||||||
|
{ |
||||||
|
IPackageManagementProject project = AddProject(); |
||||||
|
CreateAction(); |
||||||
|
IPackageScript uninstallScript = CreatePackageScript(); |
||||||
|
SetUninstallScriptToReturnFromScriptFactory(uninstallScript); |
||||||
|
PackageOperationEventArgs eventArgs = CreatePackageOperationEventArgs(); |
||||||
|
|
||||||
|
action.Dispose(); |
||||||
|
FirePackageReferenceRemovedEvent(project, eventArgs); |
||||||
|
|
||||||
|
scriptRunner.AssertWasNotCalled(runner => runner.Run(uninstallScript)); |
||||||
|
} |
||||||
|
} |
||||||
|
} |
||||||
@ -0,0 +1,311 @@ |
|||||||
|
// 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.PackageManagement.Scripting; |
||||||
|
using NuGet; |
||||||
|
using NUnit.Framework; |
||||||
|
using PackageManagement.Tests.Helpers; |
||||||
|
using Rhino.Mocks; |
||||||
|
|
||||||
|
namespace PackageManagement.Tests |
||||||
|
{ |
||||||
|
[TestFixture] |
||||||
|
public class UpdateSolutionPackagesActionTests |
||||||
|
{ |
||||||
|
TestableUpdateSolutionPackagesAction action; |
||||||
|
IPackageManagementSolution solution; |
||||||
|
List<IPackageManagementProject> projects; |
||||||
|
IPackageRepository sourceRepository; |
||||||
|
|
||||||
|
void CreateAction() |
||||||
|
{ |
||||||
|
CreateSolution(); |
||||||
|
action = new TestableUpdateSolutionPackagesAction(solution); |
||||||
|
} |
||||||
|
|
||||||
|
void CreateActionWithOperations(params PackageOperation[] operations) |
||||||
|
{ |
||||||
|
CreateAction(); |
||||||
|
action.AddOperations(operations); |
||||||
|
} |
||||||
|
|
||||||
|
void CreateSolution() |
||||||
|
{ |
||||||
|
projects = new List<IPackageManagementProject>(); |
||||||
|
sourceRepository = MockRepository.GenerateStub<IPackageRepository>(); |
||||||
|
|
||||||
|
solution = MockRepository.GenerateStub<IPackageManagementSolution>(); |
||||||
|
solution |
||||||
|
.Stub(s => s.GetProjects(sourceRepository)) |
||||||
|
.Return(projects); |
||||||
|
} |
||||||
|
|
||||||
|
IPackageFromRepository CreatePackage(string packageId, string version) |
||||||
|
{ |
||||||
|
var package = MockRepository.GenerateStub<IPackageFromRepository>(); |
||||||
|
package.Stub(p => p.Id).Return(packageId); |
||||||
|
package.Stub(p => p.Version).Return(new SemanticVersion(version)); |
||||||
|
package.Stub(p => p.Repository).Return(sourceRepository); |
||||||
|
return package; |
||||||
|
} |
||||||
|
|
||||||
|
void ProjectHasOlderVersionOfPackage(IPackageManagementProject project, IPackageFromRepository package) |
||||||
|
{ |
||||||
|
project.Stub(p => p.HasOlderPackageInstalled(package)).Return(true); |
||||||
|
} |
||||||
|
|
||||||
|
PackageOperation CreateInstallOperationWithFile(string fileName) |
||||||
|
{ |
||||||
|
return PackageOperationHelper.CreateInstallOperationWithFile(fileName); |
||||||
|
} |
||||||
|
|
||||||
|
IPackageScriptRunner CreatePackageScriptRunner() |
||||||
|
{ |
||||||
|
return MockRepository.GenerateStub<IPackageScriptRunner>(); |
||||||
|
} |
||||||
|
|
||||||
|
IPackageManagementProject AddProjectToSolution() |
||||||
|
{ |
||||||
|
IPackageManagementProject project = MockRepository.GenerateStub<IPackageManagementProject>(); |
||||||
|
projects.Add(project); |
||||||
|
return project; |
||||||
|
} |
||||||
|
|
||||||
|
IPackageFromRepository AddPackageToAction(string packageId, string version) |
||||||
|
{ |
||||||
|
IPackageFromRepository package = CreatePackage(packageId, version); |
||||||
|
action.AddPackages(new IPackageFromRepository[] { package }); |
||||||
|
return package; |
||||||
|
} |
||||||
|
|
||||||
|
[Test] |
||||||
|
public void UpdateDependencies_DefaultValue_IsTrue() |
||||||
|
{ |
||||||
|
CreateActionWithOperations(); |
||||||
|
|
||||||
|
bool result = action.UpdateDependencies; |
||||||
|
|
||||||
|
Assert.IsTrue(result); |
||||||
|
} |
||||||
|
|
||||||
|
[Test] |
||||||
|
public void HasPackageScriptsToRun_PackageHasInitPowerShellScript_ReturnsTrue() |
||||||
|
{ |
||||||
|
PackageOperation operation = CreateInstallOperationWithFile(@"tools\install.ps1"); |
||||||
|
CreateActionWithOperations(operation); |
||||||
|
|
||||||
|
bool result = action.HasPackageScriptsToRun(); |
||||||
|
|
||||||
|
Assert.IsTrue(result); |
||||||
|
} |
||||||
|
|
||||||
|
[Test] |
||||||
|
public void HasPackageScriptsToRun_PackageHasOneTextFile_ReturnsFalse() |
||||||
|
{ |
||||||
|
PackageOperation operation = CreateInstallOperationWithFile(@"tools\readme.txt"); |
||||||
|
CreateActionWithOperations(operation); |
||||||
|
|
||||||
|
bool result = action.HasPackageScriptsToRun(); |
||||||
|
|
||||||
|
Assert.IsFalse(result); |
||||||
|
} |
||||||
|
|
||||||
|
[Test] |
||||||
|
public void Execute_OneProjectThatHasOlderVersionOfPackageBeingUpdated_PackageOperationsAreRun() |
||||||
|
{ |
||||||
|
PackageOperation operation = CreateInstallOperationWithFile(@"tools\readme.txt"); |
||||||
|
CreateActionWithOperations(operation); |
||||||
|
IPackageFromRepository package = AddPackageToAction("Test", "1.0"); |
||||||
|
IPackageManagementProject project = AddProjectToSolution(); |
||||||
|
var expectedOperations = new PackageOperation[] { operation }; |
||||||
|
|
||||||
|
action.Execute(); |
||||||
|
|
||||||
|
project.AssertWasCalled(p => p.RunPackageOperations(expectedOperations)); |
||||||
|
} |
||||||
|
|
||||||
|
[Test] |
||||||
|
public void Execute_OneProjectThatHasOlderVersionOfPackageBeingUpdated_PackageReferenceUpdatedInProject() |
||||||
|
{ |
||||||
|
CreateAction(); |
||||||
|
IPackageFromRepository package = AddPackageToAction("Test", "1.0"); |
||||||
|
IPackageManagementProject project = AddProjectToSolution(); |
||||||
|
ProjectHasOlderVersionOfPackage(project, package); |
||||||
|
|
||||||
|
action.Execute(); |
||||||
|
|
||||||
|
project.AssertWasCalled(p => p.UpdatePackageReference(package, action)); |
||||||
|
} |
||||||
|
|
||||||
|
[Test] |
||||||
|
public void Execute_OneProjectThatHasOlderVersionsOfTwoPackagesBeingUpdated_PackageReferenceUpdatedInProjectForBothPackages() |
||||||
|
{ |
||||||
|
CreateAction(); |
||||||
|
IPackageFromRepository package1 = AddPackageToAction("A", "1.0"); |
||||||
|
IPackageFromRepository package2 = AddPackageToAction("B", "1.0"); |
||||||
|
IPackageManagementProject project = AddProjectToSolution(); |
||||||
|
ProjectHasOlderVersionOfPackage(project, package1); |
||||||
|
ProjectHasOlderVersionOfPackage(project, package2); |
||||||
|
|
||||||
|
action.Execute(); |
||||||
|
|
||||||
|
project.AssertWasCalled(p => p.UpdatePackageReference(package1, action)); |
||||||
|
project.AssertWasCalled(p => p.UpdatePackageReference(package2, action)); |
||||||
|
} |
||||||
|
|
||||||
|
[Test] |
||||||
|
public void Execute_TwoProjectsThatHaveOlderVersionsOfPackageBeingUpdated_PackageReferenceUpdatedInBothProjects() |
||||||
|
{ |
||||||
|
CreateAction(); |
||||||
|
IPackageFromRepository package = AddPackageToAction("A", "1.0"); |
||||||
|
IPackageManagementProject project1 = AddProjectToSolution(); |
||||||
|
IPackageManagementProject project2 = AddProjectToSolution(); |
||||||
|
ProjectHasOlderVersionOfPackage(project1, package); |
||||||
|
ProjectHasOlderVersionOfPackage(project2, package); |
||||||
|
|
||||||
|
action.Execute(); |
||||||
|
|
||||||
|
project1.AssertWasCalled(p => p.UpdatePackageReference(package, action)); |
||||||
|
project2.AssertWasCalled(p => p.UpdatePackageReference(package, action)); |
||||||
|
} |
||||||
|
|
||||||
|
[Test] |
||||||
|
public void Execute_TwoProjectsAndOnlyOneHasOlderVersionsOfPackageBeingUpdated_PackageReferenceUpdatedInOnlyOneProject() |
||||||
|
{ |
||||||
|
CreateAction(); |
||||||
|
IPackageFromRepository package = AddPackageToAction("A", "1.0"); |
||||||
|
IPackageManagementProject project1 = AddProjectToSolution(); |
||||||
|
IPackageManagementProject project2 = AddProjectToSolution(); |
||||||
|
ProjectHasOlderVersionOfPackage(project2, package); |
||||||
|
|
||||||
|
action.Execute(); |
||||||
|
|
||||||
|
project1.AssertWasNotCalled(p => p.UpdatePackageReference(package, action)); |
||||||
|
project2.AssertWasCalled(p => p.UpdatePackageReference(package, action)); |
||||||
|
} |
||||||
|
|
||||||
|
[Test] |
||||||
|
public void Execute_PackageScriptRunnerSet_RunPackageScriptsActionCreatedUsingPackageScriptRunner() |
||||||
|
{ |
||||||
|
CreateAction(); |
||||||
|
IPackageScriptRunner expectedRunner = CreatePackageScriptRunner(); |
||||||
|
action.PackageScriptRunner = expectedRunner; |
||||||
|
AddPackageToAction("Test", "1.0"); |
||||||
|
AddProjectToSolution(); |
||||||
|
|
||||||
|
action.Execute(); |
||||||
|
|
||||||
|
IPackageScriptRunner actualRunner = action.ScriptRunnerPassedToCreateRunPackageScriptsAction; |
||||||
|
Assert.AreEqual(expectedRunner, actualRunner); |
||||||
|
} |
||||||
|
|
||||||
|
[Test] |
||||||
|
public void Execute_PackageScriptRunnerSet_RunPackageScriptsActionCreatedUsingProjects() |
||||||
|
{ |
||||||
|
CreateAction(); |
||||||
|
AddPackageToAction("Test", "1.0"); |
||||||
|
IPackageManagementProject project1 = AddProjectToSolution(); |
||||||
|
IPackageManagementProject project2 = AddProjectToSolution(); |
||||||
|
var expectedProjects = new IPackageManagementProject[] { |
||||||
|
project1, |
||||||
|
project2 |
||||||
|
}; |
||||||
|
action.PackageScriptRunner = CreatePackageScriptRunner(); |
||||||
|
|
||||||
|
action.Execute(); |
||||||
|
|
||||||
|
Assert.AreEqual(expectedProjects, action.ProjectsPassedToCreateRunPackageScriptsAction); |
||||||
|
} |
||||||
|
|
||||||
|
[Test] |
||||||
|
public void Execute_PackageScriptRunnerSet_RunPackageScriptsActionIsDisposed() |
||||||
|
{ |
||||||
|
CreateAction(); |
||||||
|
AddPackageToAction("Test", "1.0"); |
||||||
|
AddProjectToSolution(); |
||||||
|
action.PackageScriptRunner = CreatePackageScriptRunner(); |
||||||
|
|
||||||
|
action.Execute(); |
||||||
|
|
||||||
|
Assert.IsTrue(action.IsRunPackageScriptsActionDisposed); |
||||||
|
} |
||||||
|
|
||||||
|
[Test] |
||||||
|
public void Execute_NullPackageScriptRunner_RunPackageScriptsActionIsNotCreated() |
||||||
|
{ |
||||||
|
CreateAction(); |
||||||
|
AddPackageToAction("Test", "1.0"); |
||||||
|
AddProjectToSolution(); |
||||||
|
action.PackageScriptRunner = null; |
||||||
|
|
||||||
|
action.Execute(); |
||||||
|
|
||||||
|
Assert.IsFalse(action.IsRunPackageScriptsActionCreated); |
||||||
|
} |
||||||
|
|
||||||
|
[Test] |
||||||
|
public void Execute_PackageScriptRunnerSet_PackageReferenceUpdatedInProject() |
||||||
|
{ |
||||||
|
CreateAction(); |
||||||
|
IPackageFromRepository package = AddPackageToAction("Test", "1.0"); |
||||||
|
IPackageManagementProject project = AddProjectToSolution(); |
||||||
|
ProjectHasOlderVersionOfPackage(project, package); |
||||||
|
action.PackageScriptRunner = CreatePackageScriptRunner(); |
||||||
|
|
||||||
|
action.Execute(); |
||||||
|
|
||||||
|
project.AssertWasCalled(p => p.UpdatePackageReference(package, action)); |
||||||
|
} |
||||||
|
|
||||||
|
[Test] |
||||||
|
public void Execute_PackageScriptRunnerSet_ProjectsFromSolutionReadOnlyOnce() |
||||||
|
{ |
||||||
|
CreateAction(); |
||||||
|
IPackageFromRepository package = AddPackageToAction("Test", "1.0"); |
||||||
|
IPackageManagementProject project = AddProjectToSolution(); |
||||||
|
ProjectHasOlderVersionOfPackage(project, package); |
||||||
|
action.PackageScriptRunner = CreatePackageScriptRunner(); |
||||||
|
|
||||||
|
action.Execute(); |
||||||
|
|
||||||
|
solution.AssertWasCalled( |
||||||
|
s => s.GetProjects(sourceRepository), |
||||||
|
setupConstraint => setupConstraint.Repeat.Once()); |
||||||
|
} |
||||||
|
|
||||||
|
[Test] |
||||||
|
public void Execute_NullPackageScriptRunner_ProjectsFromSolutionReadOnlyOnce() |
||||||
|
{ |
||||||
|
CreateAction(); |
||||||
|
IPackageFromRepository package = AddPackageToAction("Test", "1.0"); |
||||||
|
IPackageManagementProject project = AddProjectToSolution(); |
||||||
|
ProjectHasOlderVersionOfPackage(project, package); |
||||||
|
action.PackageScriptRunner = null; |
||||||
|
|
||||||
|
action.Execute(); |
||||||
|
|
||||||
|
solution.AssertWasCalled( |
||||||
|
s => s.GetProjects(sourceRepository), |
||||||
|
setupConstraint => setupConstraint.Repeat.Once()); |
||||||
|
} |
||||||
|
|
||||||
|
[Test] |
||||||
|
public void Execute_TwoProjectsBeingUpdated_LoggerSetOnBothProjects() |
||||||
|
{ |
||||||
|
CreateAction(); |
||||||
|
ILogger logger = MockRepository.GenerateStub<ILogger>(); |
||||||
|
action.Logger = logger; |
||||||
|
IPackageFromRepository package = AddPackageToAction("A", "1.0"); |
||||||
|
IPackageManagementProject project1 = AddProjectToSolution(); |
||||||
|
IPackageManagementProject project2 = AddProjectToSolution(); |
||||||
|
|
||||||
|
action.Execute(); |
||||||
|
|
||||||
|
Assert.AreEqual(logger, project1.Logger); |
||||||
|
Assert.AreEqual(logger, project2.Logger); |
||||||
|
} |
||||||
|
} |
||||||
|
} |
||||||
Loading…
Reference in new issue