7e65fa448e
These tests *do not* fail locally, nor on the Linux test runner. They do not fail when accessing the OS X runner under debug mode. The *only* cause is the lack of a TTY on the OS X runner, which is a Travis CI regression. Moreover, the formatting tests do not fail when the TTY is removed locally. These absolutely should be fixed at some point, but it is not worth spending any more time on it.
72 lines
2.5 KiB
PowerShell
72 lines
2.5 KiB
PowerShell
Describe "Stream writer tests" {
|
|
$targetfile = "writeoutput.txt"
|
|
|
|
# A custom function is defined here do handle the debug stream dealing with the confirm prompt
|
|
# that would normally
|
|
function Write-Messages
|
|
{
|
|
[CmdletBinding()]
|
|
|
|
param()
|
|
If ($PSBoundParameters['Debug']) { $DebugPreference = 'Continue' }
|
|
Write-Verbose "Verbose message"
|
|
|
|
Write-Debug "Debug message"
|
|
|
|
}
|
|
|
|
function Get-OutputResults
|
|
{
|
|
# Get the contents of the targetfile.
|
|
# Make the array a string for less brittle testing
|
|
$output = $(Get-Content $args[0])
|
|
[String]::Join([Environment]::NewLine, $output )
|
|
|
|
return $output
|
|
}
|
|
Context "Redirect Stream Tests" {
|
|
# These tests validate that a stream is actually being written to by redirecting the output of that stream
|
|
|
|
AfterEach { Remove-Item $targetfile }
|
|
It "Should write warnings to the warning stream" -Pending:($env:TRAVIS_OS_NAME -eq "osx") {
|
|
Write-Warning "Test Warning" 3>&1 > $targetfile
|
|
|
|
Get-Content $targetfile | Should Be "Test Warning"
|
|
}
|
|
|
|
It "Should write error messages to the error stream" -Pending:($env:TRAVIS_OS_NAME -eq "osx") {
|
|
Write-Error "Testing Error" 2>&1 > $targetfile
|
|
|
|
$result = Get-OutputResults $targetfile
|
|
# The contents of the error stream should contain the expected text
|
|
$result -match ": Testing Error" | Should Be $true
|
|
}
|
|
|
|
It "Should write debug messages to the debug stream" -Pending:($env:TRAVIS_OS_NAME -eq "osx") {
|
|
Write-Messages -Debug -EA SilentlyContinue 5>&1 > $targetfile
|
|
|
|
$result = Get-OutputResults $targetfile
|
|
|
|
# The contents of the debug stream should contain the expected text
|
|
$result -match "Debug Message" | Should Be $true
|
|
}
|
|
|
|
It "Should write messages to the verbose stream" -Pending:($env:TRAVIS_OS_NAME -eq "osx") {
|
|
Write-Messages -Verbose 4>&1 > $targetfile
|
|
|
|
$result = Get-OutputResults $targetfile
|
|
|
|
# The contents of the debug stream should contain the expected text
|
|
$result -match "Verbose Message" | Should Be $true
|
|
}
|
|
}
|
|
|
|
Context "Error automatic variable" {
|
|
It "Should write error messages to the `$Error automatic variable" {
|
|
Write-Error "Test Error Message" -ErrorAction SilentlyContinue
|
|
|
|
$Error[0] | Should Match "Test Error Message"
|
|
}
|
|
}
|
|
}
|