mirror of
https://github.com/PowerShell/PowerShell
synced 2026-06-08 12:12:50 +00:00
Adding test coverage for FileSystem provider
This commit is contained in:
@@ -0,0 +1,230 @@
|
||||
Describe "Validate basic FileSystem Cmdlets" -Tags "CI" {
|
||||
BeforeAll {
|
||||
$testDir = "testDir"
|
||||
$testFile = "testFile.txt"
|
||||
$restoreLocation = Get-Location
|
||||
}
|
||||
|
||||
AfterAll {
|
||||
#restore the previous location
|
||||
Set-Location -Path $restoreLocation
|
||||
}
|
||||
|
||||
BeforeEach {
|
||||
Set-Location -Path "TestDrive:\"
|
||||
New-Item -Path $testDir -ItemType Directory > $null
|
||||
New-Item -Path $testFile -ItemType File > $null
|
||||
}
|
||||
|
||||
AfterEach {
|
||||
Set-Location -Path "TestDrive:\"
|
||||
Remove-Item -Path * -Recurse -Force -ErrorAction SilentlyContinue
|
||||
}
|
||||
|
||||
It "Verify New-Item for directory" {
|
||||
$newDir = New-Item -Path "newTestDir" -ItemType Directory
|
||||
$directoryExists = Test-Path "newTestDir"
|
||||
$directoryExists | Should Be $true
|
||||
$newDir.Name | Should Be "newTestDir"
|
||||
}
|
||||
|
||||
It "Verify New-Item for file" {
|
||||
$newFile = New-Item -Path "newTestFile.txt" -ItemType File
|
||||
$fileExists = Test-Path "newTestFile.txt"
|
||||
$fileExists | Should Be $true
|
||||
$newFile.Name | Should Be "newTestFile.txt"
|
||||
}
|
||||
|
||||
It "Verify Remove-Item for directory" {
|
||||
$existsBefore = Test-Path $testDir
|
||||
Remove-Item -Path $testDir -Recurse -Force
|
||||
$existsAfter = Test-Path $testDir
|
||||
$existsBefore | Should Be $true
|
||||
$existsAfter | Should Be $false
|
||||
}
|
||||
|
||||
It "Verify Remove-Item for file" {
|
||||
$existsBefore = Test-Path $testFile
|
||||
Remove-Item -Path $testFile -Force
|
||||
$existsAfter = Test-Path $testFile
|
||||
$existsBefore | Should Be $true
|
||||
$existsAfter | Should Be $false
|
||||
}
|
||||
|
||||
It "Verify Copy-Item" {
|
||||
$newFile = Copy-Item -Path $testFile -Destination "copyFile.txt" -PassThru
|
||||
$fileExists = Test-Path "copyFile.txt"
|
||||
$fileExists | Should Be $true
|
||||
$newFile.Name | Should Be "copyFile.txt"
|
||||
}
|
||||
|
||||
It "Verify Move-Item" {
|
||||
$newFile = Move-Item -Path $testFile -Destination "moveFile.txt" -PassThru
|
||||
$fileExists = Test-Path "moveFile.txt"
|
||||
$fileExists | Should Be $true
|
||||
$newFile.Name | Should Be "moveFile.txt"
|
||||
}
|
||||
|
||||
It "Verify Get-ChildItem" {
|
||||
$dirContents = Get-ChildItem "."
|
||||
$dirContents.Count | Should Be 2
|
||||
}
|
||||
}
|
||||
|
||||
Describe "Validate basic host navigation functionality" -Tags "CI" {
|
||||
BeforeAll {
|
||||
$restoreLocation = Get-Location
|
||||
Set-Location -Path "TestDrive:\"
|
||||
|
||||
#build semi-complex directory structure to test navigation within
|
||||
$level1_0 = "Level1_0"
|
||||
$level2_0 = "Level2_0"
|
||||
$level2_1 = "Level2_1"
|
||||
New-Item -Path $level1_0 -ItemType Directory > $null
|
||||
New-Item -Path (Join-Path $level1_0 $level2_0) -ItemType Directory > $null
|
||||
New-Item -Path (Join-Path $level1_0 $level2_1) -ItemType Directory > $null
|
||||
}
|
||||
|
||||
AfterAll {
|
||||
#restore the previous location
|
||||
Set-Location -Path $restoreLocation
|
||||
}
|
||||
|
||||
BeforeEach {
|
||||
Set-Location -Path "TestDrive:\"
|
||||
}
|
||||
|
||||
It "Verify Get-Location and Set-Location" {
|
||||
$currentLoc = Get-Location
|
||||
Set-Location $level1_0
|
||||
$level1Loc = Get-Location
|
||||
Set-Location $level2_0
|
||||
$level2Loc = Get-Location
|
||||
$currentLoc.Path | Should Be (Join-Path "TestDrive:" "")
|
||||
$level1Loc.Path | Should Be (Join-Path "TestDrive:" $level1_0)
|
||||
$level2Loc.Path | Should Be (Join-Path (Join-Path "TestDrive:" $level1_0) $level2_0)
|
||||
}
|
||||
|
||||
It "Verify Push-Location and Pop-Location" {
|
||||
#push a bunch of locations
|
||||
Push-Location
|
||||
$push0 = Get-Location
|
||||
Set-Location $level1_0
|
||||
Push-Location
|
||||
$push1 = Get-Location
|
||||
Set-Location $level2_0
|
||||
Push-Location
|
||||
$push2 = Get-Location
|
||||
|
||||
#navigate back home to change path out of all pushed locations
|
||||
Set-Location "TestDrive:\"
|
||||
|
||||
#pop locations off
|
||||
Pop-Location
|
||||
$pop0 = Get-Location
|
||||
Pop-Location
|
||||
$pop1 = Get-Location
|
||||
Pop-Location
|
||||
$pop2 = Get-Location
|
||||
|
||||
$pop0.Path | Should Be $push2.Path
|
||||
$pop1.Path | Should Be $push1.Path
|
||||
$pop2.Path | Should Be $push0.Path
|
||||
}
|
||||
}
|
||||
|
||||
Describe "Validate basic Content Cmdlets for the FileSystem provider" -Tags "CI" {
|
||||
BeforeAll {
|
||||
$testFile = "testFile.txt"
|
||||
$restoreLocation = Get-Location
|
||||
Set-Location "TestDrive:\"
|
||||
}
|
||||
|
||||
AfterAll {
|
||||
#restore the previous location
|
||||
Set-Location -Path $restoreLocation
|
||||
}
|
||||
|
||||
BeforeEach {
|
||||
New-Item -Path $testFile -ItemType File > $null
|
||||
}
|
||||
|
||||
AfterEach {
|
||||
Remove-Item -Path $testFile -Force -ErrorAction SilentlyContinue
|
||||
}
|
||||
|
||||
It "Set-Content to a file" {
|
||||
$content = Set-Content -Value "some content" -Path $testFile -PassThru
|
||||
$content | Should BeExactly "some content"
|
||||
}
|
||||
|
||||
It "Add-Content to a file" {
|
||||
$content = Set-Content -Value "some content" -Path $testFile -PassThru
|
||||
$addContent = Add-Content -Value " more content" -Path $testFile -PassThru
|
||||
$fullContent = Get-Content -Path $testFile
|
||||
$content | Should Match "some content"
|
||||
$addContent | Should Match "more content"
|
||||
($fullContent[0] + $fullContent[1]) | Should Match "some content more content"
|
||||
}
|
||||
|
||||
It "Clear-Content of a file" {
|
||||
Set-Content -Value "some content" -Path $testFile
|
||||
$contentBefore = Get-Content -Path $testFile
|
||||
Clear-Content -Path $testFile
|
||||
$contentAfter = Get-Content -Path $testFile
|
||||
$contentBefore.Count | Should Be 1
|
||||
$contentAfter.Count | Should Be 0
|
||||
}
|
||||
}
|
||||
|
||||
Describe "Validate Resolve-Path Cmdlet Parameters" -Tags "CI" {
|
||||
BeforeAll {
|
||||
$restoreLocation = Get-Location
|
||||
Set-Location "TestDrive:\"
|
||||
}
|
||||
|
||||
AfterAll {
|
||||
#restore the previous location
|
||||
Set-Location -Path $restoreLocation
|
||||
}
|
||||
|
||||
It "Verify HOME" {
|
||||
$homePath = $HOME
|
||||
$tildePath = (resolve-path -Path ~).Path
|
||||
$homePath | Should Be $tildePath
|
||||
}
|
||||
|
||||
It "Verify relative" {
|
||||
$relativePath = Resolve-Path -Path . -Relative
|
||||
$relativePath | Should Be (Join-Path "." "")
|
||||
}
|
||||
}
|
||||
|
||||
Describe "Validate Basic Path Cmdlets" -Tags "CI" {
|
||||
It "Verify Convert-Path" {
|
||||
$result = Convert-Path "."
|
||||
$result | Should Be (Get-Location).Path
|
||||
}
|
||||
|
||||
It "Verify Join-Path" {
|
||||
$result = Join-Path -Path "TestDrive:" -ChildPath temp
|
||||
|
||||
if ($IsWindows) {
|
||||
$result | Should BeExactly "TestDrive:\temp"
|
||||
}
|
||||
else {
|
||||
$result | Should BeExactly "TestDrive:/temp"
|
||||
}
|
||||
}
|
||||
|
||||
It "Verify Split-Path" {
|
||||
$testPath = Join-Path "TestDrive:" "MyTestFile.txt"
|
||||
$result = Split-Path $testPath -qualifier
|
||||
$result | Should BeExactly "TestDrive:"
|
||||
}
|
||||
|
||||
It "Verify Test-Path" {
|
||||
$result = Test-Path $HOME
|
||||
$result | Should Be $true
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user