diff --git a/src/monad b/src/monad index 9aecfb12f..378897d1d 160000 --- a/src/monad +++ b/src/monad @@ -1 +1 @@ -Subproject commit 9aecfb12f69d91908812751e1b69d7c5c8098e07 +Subproject commit 378897d1d5cf19e63fb7faefd301eca6624daf38 diff --git a/src/pester-tests/Test-Out-File.Tests.ps1 b/src/pester-tests/Test-Out-File.Tests.ps1 new file mode 100644 index 000000000..b08126e5f --- /dev/null +++ b/src/pester-tests/Test-Out-File.Tests.ps1 @@ -0,0 +1,111 @@ +Describe "Test-Out-File" { + $expectedContent = "some test text" + $inputObject = New-Object psobject -Property @{text=$expectedContent} + $testfile = "/tmp/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" { + { $inputObject | Out-File -FilePath $testfile } | Should Not Throw + + { Out-File -FilePath $testfile -InputObject $inputObject } | Should Not Throw + } + + It "Should not overwrite when the noclobber switch is used" { + + Out-File -FilePath $testfile -InputObject $inputObject + + { Out-File -FilePath $testfile -InputObject $inputObject -NoClobber -ErrorAction SilentlyContinue } | Should Throw "already exists." + { Out-File -FilePath $testfile -InputObject $inputObject -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" { + { Out-File -FilePath $testfile -InputObject $inputObject } | Should Not Throw + { Out-File -FilePath $testfile -InputObject $inputObject -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 $inputObject + + $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" { + # create a read-only text file + { Out-File -FilePath $testfile -InputObject $inputObject } | Should Not Throw + Set-ItemProperty -Path $testfile -Name IsReadOnly -Value $true + + # write information to the RO file + { Out-File -FilePath $testfile -InputObject $inputObject -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 + } +}