From b1c12450df7b1a9142ef1c450668d8644af25e78 Mon Sep 17 00:00:00 2001 From: Zachary Folwick Date: Fri, 4 Dec 2015 11:48:56 -0800 Subject: [PATCH] Added tests for Write-Debug, Write-Verbose, Write-Error cmdlets --- src/pester-tests/Write-Stream.Tests.ps1 | 71 +++++++++++++++++++++++++ 1 file changed, 71 insertions(+) create mode 100644 src/pester-tests/Write-Stream.Tests.ps1 diff --git a/src/pester-tests/Write-Stream.Tests.ps1 b/src/pester-tests/Write-Stream.Tests.ps1 new file mode 100644 index 0000000000..fc8790fdd0 --- /dev/null +++ b/src/pester-tests/Write-Stream.Tests.ps1 @@ -0,0 +1,71 @@ +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" { + Write-Warning "Test Warning" 3>&1 > $targetfile + + Get-Content $targetfile | Should Be "Test Warning" + } + + It "Should write error messages to the error stream" { + 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" { + 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" { + 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" + } + } +}