protected override void Process([NotNull] ProcessorArgs args) { Install9Args arguments = (Install9Args)args; Task task = arguments.Tasker.Tasks.FirstOrDefault(t => t.Name == this.taskName); PowerShellTask powershellTask = task as PowerShellTask; if (powershellTask != null) { string result = powershellTask.GetScript(); if (task.State == TaskState.Failed) { throw new AggregateException(string.Format("Failed to execute {0} task. \n{1}", task.Name, result)); } string path = Path.Combine(arguments.Tasker.GlobalParams.First(p => p.Name == "FilesRoot").Value, string.Format("generated_scripts/{0}", task.UnInstall ? "Uninstall" : "Install")); Directory.CreateDirectory(path); using (StreamWriter writer = new StreamWriter(Path.Combine(path, string.Format("{0}.ps1", task.Name)))) { writer.Write(powershellTask.GetScript()); } } else { this.Skip(); } }
public void ShouldLoadAllValuesFromConfiguration() { string xml = @" <powershell> <script>testscript.ps1</script> <executable>c:\powershell\powershell.exe</executable> <scriptsDirectory>D:\CruiseControl</scriptsDirectory> <buildArgs>-noprofile</buildArgs> <buildTimeoutSeconds>4</buildTimeoutSeconds> <successExitCodes>1</successExitCodes> <environment> <variable name=""Env1"" value=""value1""/> <variable name=""Env2"" value=""value2""/> </environment> </powershell>"; PowerShellTask task = (PowerShellTask)NetReflector.Read(xml); Assert.AreEqual(@"c:\powershell\powershell.exe", task.Executable); Assert.AreEqual(@"testscript.ps1", task.Script); Assert.AreEqual(@"D:\CruiseControl", task.ConfiguredScriptsDirectory); Assert.AreEqual(@"-noprofile", task.BuildArgs); Assert.AreEqual(4, task.BuildTimeoutSeconds); Assert.AreEqual("1", task.SuccessExitCodes); Assert.AreEqual("value1", task.EnvironmentVariables[0].value); Assert.AreEqual("Env1", task.EnvironmentVariables[0].name); Assert.AreEqual("value2", task.EnvironmentVariables[1].value); Assert.AreEqual("Env2", task.EnvironmentVariables[1].name); }
public void SuccessExitCodesHandlesEmpty() { var task = new PowerShellTask(); task.SuccessExitCodes = string.Empty; Assert.AreEqual(string.Empty, task.SuccessExitCodes); }
public void SuccessExitCodesIsSuccessfullySplitAndRebuilt() { var task = new PowerShellTask(); task.SuccessExitCodes = "1,2,3"; Assert.AreEqual("1,2,3", task.SuccessExitCodes); }
/// <summary> /// Creates a PowerShell object. /// </summary> protected override void ProcessRecord() { TaskBase t; switch (Type) { case TaskType.BatchFile: if (ForceBatchFileTaskType) { #pragma warning disable CS0618 // Type or member is obsolete t = new BatchFileTask(Path); #pragma warning restore CS0618 // Type or member is obsolete } else { t = new CommandLineTask(Path); } t.Arguments = Arguments; t.Name = Name; break; case TaskType.Executable: t = new ExecutableTask(Path); t.Arguments = Arguments; t.Name = Name; break; case TaskType.External: t = new ExternalTask(Name); t.Arguments = Arguments; break; case TaskType.PowerShell: t = new PowerShellTask(Path); t.Arguments = Arguments; t.Name = Name; break; case TaskType.TAEFDll: t = new TAEFTest(Path); t.Arguments = Arguments; t.Name = Name; break; case TaskType.UWP: t = new UWPTask(Path); t.Arguments = Arguments; t.Name = Name; break; default: throw new FactoryOrchestratorException(Resources.InvalidTaskRunTypeException); } this.WriteObject(t); }
public void ToStringReturnsTheBaseDirectoryAndExe() { var task = new PowerShellTask { ConfiguredScriptsDirectory = "testDir" }; var actual = task.ToString(); var expected = " BaseDirectory: testDir, PowerShell: powershell.exe"; Assert.AreEqual(expected, actual); }
public void DefaultPowerShellShouldBe2IfInstalled() { var mockRegistry2 = new Mock <IRegistry>(); PowerShellTask task = new PowerShellTask((IRegistry)mockRegistry2.Object, (ProcessExecutor)mockProcessExecutor.Object); mockRegistry2.Setup(registry => registry.GetLocalMachineSubKeyValue(PowerShellTask.regkeypowershell2, PowerShellTask.regkeyholder)).Returns(POWERSHELL2_PATH).Verifiable(); Assert.AreEqual(POWERSHELL2_PATH + "\\powershell.exe", task.Executable); mockRegistry2.Verify(); mockProcessExecutor.Verify(); }
public void ShouldThrowAnExceptionIfPowerShellNotInstalled() { var mockRegistry2 = new Mock <IRegistry>(); PowerShellTask task = new PowerShellTask((IRegistry)mockRegistry2.Object, (ProcessExecutor)mockProcessExecutor.Object); mockRegistry2.Setup(registry => registry.GetLocalMachineSubKeyValue(PowerShellTask.regkeypowershell2, PowerShellTask.regkeyholder)).Returns(() => null).Verifiable(); mockRegistry2.Setup(registry => registry.GetLocalMachineSubKeyValue(PowerShellTask.regkeypowershell1, PowerShellTask.regkeyholder)).Returns(() => null).Verifiable(); Assert.AreEqual(POWERSHELL1_PATH + "\\powershell.exe", task.Executable); mockRegistry2.Verify(); mockProcessExecutor.Verify(); }
public void DefaultPowerShellShouldBe1IfNothingNewerInstalled() { var mockRegistry2 = new Mock <IRegistry>(); PowerShellTask task = new PowerShellTask((IRegistry)mockRegistry2.Object, (ProcessExecutor)mockProcessExecutor.Object); mockRegistry2.Setup(registry => registry.GetLocalMachineSubKeyValue(PowerShellTask.regkeypowershell2, PowerShellTask.regkeyholder)).Returns(() => null).Verifiable(); mockRegistry2.Setup(registry => registry.GetLocalMachineSubKeyValue(PowerShellTask.regkeypowershell1, PowerShellTask.regkeyholder)).Returns(POWERSHELL1_PATH).Verifiable(); Assert.AreEqual(System.IO.Path.Combine(POWERSHELL1_PATH, "powershell.exe"), task.Executable); mockRegistry2.Verify(); mockProcessExecutor.Verify(); }
public void DefaultPowerShellShouldBe2IfInstalled() { IMock mockRegistry2 = new DynamicMock(typeof(IRegistry)); PowerShellTask task = new PowerShellTask((IRegistry)mockRegistry2.MockInstance, (ProcessExecutor)mockProcessExecutor.MockInstance); mockRegistry2.ExpectAndReturn("GetLocalMachineSubKeyValue", POWERSHELL2_PATH, PowerShellTask.regkeypowershell2, PowerShellTask.regkeyholder); Assert.AreEqual(POWERSHELL2_PATH + "\\powershell.exe", task.Executable); mockRegistry2.Verify(); mockProcessExecutor.Verify(); }
/// <summary> /// Creates a PowerShell object. /// </summary> protected override void ProcessRecord() { TaskBase t; switch (Type) { case TaskType.BatchFile: t = new BatchFileTask(Path); t.Arguments = Arguments; t.Name = Name; break; case TaskType.Executable: t = new ExecutableTask(Path); t.Arguments = Arguments; t.Name = Name; break; case TaskType.External: t = new ExternalTask(Name); t.Arguments = Arguments; break; case TaskType.PowerShell: t = new PowerShellTask(Path); t.Arguments = Arguments; t.Name = Name; break; case TaskType.TAEFDll: t = new TAEFTest(Path); t.Arguments = Arguments; t.Name = Name; break; case TaskType.UWP: t = new UWPTask(Path); t.Arguments = Arguments; t.Name = Name; break; default: throw new FactoryOrchestratorException(Resources.InvalidTaskRunTypeException); } this.WriteObject(t); }
public void ShouldLoadMinimalValuesFromConfiguration() { string xml = @"<powershell script=""myScript.ps1"" />"; PowerShellTask task = (PowerShellTask)NetReflector.Read(xml); // Need to override the default registry search, otherwise this fails on a machine that does not have PowerShell installed var registryMock2 = new Mock <IRegistry>(); task.Registry = (IRegistry)registryMock2.Object; registryMock2.Setup(registry => registry.GetLocalMachineSubKeyValue( @"SOFTWARE\Microsoft\PowerShell\2\PowerShellEngine", @"ApplicationBase")).Returns(@"C:\Windows\System32\WindowsPowerShell\v1.0").Verifiable(); Assert.AreEqual(@"C:\Windows\System32\WindowsPowerShell\v1.0\powershell.exe", task.Executable); Assert.AreEqual(@"myScript.ps1", task.Script); Assert.AreEqual(PowerShellTask.DefaultScriptsDirectory, task.ConfiguredScriptsDirectory); Assert.AreEqual(PowerShellTask.DefaultBuildTimeOut, task.BuildTimeoutSeconds); Assert.AreEqual(string.Empty, task.SuccessExitCodes); Assert.AreEqual(0, task.EnvironmentVariables.Length, "Checking environment variable array size."); }
public void Setup() { mockRegistry = new Mock <IRegistry>(); CreateProcessExecutorMock(POWERSHELL1_PATH); mytask = new PowerShellTask((IRegistry)mockRegistry.Object, (ProcessExecutor)mockProcessExecutor.Object); }
private TaskBase CreateTestFromFlyout(TaskType testType) { activeTaskIsNowBg = false; if (activeTask == null) { activeTaskIndex = -1; switch (testType) { case TaskType.ConsoleExe: activeTask = new ExecutableTask(TaskPathBox.Text); break; case TaskType.UWP: activeTask = new UWPTask(AppComboBox.SelectedItem.ToString()); break; case TaskType.External: activeTask = new ExternalTask(TaskPathBox.Text); break; case TaskType.TAEFDll: activeTask = new TAEFTest(TaskPathBox.Text); break; case TaskType.BatchFile: if (supportsCommandLineTask) { activeTask = new CommandLineTask(TaskPathBox.Text); } else { #pragma warning disable CS0618 // Type or member is obsolete activeTask = new BatchFileTask(TaskPathBox.Text); #pragma warning restore CS0618 // Type or member is obsolete } break; case TaskType.PowerShell: activeTask = new PowerShellTask(TaskPathBox.Text); break; } } if (!String.IsNullOrWhiteSpace(TestNameBox.Text)) { activeTask.Name = TestNameBox.Text; } if (!string.IsNullOrWhiteSpace(TimeoutBox.Text)) { try { activeTask.TimeoutSeconds = Int32.Parse(TimeoutBox.Text, CultureInfo.CurrentCulture); } catch (Exception) { activeTask.TimeoutSeconds = -1; } } else { activeTask.TimeoutSeconds = -1; } if (!string.IsNullOrWhiteSpace(RetryBox.Text)) { try { activeTask.MaxNumberOfRetries = UInt32.Parse(RetryBox.Text, CultureInfo.CurrentCulture); } catch (Exception) { activeTask.MaxNumberOfRetries = 0; } } else { activeTask.MaxNumberOfRetries = 0; } switch (testType) { case TaskType.ConsoleExe: case TaskType.BatchFile: case TaskType.PowerShell: case TaskType.TAEFDll: case TaskType.External: var task = activeTask as TaskBase; task.Path = TaskPathBox.Text; task.Arguments = ArgumentsBox.Text; break; case TaskType.UWP: var uwpTask = activeTask as UWPTask; uwpTask.Path = AppComboBox.SelectedItem.ToString(); uwpTask.Arguments = ArgumentsBox.Text; uwpTask.AutoPassedIfLaunched = (bool)AutoPassCheck.IsChecked; uwpTask.TerminateOnCompleted = (bool)TerminateOnCompleteCheck.IsChecked; break; } switch (testType) { case TaskType.ConsoleExe: case TaskType.BatchFile: case TaskType.PowerShell: var task = activeTask as ExecutableTask; task.BackgroundTask = (bool)BgTaskBox.IsChecked; if (task.BackgroundTask) { activeTaskIsNowBg = true; } break; default: break; } activeTask.AbortTaskListOnFailed = (bool)AbortOnFailBox.IsChecked; activeTask.RunInContainer = (bool)ContainerBox.IsChecked; return(activeTask); }
public void Setup() { mockRegistry = new DynamicMock(typeof(IRegistry)); CreateProcessExecutorMock(POWERSHELL1_PATH); mytask = new PowerShellTask((IRegistry)mockRegistry.MockInstance, (ProcessExecutor)mockProcessExecutor.MockInstance); }