Files
PowerShell/test/powershell/Modules/Microsoft.PowerShell.Management/New-Item.Tests.ps1
T

157 lines
5.6 KiB
PowerShell
Raw Normal View History

2016-03-04 14:48:30 -08:00
function Clean-State
{
if (Test-Path $FullyQualifiedLink)
{
2016-07-14 16:12:09 -07:00
Remove-Item $FullyQualifiedLink -Force
}
if (Test-Path $FullyQualifiedFile)
{
2016-07-14 16:12:09 -07:00
Remove-Item $FullyQualifiedFile -Force
}
2015-08-25 14:46:29 -07:00
if (Test-Path $FullyQualifiedFolder)
{
2016-07-14 16:12:09 -07:00
Remove-Item $FullyQualifiedFolder -Force
}
}
2016-07-25 14:01:41 -07:00
Describe "New-Item" -Tags "CI" {
2016-02-05 08:53:44 -08:00
$tmpDirectory = $TestDrive
$testfile = "testfile.txt"
$testfolder = "newDirectory"
2016-02-29 10:09:30 -08:00
$testlink = "testlink"
2016-02-05 08:53:44 -08:00
$FullyQualifiedFile = Join-Path -Path $tmpDirectory -ChildPath $testfile
$FullyQualifiedFolder = Join-Path -Path $tmpDirectory -ChildPath $testfolder
2016-02-29 10:09:30 -08:00
$FullyQualifiedLink = Join-Path -Path $tmpDirectory -ChildPath $testlink
BeforeEach {
2016-07-14 16:12:09 -07:00
Clean-State
}
2015-08-25 14:46:29 -07:00
It "should call the function without error" {
2016-07-14 16:12:09 -07:00
{ New-Item -Name $testfile -Path $tmpDirectory -ItemType file } | Should Not Throw
2015-08-25 14:46:29 -07:00
}
It "Should create a file without error" {
2016-07-14 16:12:09 -07:00
New-Item -Name $testfile -Path $tmpDirectory -ItemType file
2015-08-25 14:46:29 -07:00
2016-07-14 16:12:09 -07:00
Test-Path $FullyQualifiedFile | Should Be $true
$fileInfo = Get-ChildItem $FullyQualifiedFile
$fileInfo.Target | Should Be $null
$fileInfo.LinkType | Should Be $null
2015-08-25 14:46:29 -07:00
}
It "Should create a folder without an error" {
2016-07-14 16:12:09 -07:00
New-Item -Name newDirectory -Path $tmpDirectory -ItemType directory
2015-08-25 14:46:29 -07:00
2016-07-14 16:12:09 -07:00
Test-Path $FullyQualifiedFolder | Should Be $true
2015-08-25 14:46:29 -07:00
}
It "Should create a file using the ni alias" {
2016-07-14 16:12:09 -07:00
ni -Name $testfile -Path $tmpDirectory -ItemType file
2015-08-25 14:46:29 -07:00
2016-07-14 16:12:09 -07:00
Test-Path $FullyQualifiedFile | Should Be $true
2015-08-25 14:46:29 -07:00
}
It "Should create a file using the Type alias instead of ItemType" {
2016-07-14 16:12:09 -07:00
New-Item -Name $testfile -Path $tmpDirectory -Type file
2015-08-25 14:46:29 -07:00
2016-07-14 16:12:09 -07:00
Test-Path $FullyQualifiedFile | Should Be $true
2015-08-25 14:46:29 -07:00
}
It "Should create a file with sample text inside the file using the Value switch" {
2016-07-14 16:12:09 -07:00
$expected = "This is test string"
New-Item -Name $testfile -Path $tmpDirectory -ItemType file -Value $expected
2015-08-25 14:46:29 -07:00
2016-07-14 16:12:09 -07:00
Test-Path $FullyQualifiedFile | Should Be $true
2015-08-25 14:46:29 -07:00
2016-07-14 16:12:09 -07:00
Get-Content $FullyQualifiedFile | Should Be $expected
2015-08-25 14:46:29 -07:00
}
It "Should not create a file when the Name switch is not used and only a directory specified" {
2016-07-14 16:12:09 -07:00
#errorAction used because permissions issue in Windows
New-Item -Path $tmpDirectory -ItemType file -ErrorAction SilentlyContinue
2015-08-25 14:46:29 -07:00
2016-07-14 16:12:09 -07:00
Test-Path $FullyQualifiedFile | Should Be $false
2015-08-25 14:46:29 -07:00
}
It "Should create a file when the Name switch is not used but a fully qualified path is specified" {
2016-07-14 16:12:09 -07:00
New-Item -Path $FullyQualifiedFile -ItemType file
2015-08-25 14:46:29 -07:00
2016-07-14 16:12:09 -07:00
Test-Path $FullyQualifiedFile | Should Be $true
2015-08-25 14:46:29 -07:00
}
It "Should be able to create a multiple items in different directories" {
2016-07-14 16:12:09 -07:00
$FullyQualifiedFile2 = Join-Path -Path $tmpDirectory -ChildPath test2.txt
New-Item -ItemType file -Path $FullyQualifiedFile, $FullyQualifiedFile2
2015-08-25 14:46:29 -07:00
2016-07-14 16:12:09 -07:00
Test-Path $FullyQualifiedFile | Should Be $true
Test-Path $FullyQualifiedFile2 | Should Be $true
2015-08-25 14:46:29 -07:00
2016-07-14 16:12:09 -07:00
Remove-Item $FullyQualifiedFile2
2015-08-25 14:46:29 -07:00
}
It "Should be able to call the whatif switch without error" {
2016-07-14 16:12:09 -07:00
{ New-Item -Name testfile.txt -Path $tmpDirectory -ItemType file -WhatIf } | Should Not Throw
}
It "Should not create a new file when the whatif switch is used" {
2016-07-14 16:12:09 -07:00
New-Item -Name $testfile -Path $tmpDirectory -ItemType file -WhatIf
2016-07-14 16:12:09 -07:00
Test-Path $FullyQualifiedFile | Should Be $false
}
2016-02-29 10:09:30 -08:00
It "Should create a symbolic link of a file without error" {
2016-07-14 16:12:09 -07:00
New-Item -Name $testfile -Path $tmpDirectory -ItemType file
Test-Path $FullyQualifiedFile | Should Be $true
2016-02-29 10:09:30 -08:00
2016-07-14 16:12:09 -07:00
New-Item -ItemType SymbolicLink -Target $FullyQualifiedFile -Name $testlink -Path $tmpDirectory
Test-Path $FullyQualifiedLink | Should Be $true
$fileInfo = Get-ChildItem $FullyQualifiedLink
2016-07-12 15:58:21 -07:00
$fileInfo.Target | Should Match ([regex]::Escape($FullyQualifiedFile))
$fileInfo.LinkType | Should Be "SymbolicLink"
2016-02-29 10:09:30 -08:00
}
It "Should create a symbolic link to a non-existing file without error" {
$target = Join-Path $tmpDirectory "totallyBogusFile"
New-Item -ItemType SymbolicLink -Target $target -Name $testlink -Path $tmpDirectory
Test-Path $FullyQualifiedLink | Should Be $true
$fileInfo = Get-ChildItem $FullyQualifiedLink
$fileInfo.Target | Should Be $target
Test-Path $fileInfo.Target | Should be $false
$fileInfo.LinkType | Should Be "SymbolicLink"
}
It "Should create a symbolic link from directory without error" {
2016-07-14 16:12:09 -07:00
New-Item -Name $testFolder -Path $tmpDirectory -ItemType directory
Test-Path $FullyQualifiedFolder | Should Be $true
2016-02-29 10:09:30 -08:00
2016-07-14 16:12:09 -07:00
New-Item -ItemType SymbolicLink -Target $FullyQualifiedFolder -Name $testlink -Path $tmpDirectory
Test-Path $FullyQualifiedLink | Should Be $true
$fileInfo = Get-ChildItem $FullyQualifiedLink
2016-07-12 15:58:21 -07:00
$fileInfo.Target | Should Match ([regex]::Escape($FullyQualifiedFolder))
$fileInfo.LinkType | Should Be "SymbolicLink"
2016-07-14 16:12:09 -07:00
# Remove the link explicitly to avoid broken symlink issue
Remove-Item $FullyQualifiedLink -Force
2016-02-29 10:09:30 -08:00
}
2016-03-04 16:01:24 -08:00
It "Should create a hard link of a file without error" {
New-Item -Name $testfile -Path $tmpDirectory -ItemType file
Test-Path $FullyQualifiedFile | Should Be $true
New-Item -ItemType HardLink -Target $FullyQualifiedFile -Name $testlink -Path $tmpDirectory
Test-Path $FullyQualifiedLink | Should Be $true
$fileInfo = Get-ChildItem $FullyQualifiedLink
$fileInfo.Target | Should Be $null
$fileInfo.LinkType | Should Be "HardLink"
2016-03-04 16:01:24 -08:00
}
2015-08-25 14:46:29 -07:00
}