PowerShell7/test/powershell/Out-File.Tests.ps1
Andrew Schwartzmeyer 7e65fa448e Mark as pending Travis CI OS X failing tests
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.
2016-05-17 13:28:44 -07:00

131 lines
4.3 KiB
PowerShell

Describe "Out-File DRT Unit Tests" -Tags DRT{
It "Should be able to write the contens into a file with -pspath" {
$tempFile = "ExposeBug928965"
{ 1 | Out-File -PSPath $tempFile } | Should Not Throw
$fileContents = Get-Content $tempFile
$fileContents | Should be 1
Remove-Item $tempFile -Force
}
It "Should be able to write the contens into a file with -pspath" {
$tempFile = "outfileAppendTest.txt"
{ 'This is first line.' | out-file $tempFile } | Should Not Throw
{ 'This is second line.' | out-file -append $tempFile } | Should Not Throw
$tempFile |Should Contain "first"
$tempFile |Should Contain "second"
Remove-Item $tempFile -Force
}
}
Describe "Out-File" {
$expectedContent = "some test text"
$inObject = New-Object psobject -Property @{text=$expectedContent}
$testfile = Join-Path -Path $TestDrive -ChildPath outfileTest.txt
AfterEach {
Remove-Item -Path $testfile -Force
}
It "Should be able to be called without error" {
{ Out-File -FilePath $testfile } | Should Not Throw
}
It "Should be able to accept string input via piping" {
{ $expectedContent | Out-File -FilePath $testfile } | Should Not Throw
$actual = Get-Content $testfile
$actual | Should Be $expectedContent
}
It "Should be able to accept string input via the InputObject swictch" {
{ Out-File -FilePath $testfile -InputObject $expectedContent } | Should Not Throw
$actual = Get-Content $testfile
$actual | Should Be $expectedContent
}
It "Should be able to accept object input" {
{ $inObject | Out-File -FilePath $testfile } | Should Not Throw
{ Out-File -FilePath $testfile -InputObject $inObject } | Should Not Throw
}
It "Should not overwrite when the noclobber switch is used" -Pending:($env:TRAVIS_OS_NAME -eq "osx") {
Out-File -FilePath $testfile -InputObject $inObject
{ Out-File -FilePath $testfile -InputObject $inObject -NoClobber -ErrorAction SilentlyContinue } | Should Throw "already exists."
{ Out-File -FilePath $testfile -InputObject $inObject -NoOverWrite -ErrorAction SilentlyContinue } | Should Throw "already exists."
$actual = Get-Content $testfile
$actual[0] | Should Be ""
$actual[1] | Should Match "text"
$actual[2] | Should Match "----"
$actual[3] | Should Match "some test text"
}
It "Should Append a new line when the append switch is used" -Pending:($env:TRAVIS_OS_NAME -eq "osx") {
{ Out-File -FilePath $testfile -InputObject $inObject } | Should Not Throw
{ Out-File -FilePath $testfile -InputObject $inObject -Append } | Should Not Throw
$actual = Get-Content $testfile
$actual[0] | Should Be ""
$actual[1] | Should Match "text"
$actual[2] | Should Match "----"
$actual[3] | Should Match "some test text"
$actual[4] | Should Be ""
$actual[5] | Should Be ""
$actual[6] | Should Be ""
$actual[7] | Should Match "text"
$actual[8] | Should Match "----"
$actual[9] | Should Match "some test text"
$actual[10] | Should Be ""
$actual[11] | Should Be ""
}
It "Should limit each line to the specified number of characters when the width switch is used on objects" {
Out-File -FilePath $testfile -Width 10 -InputObject $inObject
$actual = Get-Content $testfile
$actual[0] | Should Be ""
$actual[1] | Should Be "text "
$actual[2] | Should Be "---- "
$actual[3] | Should Be "some te..."
}
It "Should allow the cmdlet to overwrite an existing read-only file" -Pending:($env:TRAVIS_OS_NAME -eq "osx") {
# create a read-only text file
{ Out-File -FilePath $testfile -InputObject $inObject } | Should Not Throw
Set-ItemProperty -Path $testfile -Name IsReadOnly -Value $true
# write information to the RO file
{ Out-File -FilePath $testfile -InputObject $inObject -Append -Force } | Should Not Throw
$actual = Get-Content $testfile
$actual[0] | Should Be ""
$actual[1] | Should Match "text"
$actual[2] | Should Match "----"
$actual[3] | Should Match "some test text"
$actual[4] | Should Be ""
$actual[5] | Should Be ""
$actual[6] | Should Be ""
$actual[7] | Should Match "text"
$actual[8] | Should Match "----"
$actual[9] | Should Match "some test text"
$actual[10] | Should Be ""
$actual[11] | Should Be ""
# reset to not read only so it can be deleted
Set-ItemProperty -Path $testfile -Name IsReadOnly -Value $false
}
}