-
-
Notifications
You must be signed in to change notification settings - Fork 15
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Nested Context can cause tests results to display incorrectly #196
Comments
THe |
Is there more info I can gather to help sort this issue? Sadly I am not any good at TypeScript or JavaScript or I would take a look at the source |
Same problem... -->> Workaround / Gist: https://gist.github.com/lupuscaoticus/6ab376c057c371124856c02ec8c36b3d / Issue: #196 Observed Behavior
Conditions to ReproduceThis occurs if blocks that use -ForEach contain more than two child It/Describe/Context blocks. Potential CauseIt might be caused by the extension only using variables from the three innermost blocks for the test path. Proposed FixModify the extension to recursively use all defined variables for the test path. WorkaroundUse a custom function to pass test-case variables down the hierarchy until they are within the innermost three blocks. Custom 'Case' Function# HACK: Workaround / Gist: https://gist.github.com/lupuscaoticus/6ab376c057c371124856c02ec8c36b3d / Issue: https://github.com/pester/vscode-adapter/issues/196
Function Case {
[Hashtable]$Variables = @{}
ForEach ($Key in $Case.Keys) {
If ($Key -NotIn $null, 'Case') {
$Variables.Add($Key, $Case[$Key])
}
}
ForEach ($Arg in $Args) {
ForEach ($Key In $Arg.Keys) {
If ($Key -NotIn $null, 'Case') {
If ($Variables.ContainsKey($Key)) {
$Variables[$Key] = $Arg[$Key]
}
Else {
$Variables.Add($Key, $Arg[$Key])
}
}
}
}
$Variables.Add('Case', $Variables)
Return $Variables
} Example Tests File# HACK: Workaround / Gist: https://gist.github.com/lupuscaoticus/6ab376c057c371124856c02ec8c36b3d / Issue: https://github.com/pester/vscode-adapter/issues/196
Function Case { $V = @{}; ForEach ($K in $Case.Keys) { If ($K -NotIn $null, 'Case') { $V.Add($K, $Case[$K]) } } ForEach ($A in $Args) { ForEach ($K In $A.Keys) { If ($K -NotIn $null, 'Case') { If ($V.ContainsKey($K)) { $V[$K] = $A[$K] } Else { $V.Add($K, $A[$K]) } } } } $V.Add('Case', $V); $V }
Context 'Test: Scenario ''<Scenario>''' -ForEach @(
Case @{ Scenario = 'Alpha'; }
Case @{ Scenario = 'Omega'; }
) {
Context 'Test: Variant ''<Variant>''' -ForEach @(
Case @{ Variant = 'Reused'; }
Case @{ Variant = 'Unique'; }
) {
BeforeAll {
$TestID = "${Scenario}${Variant}$(If ($Variant -iEq 'Reused') { '00000000000000' } Else { Get-Date -Format 'yyyyMMddHHmmss' })"
# ... -... $TestID -...
}
Describe 'Mirror ''<Mirror>''' -ForEach @(
Case @{ Mirror = 'London'; }
Case @{ Mirror = 'Berlin'; }
) {
Describe 'API ''<API>''' -ForEach @(
Case @{ API = 'Public'; }
Case @{ API = 'Private'; }
) {
It 'Endpoint ''<Endpoint>''' -ForEach @(
Case @{ Endpoint = 'allUsers'; }
Case @{ Endpoint = 'pagUsers'; }
) {
$true | `
Should -Be $true `
-Because 'This is a test'
$false | `
Should -Be $false `
-Because 'This is a test'
}
}
}
}
} Applied on the eample from @kevball2# HACK: Workaround / Gist: https://gist.github.com/lupuscaoticus/6ab376c057c371124856c02ec8c36b3d / Issue: https://github.com/pester/vscode-adapter/issues/196
Function Case { $V = @{}; ForEach ($K in $Case.Keys) { If ($K -NotIn $null, 'Case') { $V.Add($K, $Case[$K]) } } ForEach ($A in $Args) { ForEach ($K In $A.Keys) { If ($K -NotIn $null, 'Case') { If ($V.ContainsKey($K)) { $V[$K] = $A[$K] } Else { $V.Add($K, $A[$K]) } } } } $V.Add('Case', $V); $V }
BeforeDiscovery {
$testCases = @(
@{ Name = "fizz"; };
@{ Name = "buzz"; };
@{ Name = "foo" ; };
@{ Name = "bar" ; };
)
}
Describe "Testing Policy Definition <name>" -ForEach @($testCases|%{Case $PSItem}) {
Context 'Level 1' -ForEach @(Case) {
It 'Should not be null level 1' {
$name | should -Not -BeNullOrEmpty
}
Context "Level 2" -ForEach @(Case) {
It 'Should be 3 characters or greater' {
$name.length | should -BeGreaterOrEqual 3
}
}
}
} |
Nest contexts don't appear to display results correctly in the test explorer pane.
The output in the test pane does not show the expect results though
The pester output shows that the level 2 context tests are showing as "Test Moved or Changed" on each run.
In the test results pane it does show the correct number of tests was run
The text was updated successfully, but these errors were encountered: