public void WhenInvokeWriteHost() { var buildTaskLog = new MockBuildTaskLog(); var commandFactory = new CommandFactory { File = "Write-Host 'hello'" }; var exception = Assert.Throws<ArgumentException>(() => InvokePowerShell.Execute(commandFactory, buildTaskLog)); Assert.AreEqual( "Processing File 'Write-Host 'hello'' failed because the file does not have a '.ps1' " + "extension. Specify a valid Windows PowerShell script file name, and then try again.", exception.Message); }
public void WhenInvokingNonExistentScriptFile() { var buildTaskLog = new MockBuildTaskLog(); var commandFactory = new CommandFactory { File = "7d680d7c-3214-43c6-8eec-3b00a40ab91e.ps1" }; var exception = Assert.Throws<ArgumentException>(() => InvokePowerShell.Execute(commandFactory, buildTaskLog)); Assert.AreEqual( "The argument '7d680d7c-3214-43c6-8eec-3b00a40ab91e.ps1' to the File parameter " + "does not exist. Provide the path to an existing '.ps1' file as an argument to the File parameter.", exception.Message); }
public void WhenInvokeReadHostAsSecureString() { var buildTaskLog = new MockBuildTaskLog(); var commandFactory = new CommandFactory { Expression = "Read-Host -AsSecureString" }; InvokePowerShell.Execute(commandFactory, buildTaskLog); buildTaskLog.AssertLogEntriesAre( new LogError( file: "<No file>", lineNumber: 1, message: "Windows PowerShell is in non-interactive mode. Read and Prompt functionality is not available." + Environment.NewLine + "at <ScriptBlock>, <No file>: line 1")); }
public void WhenInvokeWriteDebug() { var buildTaskLog = new MockBuildTaskLog(); var commandFactory = new CommandFactory { Expression = "Write-Debug 'hello' -Debug" }; InvokePowerShell.Execute(commandFactory, buildTaskLog); buildTaskLog.AssertLogEntriesAre( new LogMessage("hello", MessageImportance.Low), new LogError( file: "<No file>", lineNumber: 1, message: "Windows PowerShell is in non-interactive mode. Read and Prompt functionality is not available." + Environment.NewLine + "at <ScriptBlock>, <No file>: line 1")); }
public void WhenInvokingScriptFileThatHasDefaultParameterSetWithAutoArguments() { var buildTaskLog = new MockBuildTaskLog(); var scriptFilePath = GetTestResourceFilePath("WhenInvokingScriptFileThatHasDefaultParameterSetWithAutoArguments.ps1"); var commandFactory = new CommandFactory { File = scriptFilePath, AutoParameters = new ITaskItem[] { new MockPropertyTaskItem(name: "Arg1", value: "foo"), new MockPropertyTaskItem(name: "Arg2", value: "bar"), } }; InvokePowerShell.Execute(commandFactory, buildTaskLog); buildTaskLog.AssertLogEntriesAre( new LogMessage("Arg1 = foo", MessageImportance.High), new LogMessage("Arg2 = ", MessageImportance.High)); }
public void WhenInvokingScriptFile() { var buildTaskLog = new MockBuildTaskLog(); var scriptFilePath = GetTestResourceFilePath("WhenInvokingScriptFile.ps1"); var commandFactory = new CommandFactory { File = scriptFilePath }; InvokePowerShell.Execute(commandFactory, buildTaskLog); buildTaskLog.AssertLogEntriesAre( new LogMessage("Alive", MessageImportance.High), new LogWarning( file: scriptFilePath, lineNumber: 2, message: "Danger"), new LogError( file: scriptFilePath, lineNumber: 3, message: "Dead" + Environment.NewLine + "at <ScriptBlock>, " + scriptFilePath + ": line 3" + Environment.NewLine + "at <ScriptBlock>, <No file>: line 1")); }
public void WhenInvokingScriptFileThatHasNoDefaultParameterSetWithAutoArguments() { var buildTaskLog = new MockBuildTaskLog(); var scriptFilePath = GetTestResourceFilePath("WhenInvokingScriptFileThatHasNoDefaultParameterSetWithAutoArguments.ps1"); var commandFactory = new CommandFactory { File = scriptFilePath, AutoParameters = new ITaskItem[] { new MockPropertyTaskItem(name: "Arg1", value: "foo"), new MockPropertyTaskItem(name: "Arg2", value: "bar"), } }; var exception = Assert.Throws<InvalidOperationException>(() => InvokePowerShell.Execute(commandFactory, buildTaskLog)); Assert.AreEqual(scriptFilePath + " does not have a default parameter set.", exception.Message); }
public void WhenInvokeWriteError() { var buildTaskLog = new MockBuildTaskLog(); var commandFactory = new CommandFactory { Expression = "Write-Error 'hello'" }; InvokePowerShell.Execute(commandFactory, buildTaskLog); buildTaskLog.AssertLogEntriesAre( new LogError( file: "<No file>", lineNumber: 1, message: "hello" + Environment.NewLine + "at <ScriptBlock>, <No file>: line 1")); }
public void WhenObjectsFallOffPipeline() { var buildTaskLog = new MockBuildTaskLog(); const string script = @" 'hi' 'there' 1 Write-Error boom @() @{ foo = 'bar' } | Format-Table -AutoSize "; var commandFactory = new CommandFactory { Expression = script }; InvokePowerShell.Execute(commandFactory, buildTaskLog); buildTaskLog.AssertLogEntriesAre( new LogMessage("hi", MessageImportance.High), new LogMessage("there", MessageImportance.High), new LogMessage("1", MessageImportance.High), new LogError( file: "<No file>", lineNumber: 5, message: "boom" + Environment.NewLine + "at <ScriptBlock>, <No file>: line 5"), new LogMessage(messageImportance: MessageImportance.High, message: @" Name Value ---- ----- foo bar ")); }
public void WhenInvokingCommandLineApp() { var buildTaskLog = new MockBuildTaskLog(); var commandFactory = new CommandFactory { Expression = "& cmd /c echo hi" }; InvokePowerShell.Execute(commandFactory, buildTaskLog); buildTaskLog.AssertLogEntriesAre( new LogMessage("hi", MessageImportance.High)); }
public void WhenInvokingComplexInlineScript() { var buildTaskLog = new MockBuildTaskLog(); const string script = @" function foo { Write-Host 'in foo' } Write-Host 'hello'; foo Write-Host 'goodbye' "; var commandFactory = new CommandFactory { Expression = script }; InvokePowerShell.Execute(commandFactory, buildTaskLog); buildTaskLog.AssertLogEntriesAre( new LogMessage("hello", MessageImportance.High), new LogMessage("in foo", MessageImportance.High), new LogMessage("goodbye", MessageImportance.High)); }
public void WhenInvokeWriteWarningWithExplicitFilenameLineAndColumn() { var buildTaskLog = new MockBuildTaskLog(); var commandFactory = new CommandFactory { Expression = @"Write-Warning 'c:\foo\bar.txt(123,456) : This is a test'" }; InvokePowerShell.Execute(commandFactory, buildTaskLog); buildTaskLog.AssertLogEntriesAre( new LogWarning( file: @"c:\foo\bar.txt", lineNumber: 123, columnNumber: 456, message: @"This is a test")); }
public void WhenInvokeWriteWarning() { var buildTaskLog = new MockBuildTaskLog(); var commandFactory = new CommandFactory { Expression = "Write-Warning 'hello'" }; InvokePowerShell.Execute(commandFactory, buildTaskLog); buildTaskLog.AssertLogEntriesAre( new LogWarning("hello")); }
public void WhenInvokeWriteVerbose() { var buildTaskLog = new MockBuildTaskLog(); var commandFactory = new CommandFactory { Expression = "Write-Verbose 'hello' -Verbose" }; InvokePowerShell.Execute(commandFactory, buildTaskLog); buildTaskLog.AssertLogEntriesAre( new LogMessage("hello", MessageImportance.Low)); }
public void WhenInvokeWriteHostNoNewLine() { var buildTaskLog = new MockBuildTaskLog(); var commandFactory = new CommandFactory { Expression = "Write-Host 'hello' -NoNewLine" }; InvokePowerShell.Execute(commandFactory, buildTaskLog); buildTaskLog.AssertLogEntriesAre( new LogMessage("hello", MessageImportance.High)); }
public void WhenInvokeWriteErrorWithExplicitFilenameLineAndColumn() { var buildTaskLog = new MockBuildTaskLog(); var commandFactory = new CommandFactory { Expression = @"Write-Error 'c:\foo\bar.txt(123,456) : This is a test'" }; InvokePowerShell.Execute(commandFactory, buildTaskLog); buildTaskLog.AssertLogEntriesAre( new LogError( file: @"c:\foo\bar.txt", lineNumber: 123, columnNumber: 456, message: @"This is a test" + Environment.NewLine + @"at c:\foo\bar.txt: line 123" + Environment.NewLine + @"at <ScriptBlock>, <No file>: line 1")); }