2016-04-20 21:27:17 -07:00
Describe "Set-Content cmdlet tests" {
$file1 = "file1.txt"
Setup -File " $file1 " -Content $file1
Context "Set-Content should actually set content" {
It "should set-Content of testdrive:\ $file1 " {
$result = set-content -path testdrive : \ $file1 -value "ExpectedContent" -passthru
$result | Should be "ExpectedContent"
}
It "should return expected string from testdrive:\ $file1 " {
$result = get-content -path testdrive : \ $file1
$result | Should BeExactly "ExpectedContent"
}
2016-04-21 13:13:09 -07:00
It "should Set-Content to testdrive:\dynamicfile.txt with dynamic parameters" -Pending: ( $IsLinux -Or $IsOSX ) { #https://github.com/PowerShell/PowerShell/issues/891
$result = set-content -path testdrive : \ dynamicfile . txt -value "ExpectedContent" -passthru
2016-04-20 21:27:17 -07:00
$result | Should BeExactly "ExpectedContent"
}
2016-04-21 13:13:09 -07:00
It "should return expected string from testdrive:\dynamicfile.txt" -Pending: ( $IsLinux -Or $IsOSX ) { #https://github.com/PowerShell/PowerShell/issues/891
2016-04-20 21:27:17 -07:00
$result = get-content -path testdrive : \ dynamicfile . txt
$result | Should BeExactly "ExpectedContent"
}
It "should remove existing content from testdrive:\ $file1 when the -Value is `$ null" {
$AsItWas = get-content testdrive : \ $file1
$AsItWas | Should BeExactly "ExpectedContent"
{ set-content -path testdrive : \ $file1 -value $null -ea stop } | Should Not Throw
$AsItIs = get-content testdrive : \ $file1
$AsItIs | Should Not Be $AsItWas
}
It "should throw `" Cannot bind argument to parameter 'Path' `" when -Path is `$ null" {
{ set-content -path $null -value "ShouldNotWorkBecausePathIsNull" -ea stop } | Should Throw "Cannot bind argument to parameter 'Path'"
}
It "should throw `" Cannot bind argument to parameter 'Path' `" when -Path is `$ ()" {
#[DRT][BugId(BugDatabase.WindowsOutOfBandReleases, 903880)]
{ set-content -path $ () -value "ShouldNotWorkBecausePathIsInvalid" -ea stop } | Should Throw "Cannot bind argument to parameter 'Path'"
}
2016-04-20 21:56:49 -07:00
It "should throw 'PSNotSupportedException' when you set-content to an unsupported provider" -Skip: ( $IsLinux -Or $IsOSX ) {
2016-04-20 21:27:17 -07:00
#[DRT][BugId(BugDatabase.WindowsOutOfBandReleases, 906022)]
{ set-content -path HKLM : \\ software \\ microsoft -value "ShouldNotWorkBecausePathIsUnsupported" -ea stop } | Should Throw "IContentCmdletProvider interface is not implemented"
}
2016-04-21 13:13:09 -07:00
It "should be able to pass multiple [string] `$ objects to Set-Content through the pipeline to output a dynamic Path file" -Pending: ( $IsLinux -Or $IsOSX ) { #https://github.com/PowerShell/PowerShell/issues/891
2016-04-20 21:27:17 -07:00
#[DRT][BugId(BugDatabase.WindowsOutOfBandReleases, 9058182)]
2016-04-21 13:13:09 -07:00
"hello" , "world" | set-content testdrive : \ dynamicfile2 . txt
$result = get-content testdrive : \ dynamicfile2 . txt
2016-04-20 21:27:17 -07:00
$result . length | Should be 2
$result [ 0 ] | Should be "hello"
$result [ 1 ] | Should be "world"
}
}
}