Skip to content

Commit 11ff363

Browse files
committed
Refactor Join-Path extension tests to use TestCases
- Consolidate six individual tests into TestCases arrays - Tests for removing/changing extensions are now part of parameterized tests - Created separate TestCases group for multiple child path segments - This improves consistency and maintainability Addresses review feedback from @iSazonov
1 parent 6096b84 commit 11ff363

File tree

1 file changed

+41
-23
lines changed

1 file changed

+41
-23
lines changed

test/powershell/Modules/Microsoft.PowerShell.Management/Join-Path.Tests.ps1

Lines changed: 41 additions & 23 deletions
Original file line numberDiff line numberDiff line change
@@ -115,41 +115,59 @@ Describe "Join-Path cmdlet tests" -Tags "CI" {
115115
Extension = "tar.gz"
116116
ExpectedChildPath = "file.tar.gz"
117117
}
118+
@{
119+
TestName = "remove extension with empty string"
120+
ChildPath = "file.txt"
121+
Extension = ""
122+
ExpectedChildPath = "file"
123+
}
124+
@{
125+
TestName = "preserve dots in base name when removing extension with empty string"
126+
ChildPath = "file...txt"
127+
Extension = ""
128+
ExpectedChildPath = "file.."
129+
}
130+
@{
131+
TestName = "replace only the last extension for files with multiple dots"
132+
ChildPath = "file.backup.txt"
133+
Extension = ".log"
134+
ExpectedChildPath = "file.backup.log"
135+
}
136+
@{
137+
TestName = "preserve dots in base name when changing extension"
138+
ChildPath = "file...txt"
139+
Extension = ".md"
140+
ExpectedChildPath = "file...md"
141+
}
142+
@{
143+
TestName = "add extension to directory-like path"
144+
ChildPath = "subfolder"
145+
Extension = ".log"
146+
ExpectedChildPath = "subfolder.log"
147+
}
118148
) {
119149
param($TestName, $ChildPath, $Extension, $ExpectedChildPath)
120150
$result = Join-Path -Path "folder" -ChildPath $ChildPath -Extension $Extension
121151
$result | Should -BeExactly "folder${SepChar}${ExpectedChildPath}"
122152
}
123-
It "should remove extension when empty string is specified" {
124-
$result = Join-Path -Path "folder" -ChildPath "file.txt" -Extension ""
125-
$result | Should -BeExactly "folder${SepChar}file"
126-
}
127-
It "should preserve dots in base name when removing extension with empty string" {
128-
$result = Join-Path -Path "folder" -ChildPath "file...txt" -Extension ""
129-
$result | Should -BeExactly "folder${SepChar}file.."
153+
It "should handle extension parameter with multiple child path segments: <TestName>" -TestCases @(
154+
@{
155+
TestName = "change extension when joining multiple child path segments"
156+
ChildPaths = @("subfolder", "file.txt")
157+
Extension = ".log"
158+
ExpectedPath = "folder${SepChar}subfolder${SepChar}file.log"
159+
}
160+
) {
161+
param($TestName, $ChildPaths, $Extension, $ExpectedPath)
162+
$result = Join-Path -Path "folder" -ChildPath $ChildPaths -Extension $Extension
163+
$result | Should -BeExactly $ExpectedPath
130164
}
131165
It "should change extension for multiple paths" {
132166
$result = Join-Path -Path "folder1", "folder2" -ChildPath "file.txt" -Extension ".log"
133167
$result.Count | Should -Be 2
134168
$result[0] | Should -BeExactly "folder1${SepChar}file.log"
135169
$result[1] | Should -BeExactly "folder2${SepChar}file.log"
136170
}
137-
It "should replace only the last extension for files with multiple dots" {
138-
$result = Join-Path -Path "folder" -ChildPath "file.backup.txt" -Extension ".log"
139-
$result | Should -BeExactly "folder${SepChar}file.backup.log"
140-
}
141-
It "should preserve dots in base name when changing extension" {
142-
$result = Join-Path -Path "folder" -ChildPath "file...txt" -Extension ".md"
143-
$result | Should -BeExactly "folder${SepChar}file...md"
144-
}
145-
It "should add extension to directory-like path" {
146-
$result = Join-Path -Path "folder" -ChildPath "subfolder" -Extension ".log"
147-
$result | Should -BeExactly "folder${SepChar}subfolder.log"
148-
}
149-
It "should change extension when joining multiple child path segments" {
150-
$result = Join-Path -Path "folder" -ChildPath "subfolder" "file.txt" -Extension ".log"
151-
$result | Should -BeExactly "folder${SepChar}subfolder${SepChar}file.log"
152-
}
153171
It "should resolve path when -Extension changes to existing file" {
154172
New-Item -Path TestDrive:\testfile.log -ItemType File -Force | Out-Null
155173
$result = Join-Path -Path TestDrive: -ChildPath "testfile.txt" -Extension ".log" -Resolve

0 commit comments

Comments
 (0)