PowerShell / PowerShell/vscode-powershell
Formatting an It block with unbalanced spacing causes issues
@andyleejordan is already working on this.
Since Jun 6, 2022.
- Dominant language
- TypeScript
- Stars
- 1.9k
- Forks
- 547
- PR merge metrics
- No merged PRs in 30d
Description
Prerequisites
- I have written a descriptive issue title.
- I have searched all issues to ensure it has not already been reported.
- I have read the troubleshooting guide.
- I am sure this issue is with the extension itself and does not reproduce in a standalone PowerShell instance.
- I have verified that I am using the latest version of Visual Studio Code and the PowerShell extension.
- If this is a security issue, I have read the security issue reporting guidance.
Summary
With the code (note two spaces between ) and { on line 7):
It "should create applications in Intune (<_>)" -ForEach @(
$Packages
@{
Name = 'installpackage'
Version = '1.0.0'
}
) {
$Output.Lines | Should -Contain "Application created in Intune: $_ ($" -Because $Output.String
}
When selecting to Format Document, results in:
It
$Output.Lines | Should -Contain "Application created in Intune: $_ ($" -Because $Output.String
}
When updating the code to include two spaces between -ForEach and @(:
It "should create applications in Intune (<_>)" -ForEach @(
$Packages
@{
Name = 'installpackage'
Version = '1.0.0'
}
) {
$Output.Lines | Should -Contain "Application created in Intune: $_ ($" -Because $Output.String
}
It correctly formats:
It "should create applications in Intune (<_>)" -ForEach @(
$Packages
@{
Name = 'installpackage'
Version = '1.0.0'
}
) {
$Output.Lines | Should -Contain "Application created in Intune: $_ ($" -Because $Output.String
}
And here's where it gets weird... When changing to three or more spaces on line 7:
It "should create applications in Intune (<_>)" -ForEach @(
$Packages
@{
Name = 'installpackage'
Version = '1.0.0'
}
) {
$Output.Lines | Should -Contain "Application created in Intune: $_ ($" -Because $Output.String
}
It does not format at all. Until... there are 2 or more spaces between -ForEach and @{, then it formats correctly.
Compounding the issue, if you remove the It, the formatting works correctly.
"should create applications in Intune (<_>)" -ForEach @(
$Packages
@{
Name = 'installpackage'
Version = '1.0.0'
}
) {
$Output.Lines | Should -Contain "Application created in Intune: $_ ($" -Because $Output.String
}
Formats to:
"should create applications in Intune (<_>)" -ForEach @(
$Packages
@{
Name = 'installpackage'
Version = '1.0.0'
}
) {
$Output.Lines | Should -Contain "Application created in Intune: $_ ($" -Because $Output.String
}
Finally: When run through Invoke-Formatter in the integrated terminal, formatting occurs as expected:
PS /Users/coryknox/git/chocolatey/ctk/16_engtasks_1510> Invoke-Formatter @'
>> It "should create applications in Intune (<_>)" -ForEach @(
>> $Packages
>> @{
>> Name = 'installpackage'
>> Version = '1.0.0'
>> }
>> ) {
>> $Output.Lines | Should -Contain "Application created in Intune: $_ ($" -Because $Output.String
>> }
>> '@
It "should create applications in Intune (<_>)" -ForEach @(
$Packages
@{
Name = 'installpackage'
Version = '1.0.0'
}
) {
$Output.Lines | Should -Contain "Application created in Intune: $_ ($" -Because $Output.String
}
PowerShell Version
[32;1mName Value[0m
[32;1m---- -----[0m
PSVersion 7.2.3
PSEdition Core
GitCommitId 7.2.3
OS Darwin 21.4.0 Darwin Kernel Version 21.4.0: Fri Mar 18 00:45:05 PDT 2022; root:xnu-8020.101.4~15/RELEASE_X86_64
Platform Unix
PSCompatibleVersions {1.0, 2.0, 3.0, 4.0…}
PSRemotingProtocolVersion 2.3
SerializationVersion 1.1.0.1
WSManStackVersion 3.0
Visual Studio Code Version
1.67.0-insider
ed2619e11b68bec43b788486230b0c2afeb4672d
x64
Extension Version
ms-vscode.powershell@2021.12.0
ms-vscode.powershell-preview@2022.4.3
TylerLeonhardt.vscode-inline-values-powershell@0.0.5
Steps to Reproduce
See Summary above
Visuals
Logs
No response
Contributor guide
First steps
- Read the whole issue, then the project's contributing guide.
- Comment on the issue to say you are picking it up — it saves two people doing the same work.
- Fork the repository and make your change on a branch.
- Open a pull request that references the issue number.
Assessment
This issue has not been assessed yet.