From 7bc1bffdcadf75719f0a48ac3c77d92223afa79e Mon Sep 17 00:00:00 2001 From: Alex Jordan Date: Wed, 29 Jun 2016 13:56:46 -0700 Subject: [PATCH] Adding isWindows to invoke item test and new test location --- .../Invoke-Item.Tests.ps1 | 76 +++++++++++++++++++ 1 file changed, 76 insertions(+) create mode 100644 test/powershell/Modules/Microsoft.PowerShell.Utility/Invoke-Item.Tests.ps1 diff --git a/test/powershell/Modules/Microsoft.PowerShell.Utility/Invoke-Item.Tests.ps1 b/test/powershell/Modules/Microsoft.PowerShell.Utility/Invoke-Item.Tests.ps1 new file mode 100644 index 000000000..efc9b7917 --- /dev/null +++ b/test/powershell/Modules/Microsoft.PowerShell.Utility/Invoke-Item.Tests.ps1 @@ -0,0 +1,76 @@ +using namespace System.Diagnostics + +Describe "Invoke-Item" { + + $tmpDirectory = $TestDrive + $testfile = "testfile.txt" + $testfolder = "newDirectory" + $testlink = "testlink" + $FullyQualifiedFile = Join-Path -Path $tmpDirectory -ChildPath $testfile + $FullyQualifiedFolder = Join-Path -Path $tmpDirectory -ChildPath $testfolder + $FullyQualifiedLink = Join-Path -Path $tmpDirectory -ChildPath $testlink + + function NewProcessStartInfo([string]$CommandLine, [switch]$RedirectStdIn) + { + return [ProcessStartInfo]@{ + FileName = $powershell + Arguments = $CommandLine + RedirectStandardInput = $RedirectStdIn + RedirectStandardOutput = $true + RedirectStandardError = $true + UseShellExecute = $false + } + } + + function RunPowerShell([ProcessStartInfo]$debugfn) + { + $process = [Process]::Start($debugfn) + return $process + } + + function EnsureChildHasExited([Process]$process, [int]$WaitTimeInMS = 15000) + { + $process.WaitForExit($WaitTimeInMS) + + if (!$process.HasExited) + { + $process.HasExited | Should Be $true + $process.Kill() + } + } + + function Clean-State + { + if (Test-Path $FullyQualifiedLink) + { + Remove-Item $FullyQualifiedLink -Force + } + + if (Test-Path $FullyQualifiedFile) + { + Remove-Item $FullyQualifiedFile -Force + } + + if (Test-Path $FullyQualifiedFolder) + { + Remove-Item $FullyQualifiedFolder -Force + } + } + + BeforeAll { + $powershell = Join-Path -Path $PsHome -ChildPath "powershell" + } + +#Both tests are pending due to a bug in Invoke-Item on Windows. Fixed for Linux + + It "Should call the function without error" -Pending:$IsWindows { + { New-Item -Name $testfile -Path $tmpDirectory -ItemType file } | Should Not Throw + } + + It "Should invoke a text file without error" -Pending:$IsWindows { + $debugfn = NewProcessStartInfo "-noprofile ""``Invoke-Item $FullyQualifiedFile`n" -RedirectStdIn + $process = RunPowerShell $debugfn + EnsureChildHasExited $process + $process.ExitCode | Should Be 0 + } +}