12 changed files with 402 additions and 1 deletions
@ -0,0 +1,51 @@
@@ -0,0 +1,51 @@
|
||||
// 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.Management.Automation; |
||||
using ICSharpCode.PackageManagement.Scripting; |
||||
|
||||
namespace ICSharpCode.PackageManagement.Cmdlets |
||||
{ |
||||
[Cmdlet(VerbsLifecycle.Invoke, "RunPackageScripts", DefaultParameterSetName = ParameterAttribute.AllParameterSets)] |
||||
public class InvokeRunPackageScriptsCmdlet : PackageManagementCmdlet |
||||
{ |
||||
PackageScriptsToRun scriptsToBeRun; |
||||
|
||||
public InvokeRunPackageScriptsCmdlet() |
||||
: this( |
||||
PackageManagementServices.PackageScriptsToRun, |
||||
PackageManagementServices.ConsoleHost, |
||||
null) |
||||
{ |
||||
} |
||||
|
||||
public InvokeRunPackageScriptsCmdlet( |
||||
PackageScriptsToRun scriptsToBeRun, |
||||
IPackageManagementConsoleHost consoleHost, |
||||
ICmdletTerminatingError terminatingError) |
||||
: base(consoleHost, terminatingError) |
||||
{ |
||||
this.scriptsToBeRun = scriptsToBeRun; |
||||
} |
||||
|
||||
protected override void ProcessRecord() |
||||
{ |
||||
RunPackageScripts(); |
||||
} |
||||
|
||||
void RunPackageScripts() |
||||
{ |
||||
IPackageScript script = null; |
||||
while (GetNextScript(out script)) { |
||||
Run(script); |
||||
} |
||||
} |
||||
|
||||
bool GetNextScript(out IPackageScript script) |
||||
{ |
||||
script = scriptsToBeRun.GetNextScript(); |
||||
return script != null; |
||||
} |
||||
} |
||||
} |
||||
@ -0,0 +1,41 @@
@@ -0,0 +1,41 @@
|
||||
// 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.PackageManagement.Cmdlets; |
||||
using ICSharpCode.PackageManagement.Scripting; |
||||
using PackageManagement.Tests.Helpers; |
||||
|
||||
namespace PackageManagement.Cmdlets.Tests.Helpers |
||||
{ |
||||
public class TestableInvokeRunPackageScriptsCmdlet : InvokeRunPackageScriptsCmdlet |
||||
{ |
||||
public FakeCmdletTerminatingError FakeCmdletTerminatingError; |
||||
public FakePackageManagementConsoleHost FakePackageManagementConsoleHost; |
||||
public PackageScriptsToRun ScriptsToBeRun; |
||||
|
||||
public TestableInvokeRunPackageScriptsCmdlet() |
||||
: this( |
||||
new PackageScriptsToRun(), |
||||
new FakePackageManagementConsoleHost(), |
||||
new FakeCmdletTerminatingError()) |
||||
{ |
||||
} |
||||
|
||||
public TestableInvokeRunPackageScriptsCmdlet( |
||||
PackageScriptsToRun scriptsToBeRun, |
||||
FakePackageManagementConsoleHost consoleHost, |
||||
FakeCmdletTerminatingError cmdletTerminatingError) |
||||
: base(scriptsToBeRun, consoleHost, cmdletTerminatingError) |
||||
{ |
||||
this.ScriptsToBeRun = scriptsToBeRun; |
||||
this.FakePackageManagementConsoleHost = consoleHost; |
||||
this.FakeCmdletTerminatingError = cmdletTerminatingError; |
||||
} |
||||
|
||||
public void CallProcessRecord() |
||||
{ |
||||
base.ProcessRecord(); |
||||
} |
||||
} |
||||
} |
||||
@ -0,0 +1,95 @@
@@ -0,0 +1,95 @@
|
||||
// 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.PackageManagement.Scripting; |
||||
using NUnit.Framework; |
||||
using PackageManagement.Cmdlets.Tests.Helpers; |
||||
using PackageManagement.Tests.Helpers; |
||||
|
||||
namespace PackageManagement.Cmdlets.Tests |
||||
{ |
||||
[TestFixture] |
||||
public class InvokeRunPackageScriptsCmdletTests |
||||
{ |
||||
TestableInvokeRunPackageScriptsCmdlet cmdlet; |
||||
FakeCmdletTerminatingError fakeTerminatingError; |
||||
PackageScriptsToRun scriptsToRun; |
||||
|
||||
void CreateCmdlet() |
||||
{ |
||||
cmdlet = new TestableInvokeRunPackageScriptsCmdlet(); |
||||
fakeTerminatingError = cmdlet.FakeCmdletTerminatingError; |
||||
scriptsToRun = cmdlet.ScriptsToBeRun; |
||||
} |
||||
|
||||
void RunCmdlet() |
||||
{ |
||||
cmdlet.CallProcessRecord(); |
||||
} |
||||
|
||||
FakePackageScript AddScript() |
||||
{ |
||||
var script = new FakePackageScript(); |
||||
scriptsToRun.AddScript(script); |
||||
return script; |
||||
} |
||||
|
||||
[Test] |
||||
public void ProcessRecord_OnePackageScriptToRun_PackageScriptIsRun() |
||||
{ |
||||
CreateCmdlet(); |
||||
FakePackageScript script = AddScript(); |
||||
RunCmdlet(); |
||||
|
||||
bool executed = script.IsExecuted; |
||||
|
||||
Assert.IsTrue(executed); |
||||
} |
||||
|
||||
[Test] |
||||
public void ProcessRecord_TwoPackageScriptsToRun_SecondPackageScriptIsRun() |
||||
{ |
||||
CreateCmdlet(); |
||||
AddScript(); |
||||
FakePackageScript script = AddScript(); |
||||
RunCmdlet(); |
||||
|
||||
bool executed = script.IsExecuted; |
||||
|
||||
Assert.IsTrue(executed); |
||||
} |
||||
|
||||
[Test] |
||||
public void ProcessRecord_OnePackageScriptToRun_PackageScriptSessionIsCmdlet() |
||||
{ |
||||
CreateCmdlet(); |
||||
FakePackageScript script = AddScript(); |
||||
RunCmdlet(); |
||||
|
||||
IPackageScriptSession session = script.SessionPassedToExecute; |
||||
|
||||
Assert.AreEqual(cmdlet, session); |
||||
} |
||||
|
||||
[Test] |
||||
public void ProcessRecord_TwoPackageScriptsToRun_TwoPackageScriptSessionIsCmdlet() |
||||
{ |
||||
CreateCmdlet(); |
||||
AddScript(); |
||||
FakePackageScript script = AddScript(); |
||||
RunCmdlet(); |
||||
|
||||
IPackageScriptSession session = script.SessionPassedToExecute; |
||||
|
||||
Assert.AreEqual(cmdlet, session); |
||||
} |
||||
|
||||
[Test] |
||||
public void ProcessRecord_NoPackageScriptsToRun_NullReferenceExceptionIsNotThrown() |
||||
{ |
||||
CreateCmdlet(); |
||||
Assert.DoesNotThrow(() => RunCmdlet()); |
||||
} |
||||
} |
||||
} |
||||
@ -0,0 +1,32 @@
@@ -0,0 +1,32 @@
|
||||
// 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.Concurrent; |
||||
|
||||
namespace ICSharpCode.PackageManagement.Scripting |
||||
{ |
||||
public class PackageScriptsToRun |
||||
{ |
||||
ConcurrentQueue<IPackageScript> scripts = new ConcurrentQueue<IPackageScript>(); |
||||
|
||||
public IPackageScript GetNextScript() |
||||
{ |
||||
IPackageScript script = null; |
||||
if (GetNextScript(out script)) { |
||||
return script; |
||||
} |
||||
return null; |
||||
} |
||||
|
||||
public bool GetNextScript(out IPackageScript script) |
||||
{ |
||||
return scripts.TryDequeue(out script); |
||||
} |
||||
|
||||
public void AddScript(IPackageScript script) |
||||
{ |
||||
scripts.Enqueue(script); |
||||
} |
||||
} |
||||
} |
||||
@ -0,0 +1,156 @@
@@ -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 ICSharpCode.PackageManagement.Scripting; |
||||
using NUnit.Framework; |
||||
using PackageManagement.Tests.Helpers; |
||||
|
||||
namespace PackageManagement.Tests.Scripting |
||||
{ |
||||
[TestFixture] |
||||
public class PackageScriptsToRunTests |
||||
{ |
||||
PackageScriptsToRun scriptsToRun; |
||||
|
||||
void CreateScriptsToBeRun() |
||||
{ |
||||
scriptsToRun = new PackageScriptsToRun(); |
||||
} |
||||
|
||||
FakePackageScript AddScript() |
||||
{ |
||||
var script = new FakePackageScript(); |
||||
scriptsToRun.AddScript(script); |
||||
return script; |
||||
} |
||||
|
||||
[Test] |
||||
public void GetNextScript_NewInstance_ReturnsNull() |
||||
{ |
||||
CreateScriptsToBeRun(); |
||||
IPackageScript script = scriptsToRun.GetNextScript(); |
||||
|
||||
Assert.IsNull(script); |
||||
} |
||||
|
||||
[Test] |
||||
public void GetNextScript_NewInstance_ReturnsFalse() |
||||
{ |
||||
CreateScriptsToBeRun(); |
||||
IPackageScript script = null; |
||||
bool result = scriptsToRun.GetNextScript(out script); |
||||
|
||||
Assert.IsFalse(result); |
||||
} |
||||
|
||||
[Test] |
||||
public void GetNextScript_OneScriptAdded_ReturnsScript() |
||||
{ |
||||
CreateScriptsToBeRun(); |
||||
FakePackageScript expectedScript = AddScript(); |
||||
|
||||
IPackageScript script = scriptsToRun.GetNextScript(); |
||||
|
||||
Assert.AreEqual(expectedScript, script); |
||||
} |
||||
|
||||
[Test] |
||||
public void GetNextScript_OneScriptAdded_ReturnsScriptInOutParameter() |
||||
{ |
||||
CreateScriptsToBeRun(); |
||||
FakePackageScript expectedScript = AddScript(); |
||||
|
||||
IPackageScript script = null; |
||||
scriptsToRun.GetNextScript(out script); |
||||
|
||||
Assert.AreEqual(expectedScript, script); |
||||
} |
||||
|
||||
[Test] |
||||
public void GetNextScript_OneScriptAdded_ReturnsTrue() |
||||
{ |
||||
CreateScriptsToBeRun(); |
||||
FakePackageScript expectedScript = AddScript(); |
||||
|
||||
IPackageScript script = null; |
||||
bool result = scriptsToRun.GetNextScript(out script); |
||||
|
||||
Assert.IsTrue(result); |
||||
} |
||||
|
||||
[Test] |
||||
public void GetNextScript_CalledTwiceWithOneScriptAdded_ReturnsNullOnSecondCall() |
||||
{ |
||||
CreateScriptsToBeRun(); |
||||
FakePackageScript expectedScript = AddScript(); |
||||
scriptsToRun.GetNextScript(); |
||||
IPackageScript script = scriptsToRun.GetNextScript(); |
||||
|
||||
Assert.IsNull(script); |
||||
} |
||||
|
||||
[Test] |
||||
public void GetNextScript_CalledTwiceWithOneScriptAdded_ReturnsNullScriptInOutParameterOnSecondCall() |
||||
{ |
||||
CreateScriptsToBeRun(); |
||||
FakePackageScript expectedScript = AddScript(); |
||||
scriptsToRun.GetNextScript(); |
||||
IPackageScript script = null; |
||||
scriptsToRun.GetNextScript(out script); |
||||
|
||||
Assert.IsNull(script); |
||||
} |
||||
|
||||
[Test] |
||||
public void GetNextScript_CalledTwiceWithOneScriptAdded_ReturnsFalseOnSecondCall() |
||||
{ |
||||
CreateScriptsToBeRun(); |
||||
FakePackageScript expectedScript = AddScript(); |
||||
scriptsToRun.GetNextScript(); |
||||
|
||||
IPackageScript script = null; |
||||
bool result = scriptsToRun.GetNextScript(out script); |
||||
|
||||
Assert.IsFalse(result); |
||||
} |
||||
|
||||
[Test] |
||||
public void GetNextScript_CalledTwiceWithTwoScriptsAdded_ReturnsSecondScriptAdded() |
||||
{ |
||||
CreateScriptsToBeRun(); |
||||
AddScript(); |
||||
FakePackageScript expectedScript = AddScript(); |
||||
scriptsToRun.GetNextScript(); |
||||
IPackageScript script = scriptsToRun.GetNextScript(); |
||||
|
||||
Assert.AreEqual(expectedScript, script); |
||||
} |
||||
|
||||
[Test] |
||||
public void GetNextScript_CalledTwiceWithTwoScriptsAdded_ReturnsSecondScriptAddedInOutParameter() |
||||
{ |
||||
CreateScriptsToBeRun(); |
||||
AddScript(); |
||||
FakePackageScript expectedScript = AddScript(); |
||||
scriptsToRun.GetNextScript(); |
||||
IPackageScript script = null; |
||||
scriptsToRun.GetNextScript(out script); |
||||
|
||||
Assert.AreEqual(expectedScript, script); |
||||
} |
||||
|
||||
[Test] |
||||
public void GetNextScript_CalledTwiceWithTwoScriptsAdded_ReturnsTrueOnSecondCall() |
||||
{ |
||||
CreateScriptsToBeRun(); |
||||
AddScript(); |
||||
FakePackageScript expectedScript = AddScript(); |
||||
scriptsToRun.GetNextScript(); |
||||
IPackageScript script = null; |
||||
bool result = scriptsToRun.GetNextScript(out script); |
||||
|
||||
Assert.IsTrue(result); |
||||
} |
||||
} |
||||
} |
||||
Loading…
Reference in new issue