Tests/GenXdev.FileSystem/Remove-AllItems.Tests.ps1
############################################################################### Pester\BeforeAll { $Script:testRoot = GenXdev.FileSystem\Expand-Path "$env:TEMP\GenXdev.FileSystem.Tests\" -CreateDirectory Microsoft.PowerShell.Management\Push-Location $testRoot } Pester\AfterAll { $Script:testRoot = GenXdev.FileSystem\Expand-Path "$env:TEMP\GenXdev.FileSystem.Tests\" -CreateDirectory # cleanup test folder if (Microsoft.PowerShell.Management\Test-Path $testRoot) { $null = GenXdev.FileSystem\Remove-AllItems $testRoot -DeleteFolder } } ############################################################################### Pester\Describe "Remove-AllItems" { Pester\It "Should pass PSScriptAnalyzer rules" { # get the script path for analysis $scriptPath = GenXdev.FileSystem\Expand-Path "$PSScriptRoot\..\..\Functions\GenXdev.FileSystem\Remove-AllItems.ps1" # run analyzer with explicit settings $analyzerResults = GenXdev.Coding\Invoke-GenXdevScriptAnalyzer ` -Path $scriptPath [string] $message = "" $analyzerResults | Microsoft.PowerShell.Core\ForEach-Object { $message = $message + @" -------------------------------------------------- Rule: $($_.RuleName)` Description: $($_.Description) Message: $($_.Message) `r`n "@ } $analyzerResults.Count | Pester\Should -Be 0 -Because @" The following PSScriptAnalyzer rules are being violated: $message "@; } Pester\BeforeEach { # setup test folder structure $testPath = "$testRoot\delete_test" Microsoft.PowerShell.Management\New-Item -ItemType Directory -Path $testPath -Force Microsoft.PowerShell.Management\New-Item -ItemType Directory -Path "$testPath\subdir" -Force "test1" | Microsoft.PowerShell.Utility\Out-File "$testPath\file1.txt" "test2" | Microsoft.PowerShell.Utility\Out-File "$testPath\subdir\file2.txt" } Pester\It "Removes all files and subdirectories" { $null = GenXdev.FileSystem\Remove-AllItems -Path $testPath $remaining = Microsoft.PowerShell.Management\Get-ChildItem $testPath -Recurse $remaining.Count | Pester\Should -Be 0 } Pester\It "Removes root folder when specified" { $null = GenXdev.FileSystem\Remove-AllItems -Path $testPath -DeleteFolder Microsoft.PowerShell.Management\Test-Path $testPath | Pester\Should -Be $false } Pester\It "Shows what-if output without deleting" { $null = GenXdev.FileSystem\Remove-AllItems -Path $testPath -WhatIf Microsoft.PowerShell.Management\Test-Path $testPath | Pester\Should -Be $true $items = Microsoft.PowerShell.Management\Get-ChildItem $testPath -Recurse $items.Count | Pester\Should -BeGreaterThan 0 } } |