Giter Site home page Giter Site logo

vscode-pester-test-adapter's Introduction

Pester Test Adapter for Visual Studio Code

⚠️ This extension is now deprecated in favor of the extension provided by the Pester team: https://github.com/pester/vscode-adapter ⚠️

logo

This repository contains a Pester implementation of a TestAdapter extension that works with the Test Explorer extension for Visual Studio Code.

screenshot

It currently supports running and debugging Pester tests as the workspace, file, Describe, or It level!

It leverages the PowerShell extension for VS Code to run and debug.

Local development

  • install the Test Explorer extension
  • fork and clone this repository and open it in VS Code
  • run npm install
  • run npm run watch or start the watch Task in VS Code
  • start the debugger

You should now see a second VS Code window, the Extension Development Host. Open a folder in this window and click the "Test" icon in the Activity bar. Now you should see the test suite in the side panel:

vscode-pester-test-adapter's People

Contributors

dependabot[bot] avatar tylerleonhardt avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar

vscode-pester-test-adapter's Issues

Test discovery hanging with Pester 5.2.0

Hi. I tried to debug the extension, but couldn't see anything obvious - other than an error that Reset-TestSuiteState was not a recognised function. This was shown in the Pester Explorer log. When I reverted back to Pester 5.1.1, this error wasn't seen in the log. Debugging the extension I could see the promise for pesterTestRunner.loadPesterTests() being resolved - so maybe the exception is caught by the Test Explorer extension before it gets the load promise result.

The symptom is the Test Explorer in VSCode shows no tests - clicking on the Test Explorer: Reload tests icon results in the icon spinning forever.

I suspect you've been caught by a breaking change in pester. Some of my tests using modules fail in 5.2.0, so I'm happy to continue with 5.1.1 for now.

If I can provide any more details to assist you, let me know.

Thanks for this extension - attempting to debug it was my first exposure to VS Code extensions, so thanks for this experience and the instructions on your readme, even if I didn't actually manage to find the bug for you I learned how to step through a VS Code extension. :)

Thanks,
Darryl

*.Tests.ps1 files with no Describe blocks get executed

Hi,

Just tried to run your extension. It doesn't go well.

  1. Once I start project I can see this icon going in circles. It never stops

image

  1. Crashes shortly after that if it finds tests. If it doesn't nothing happens but the icon continues

image

localProcessExtensionHost.ts:257 Extension Host
localProcessExtensionHost.ts:258 [1208/092744.871:ERROR:registration_protocol_win.cc(103)] CreateFile: The system cannot find the file specified. (0x2)
abstractExtensionService.ts:840 Extension 'ms-vscode.powershell-preview cannot use PROPOSED API (must started out of dev or enabled via --enable-proposed-api)
updateEnableProposedApi @ abstractExtensionService.ts:840
abstractExtensionService.ts:721 [ms-vscode.powershell-preview]: Command `workbench.action.debug.start` appears multiple times in the `commands` section.
abstractExtensionService.ts:721 [ms-vscode.powershell-preview]: Command `workbench.action.closePanel` appears multiple times in the `commands` section.
abstractExtensionService.ts:721 [ms-vscode.powershell-preview]: Command `workbench.action.positionPanelLeft` appears multiple times in the `commands` section.
abstractExtensionService.ts:721 [ms-vscode.powershell-preview]: Command `workbench.action.positionPanelBottom` appears multiple times in the `commands` section.
TMScopeRegistry.ts:45 Overwriting grammar scope name to file mapping for scope source.yaml.
Old grammar file: file:///c%3A/Users/przemyslaw.klys/AppData/Local/Programs/Microsoft%20VS%20Code/resources/app/extensions/yaml/syntaxes/yaml.tmLanguage.json.
New grammar file: file:///c%3A/Users/przemyslaw.klys/.vscode/extensions/redhat.vscode-yaml-0.13.0/syntaxes/yaml.tmLanguage.json
register @ TMScopeRegistry.ts:43
console.ts:137 [Extension Host] swdc-vscode: Loaded softwaredotcom.swdc-vscode v2.3.21
console.ts:137 [Extension Host] swdc-tracker initialized and ready to send events to com-software-prod1.collector.snplow.net
console.ts:137 [Extension Host] (node:18640) UnhandledPromiseRejectionWarning: [object Uint8Array]
t.log @ console.ts:140
console.ts:137 [Extension Host] (node:18640) UnhandledPromiseRejectionWarning: Unhandled promise rejection. This error originated either by throwing inside of an async function without a catch block, or by rejecting a promise which was not handled with .catch(). (rejection id: 5)
t.log @ console.ts:140
console.ts:137 [Extension Host] (node:18640) [DEP0018] DeprecationWarning: Unhandled promise rejections are deprecated. In the future, promise rejections that are not handled will terminate the Node.js process with a non-zero exit code.
t.log @ console.ts:140
abstractExtensionService.ts:467 Extension host terminated unexpectedly. Code:  1  Signal:  null
_onExtensionHostCrashed @ abstractExtensionService.ts:438
log.ts:197   ERR Extension host terminated unexpectedly. The following extensions were running: vscode.microsoft-authentication, vscode.powershell, vscode.debug-auto-launch, vscode.emmet, vscode.git, vscode.merge-conflict, vscode.search-result, 2gua.rainbow-brackets, alefragnani.project-manager, hbenl.vscode-test-explorer, PKief.material-icon-theme, pranaygp.vscode-css-peek, saekiraku.pin-up, steditor.line-endings, WakaTime.vscode-wakatime, yzhang.markdown-all-in-one, ms-vscode.powershell-preview, vscode.github, TylerLeonhardt.vscode-pester-test-adapter, ms-vscode.js-debug, eamodio.gitlens, GitHub.vscode-pull-request-github, softwaredotcom.swdc-vscode, usernamehw.errorlens, vscode.github-authentication
notificationsAlerts.ts:40 Extension host terminated unexpectedly.
onDidChangeNotification @ breadcrumbsModel.ts:39
localProcessExtensionHost.ts:257 Extension Host
localProcessExtensionHost.ts:258 undefined:3
ModuleName: PSTeams Version: 2.0.1
^

[SyntaxError: Unexpected token M in JSON at position 2
	at JSON.parse (<anonymous>)
	at ChildProcess.<anonymous> (c:\Users\przemyslaw.klys\.vscode\extensions\tylerleonhardt.vscode-pester-test-adapter-0.0.5\out\pesterTests.js:53:48)
	at ChildProcess.emit (events.js:223:5)
	at maybeClose (internal/child_process.js:1021:16)
	at Process.ChildProcess._handle.onexit (internal/child_process.js:283:5)]
localProcessExtensionHost.ts:257 Extension Host
localProcessExtensionHost.ts:258 [1208/092820.906:ERROR:registration_protocol_win.cc(103)] CreateFile: The system cannot find the file specified. (0x2)
log.ts:197   ERR No authentication provider 'microsoft' is currently registered.: Error: No authentication provider 'microsoft' is currently registered.
    at E.getSessions (file:///C:/Users/przemyslaw.klys/AppData/Local/Programs/Microsoft VS Code/resources/app/out/vs/workbench/workbench.desktop.main.js:4345:744)
    at async e.getAccounts (file:///C:/Users/przemyslaw.klys/AppData/Local/Programs/Microsoft VS Code/resources/app/out/vs/workbench/workbench.desktop.main.js:6166:660)
    at async e.update (file:///C:/Users/przemyslaw.klys/AppData/Local/Programs/Microsoft VS Code/resources/app/out/vs/workbench/workbench.desktop.main.js:6166:397)
console.ts:137 [Extension Host] swdc-vscode: Loaded softwaredotcom.swdc-vscode v2.3.21
console.ts:137 [Extension Host] swdc-tracker initialized and ready to send events to com-software-prod1.collector.snplow.net
console.ts:137 [Extension Host] (node:34652) UnhandledPromiseRejectionWarning: [object Uint8Array]
t.log @ console.ts:140
console.ts:137 [Extension Host] (node:34652) UnhandledPromiseRejectionWarning: Unhandled promise rejection. This error originated either by throwing inside of an async function without a catch block, or by rejecting a promise which was not handled with .catch(). (rejection id: 4)
t.log @ console.ts:140
console.ts:137 [Extension Host] (node:34652) [DEP0018] DeprecationWarning: Unhandled promise rejections are deprecated. In the future, promise rejections that are not handled will terminate the Node.js process with a non-zero exit code.
t.log @ console.ts:140
abstractExtensionService.ts:467 Extension host terminated unexpectedly. Code:  1  Signal:  null
_onExtensionHostCrashed @ abstractExtensionService.ts:438
log.ts:197   ERR Extension host terminated unexpectedly. The following extensions were running: vscode.powershell, vscode.microsoft-authentication, ms-vscode.js-debug, vscode.debug-auto-launch, vscode.emmet, vscode.git, vscode.merge-conflict, vscode.search-result, 2gua.rainbow-brackets, alefragnani.project-manager, hbenl.vscode-test-explorer, PKief.material-icon-theme, pranaygp.vscode-css-peek, saekiraku.pin-up, steditor.line-endings, WakaTime.vscode-wakatime, vscode.github-authentication, eamodio.gitlens, vscode.debug-server-ready, yzhang.markdown-all-in-one, ms-vscode.powershell-preview, vscode.github, TylerLeonhardt.vscode-pester-test-adapter, GitHub.vscode-pull-request-github, softwaredotcom.swdc-vscode, usernamehw.errorlens
notificationsAlerts.ts:40 Extension host terminated unexpectedly.
onDidChangeNotification @ breadcrumbsModel.ts:39
localProcessExtensionHost.ts:257 Extension Host
localProcessExtensionHost.ts:258 undefined:3
ModuleName: PSTeams Version: 2.0.1
^

[SyntaxError: Unexpected token M in JSON at position 2
	at JSON.parse (<anonymous>)
	at ChildProcess.<anonymous> (c:\Users\przemyslaw.klys\.vscode\extensions\tylerleonhardt.vscode-pester-test-adapter-0.0.5\out\pesterTests.js:53:48)
	at ChildProcess.emit (events.js:223:5)
	at maybeClose (internal/child_process.js:1021:16)
	at Process.ChildProcess._handle.onexit (internal/child_process.js:283:5)]
DevTools failed to load SourceMap: Could not load content for https://ticino.blob.core.windows.net/sourcemaps/e5a624b788d92b8d34d1392e4c4d9789406efe8f/node_modules/windows-process-tree/lib/index.js.map: Unknown error

Support for dynamic tests (test cases)

Let's say I have some dynamic tests in my project, as follows:

Describe -Name "Some awesome tests" {
    BeforeDiscovery {
        $TestCases = 1..5 | foreach-Object {
            @{
                'Name' = "Test Case #$_";
                'Value' = $_
            }
        }
    }

    It "<Name>" -TestCases $TestCases {
        param (
            [string]$Name,
            [string]$Value
        )

        $Value % 2 | Should -BeExactly 0
    }
}

Currently, the Test Explorer doesn't know how to expand test names and shows them as follows:
image

However, even after the tests are executed (and all the dynamic names are expanded in the TestExplorerResults.xml file), Test Explorer still doesn't expand them:
image

That makes it seem like all the dynamic tests have failed, while in reality there may just one out of many.

It would be really great if Test Explorer could expand test names completely at least after tests were executed.

Cannot find Pester v5 although installed

I have Pester v5 installed, now as some test even on AllUsers scope:

Directory: C:\Program Files\WindowsPowerShell\Modules

ModuleType Version    Name                                ExportedCommands
---------- -------    ----                                ----------------
Script     5.1.1      Pester                              {Invoke-Pester, Describe, Context, It...}

But anyway I still get the error:

Pester version '5.0.0' or higher was not found in any module directory. Make sure you have Pester v5+ installed: Install-Module Pester -MinimumVersion 5.0

Any idea? Thanks, appreciating your help.

New tests do not appear in the test explorer

When I add tests in an test file (For example I add an it to an existing describe) the test explorer will not show them, until I issue the >Test Explorer: Reload tests command in the command palette.

Anyway very nice work so far! thank u

Verbose Output creeping into json output, preventing parse of test results

Workaround

Ensure the discovery section of the tests has no verbose output. Normal test sections (e.g. BeforeAll, It, etc.) are fine.

Evidence

Key section:

[2021-03-20 21:23:33.281] [ERROR] Unable to parse JSON data from Pester test discovery script. Contents: VERBOSE: Loading module from path 'C:\Users\JGrote\Projects\SecretManagement.KeePass\SecretManagement.KeePass\SecretManagement.KeePass.psd1'.
VERBOSE: Loading module from path 'C:\Users\JGrote\Projects\SecretManagement.KeePass\SecretManagement.KeePass\SecretManagement.KeePass.Extension\SecretManagement.KeePass.Extension.psd1'.
VERBOSE: Loading module from path 'C:\Users\JGrote\Projects\SecretManagement.KeePass\SecretManagement.KeePass\PoshKeePass\PoShKeePass.psd1'.
VERBOSE: Loading 'FormatsToProcess' from path 'C:\Users\JGrote\Projects\SecretManagement.KeePass\SecretManagement.KeePass\PoshKeePass\PoShKeePass.format.ps1xml'.
VERBOSE: Loading module from path 'C:\Users\JGrote\Projects\SecretManagement.KeePass\SecretManagement.KeePass\PoshKeePass\PoShKeePass.psm1'.
VERBOSE: Importing function 'Add-KPEntry'.
VERBOSE: Importing function 'Add-KPGroup'.
VERBOSE: Importing function 'ConvertFrom-KPProtectedSt
[2021-03-20 21:23:31.043] [INFO] Loading Pester tests
[2021-03-20 21:23:31.127] [DEBUG] Found 5 paths
[2021-03-20 21:23:31.128] [DEBUG] Using PowerShell (x64) at: C:\Program Files\PowerShell\7\pwsh.exe
[2021-03-20 21:23:31.128] [DEBUG] 
$Path = @(
    'c:\Users\JGrote\Projects\SecretManagement.KeePass\Tests\SecretManagementVault.Tests.ps1'
'c:\Users\JGrote\Projects\SecretManagement.KeePass\SecretManagement.KeePass\Public\Register-KeePassSecretVault.Tests.ps1'
'c:\Users\JGrote\Projects\SecretManagement.KeePass\SecretManagement.KeePass\SecretManagement.KeePass.Extension\Tests\Test-SecretVault.Tests.ps1'
'c:\Users\JGrote\Projects\SecretManagement.KeePass\SecretManagement.KeePass\SecretManagement.KeePass.Extension\Tests\Remove-Secret.Tests.ps1'
'c:\Users\JGrote\Projects\SecretManagement.KeePass\SecretManagement.KeePass\SecretManagement.KeePass.Extension\Tests\Get-Secret.Tests.ps1'
)

Import-Module Pester -MinimumVersion 5.0.0 -ErrorAction Stop
function Discover-Test 
{
    [CmdletBinding()]
    param(
        [Parameter(Mandatory)]
        [String[]] $Path,
        [String[]] $ExcludePath
    )
    & (Get-Module Pester) { 
        param (
            $Path, 
            $ExcludePath,
            $SessionState)
        
        Reset-TestSuiteState
        # to avoid Describe thinking that we run in interactive mode
        $invokedViaInvokePester = $true
        $files = Find-File -Path $Path -ExcludePath $ExcludePath -Extension $PesterPreference.Run.TestExtension.Value
        $containers = foreach ($f in $files) {
            <# HACK: We check to see if there is a single Describe block in the file so that we don't accidentally execute code that shouldn't need to be executed. #>
            if (!(Select-String -Path $f -SimpleMatch 'Describe')) {
                continue
            }
            New-BlockContainerObject -File (Get-Item $f)
        }
        Find-Test -BlockContainer $containers -SessionState $SessionState } -Path $Path -ExcludePath $ExcludePath -SessionState $PSCmdlet.SessionState
}

function New-SuiteObject ($Block) { 
    [PSCustomObject]@{
        type = 'suite'
        id = $Block.ScriptBlock.File + ';' + $Block.StartLine
        file = $Block.ScriptBlock.File
        line = $Block.StartLine - 1
        label = $Block.Name
        children = [Collections.Generic.List[Object]]@()
    }
}

function New-TestObject ($Test) { 
    [PSCustomObject]@{
        type = 'test'
        id = $Test.ScriptBlock.File + ';' + $Test.StartLine
        file = $Test.ScriptBlock.File
        line = $Test.StartLine - 1
        label = $Test.Name
    }
}

function fold ($children, $Block) {
    foreach ($b in $Block.Blocks) { 
        $o = (New-SuiteObject $b)
        $children.Add($o)
        fold $o.children $b
    }

    $hashset = [System.Collections.Generic.HashSet[string]]::new()
    foreach ($t in $Block.Tests) {
        $key = "$($t.ExpandedPath):$($t.StartLine)"
        if ($hashset.Contains($key)) {
            continue
        }
        $children.Add((New-TestObject $t))
        $hashset.Add($key) | Out-Null
    }
    $hashset.Clear() | Out-Null
}

$found = Discover-Test -Path $Path

# whole suite
$suite = [PSCustomObject]@{
    Blocks = [Collections.Generic.List[Object]] $found
    Tests = [Collections.Generic.List[Object]]@()
}

$testSuiteInfo = [PSCustomObject]@{
    type = 'suite'
    id = 'root'
    label = 'Pester'
    children = [Collections.Generic.List[Object]]@()
}

foreach ($file in $found) {
    $fileSuite = [PSCustomObject]@{
        type = 'suite'
        id = $file.BlockContainer.Item.FullName
        file = $file.BlockContainer.Item.FullName
        label = $file.BlockContainer.Item.Name
        children = [Collections.Generic.List[Object]]@()
    }
    $testSuiteInfo.children.Add($fileSuite)
    fold $fileSuite.children $file
}

$testSuiteInfo | ConvertTo-Json -Depth 100

[2021-03-20 21:23:32.534] [DEBUG] stdout: VERBOSE: Loading module from path 'C:\Users\JGrote\Projects\SecretManagement.KeePass\SecretManagement.KeePass\SecretManagement.KeePass.psd1'.

[2021-03-20 21:23:32.538] [DEBUG] stdout: VERBOSE: Loading module from path 'C:\Users\JGrote\Projects\SecretManagement.KeePass\SecretManagement.KeePass\SecretManagement.KeePass.Extension\SecretManagement.KeePass.Extension.psd1'.

[2021-03-20 21:23:32.540] [DEBUG] stdout: VERBOSE: Loading module from path 'C:\Users\JGrote\Projects\SecretManagement.KeePass\SecretManagement.KeePass\PoshKeePass\PoShKeePass.psd1'.

[2021-03-20 21:23:32.542] [DEBUG] stdout: VERBOSE: Loading 'FormatsToProcess' from path 'C:\Users\JGrote\Projects\SecretManagement.KeePass\SecretManagement.KeePass\PoshKeePass\PoShKeePass.format.ps1xml'.

[2021-03-20 21:23:32.557] [DEBUG] stdout: VERBOSE: Loading module from path 'C:\Users\JGrote\Projects\SecretManagement.KeePass\SecretManagement.KeePass\PoshKeePass\PoShKeePass.psm1'.

[2021-03-20 21:23:32.617] [DEBUG] stdout: VERBOSE: Importing function 'Add-KPEntry'.

[2021-03-20 21:23:32.617] [DEBUG] stdout: VERBOSE: Importing function 'Add-KPGroup'.

[2021-03-20 21:23:32.618] [DEBUG] stdout: VERBOSE: Importing function 'ConvertFrom-KPProtectedString'.

[2021-03-20 21:23:32.619] [DEBUG] stdout: VERBOSE: Importing function 'ConvertTo-KPPSObject'.

[2021-03-20 21:23:32.619] [DEBUG] stdout: VERBOSE: Importing function 'Get-KeePassConfigFile'.

[2021-03-20 21:23:32.620] [DEBUG] stdout: VERBOSE: Importing function 'Get-KeePassDatabaseConfiguration'.

[2021-03-20 21:23:32.621] [DEBUG] stdout: VERBOSE: Importing function 'Get-KeePassEntry'.

[2021-03-20 21:23:32.621] [DEBUG] stdout: VERBOSE: Importing function 'Get-KeePassGroup'.

[2021-03-20 21:23:32.622] [DEBUG] stdout: VERBOSE: Importing function 'Get-KPEntry'.

[2021-03-20 21:23:32.623] [DEBUG] stdout: VERBOSE: Importing function 'Get-KPGroup'.

[2021-03-20 21:23:32.624] [DEBUG] stdout: VERBOSE: Importing function 'Get-KPPasswordProfile'.

[2021-03-20 21:23:32.624] [DEBUG] stdout: VERBOSE: Importing function 'Import-KPLibrary'.

[2021-03-20 21:23:32.625] [DEBUG] stdout: VERBOSE: Importing function 'New-KeePassDatabase'.

[2021-03-20 21:23:32.625] [DEBUG] stdout: VERBOSE: Importing function 'New-KeePassDatabaseConfiguration'.

[2021-03-20 21:23:32.626] [DEBUG] stdout: VERBOSE: Importing function 'New-KeePassEntry'.

[2021-03-20 21:23:32.626] [DEBUG] stdout: VERBOSE: Importing function 'New-KeePassGroup'.

[2021-03-20 21:23:32.627] [DEBUG] stdout: VERBOSE: Importing function 'New-KeePassPassword'.

[2021-03-20 21:23:32.628] [DEBUG] stdout: VERBOSE: Importing function 'New-KPConfigurationFile'.

[2021-03-20 21:23:32.628] [DEBUG] stdout: VERBOSE: Importing function 'New-KPConnection'.

[2021-03-20 21:23:32.629] [DEBUG] stdout: VERBOSE: Importing function 'New-KPPasswordProfile'.

[2021-03-20 21:23:32.629] [DEBUG] stdout: VERBOSE: Importing function 'Remove-KeePassDatabaseConfiguration'.

[2021-03-20 21:23:32.630] [DEBUG] stdout: VERBOSE: Importing function 'Remove-KeePassEntry'.

[2021-03-20 21:23:32.630] [DEBUG] stdout: VERBOSE: Importing function 'Remove-KeePassGroup'.

[2021-03-20 21:23:32.631] [DEBUG] stdout: VERBOSE: Importing function 'Remove-KPConnection'.

[2021-03-20 21:23:32.632] [DEBUG] stdout: VERBOSE: Importing function 'Remove-KPEntry'.

[2021-03-20 21:23:32.632] [DEBUG] stdout: VERBOSE: Importing function 'Remove-KPGroup'.

[2021-03-20 21:23:32.633] [DEBUG] stdout: VERBOSE: Importing function 'Remove-KPPasswordProfile'.

[2021-03-20 21:23:32.633] [DEBUG] stdout: VERBOSE: Importing function 'Restore-KPConfigurationFile'.

[2021-03-20 21:23:32.634] [DEBUG] stdout: VERBOSE: Importing function 'Set-KeePassConfigFilePath'.

[2021-03-20 21:23:32.634] [DEBUG] stdout: VERBOSE: Importing function 'Set-KPEntry'.

[2021-03-20 21:23:32.635] [DEBUG] stdout: VERBOSE: Importing function 'Set-KPGroup'.

[2021-03-20 21:23:32.635] [DEBUG] stdout: VERBOSE: Importing function 'Test-Bound'.

[2021-03-20 21:23:32.636] [DEBUG] stdout: VERBOSE: Importing function 'Test-KPConnection'.

[2021-03-20 21:23:32.636] [DEBUG] stdout: VERBOSE: Importing function 'Test-KPPasswordValue'.

[2021-03-20 21:23:32.637] [DEBUG] stdout: VERBOSE: Importing function 'Update-KeePassDatabaseConfiguration'.

[2021-03-20 21:23:32.637] [DEBUG] stdout: VERBOSE: Importing function 'Update-KeePassEntry'.

[2021-03-20 21:23:32.638] [DEBUG] stdout: VERBOSE: Importing function 'Update-KeePassGroup'.

[2021-03-20 21:23:32.639] [DEBUG] stdout: VERBOSE: Loading module from path 'C:\Users\JGrote\Projects\SecretManagement.KeePass\SecretManagement.KeePass\SecretManagement.KeePass.Extension\SecretManagement.KeePass.Extension.psm1'.

[2021-03-20 21:23:32.754] [DEBUG] stdout: VERBOSE: Importing function 'Connect-KeePassDatabase'.

[2021-03-20 21:23:32.754] [DEBUG] stdout: VERBOSE: Importing function 'Get-Secret'.

[2021-03-20 21:23:32.755] [DEBUG] stdout: VERBOSE: Importing function 'Get-SecretInfo'.

[2021-03-20 21:23:32.756] [DEBUG] stdout: VERBOSE: Importing function 'Remove-Secret'.

[2021-03-20 21:23:32.756] [DEBUG] stdout: VERBOSE: Importing function 'Set-Secret'.

[2021-03-20 21:23:32.757] [DEBUG] stdout: VERBOSE: Importing function 'Test-SecretVault'.

[2021-03-20 21:23:32.758] [DEBUG] stdout: VERBOSE: Importing function 'Unlock-SecretVault'.

[2021-03-20 21:23:32.758] [DEBUG] stdout: VERBOSE: Importing function 'Unregister-SecretVault'.

[2021-03-20 21:23:32.759] [DEBUG] stdout: VERBOSE: Loading module from path 'C:\Users\JGrote\Projects\SecretManagement.KeePass\SecretManagement.KeePass\SecretManagement.KeePass.psm1'.

[2021-03-20 21:23:32.791] [DEBUG] stdout: VERBOSE: Importing function 'Register-KeepassSecretVault'.

[2021-03-20 21:23:32.792] [DEBUG] stdout: VERBOSE: Importing function 'Unlock-KeePassSecretVault'.

[2021-03-20 21:23:33.255] [DEBUG] stdout: {
  "type": "suite",
  "id": "root",
  "label": "Pester",
  "children": [
    {
      "type": "suite",
      "id": "C:\\Users\\JGrote\\Projects\\SecretManagement.KeePass\\Tests\\SecretManagementVault.Tests.ps1",
      "file": "C:\\Users\\JGrote\\Projects\\SecretManagement.KeePass\\Tests\\SecretManagementVault.Tests.ps1",
      "label": "SecretManagementVault.Tests.ps1",
      "children": [
        {
          "type": "suite",
          "id": "C:\\Users\\JGrote\\Projects\\SecretManagement.KeePass\\Tests\\SecretManagementVault.Tests.ps1;2",
          "file": "C:\\Users\\JGrote\\Projects\\SecretManagement.KeePass\\Tests\\SecretManagementVault.Tests.ps1",
          "line": 1,
          "label": "SecretManagement.Keepass",
          "children": [
            {
              "type": "suite",
              "id": "C:\\Users\\JGrote\\Projects\\SecretManagement.KeePass\\Tests\\SecretManagementVault.Tests.ps1;63",
              "file": "C:\\Users\\JGrote\\Projects\\SecretManagement.KeePass\\Tests\\SecretManagementVault.Tests.ps1",
              "line": 62,
              "label": "Unlock",
              "children": [
                {
                  "type": "test",
                  "id": "C:\\Users\\JGrote\\Projects\\SecretManagement.KeePass\\Tests\\SecretManagementVault.Tests.ps1;64",
                  "file": "C:\\Users\\JGrote\\Projects\\SecretManagement.KeePass\\Tests\\SecretManagementVault.Tests.ps1",
                  "line": 63,
                  "label": "Vault prompts for Master Key"
                },
                {
                  "type": "test",
                  "id": "C:\\Users\\JGrote\\Projects\\SecretManagement.KeePass\\Tests\\SecretManagementVault.Tests.ps1;69",
                  "file": "C:\\Users\\JGrote\\Projects\\SecretManagement.KeePass\\Tests\\SecretManagementVault.Tests.ps1",
                  "line": 68,
                  "label": "Unattended Vault Unlock"
                }
              ]
            },
            {
              "type": "suite",
              "id": "C:\\Users\\JGrote\\Projects\\SecretManagement.KeePass\\Tests\\SecretManagementVault.Tests.ps1;76",
              "file": "C:\\Users\\JGrote\\Projects\\SecretManagement.KeePass\\Tests\\SecretManagementVault.Tests.ps1",
              "line": 75,
              "label": "InvalidRegistration",
              "children": [
                {
                  "type": "test",
                  "id": "C:\\Users\\JGrote\\Projects\\SecretManagement.KeePass\\Tests\\SecretManagementVault.Tests.ps1;84",
                  "file": "C:\\Users\\JGrote\\Projects\\SecretManagement.KeePass\\Tests\\SecretManagementVault.Tests.ps1",
                  "line": 83,
                  "label": "Test-SecretVault should fail on uninitalized vault"
                }
              ]
            },
            {
              "type": "suite",
              "id": "C:\\Users\\JGrote\\Projects\\SecretManagement.KeePass\\Tests\\SecretManagementVault.Tests.ps1;89",
              "file": "C:\\Users\\JGrote\\Projects\\SecretManagement.KeePass\\Tests\\SecretManagementVault.Tests.ps1",
              "line": 88,
              "label": "SecretManagement",
              "children": [
                {
                  "type": "test",
                  "id": "C:\\Users\\JGrote\\Projects\\SecretManagement.KeePass\\Tests\\SecretManagementVault.Tests.ps1;95",
                  "file": "C:\\Users\\JGrote\\Projects\\SecretManagement.KeePass\\Tests\\SecretManagementVault.Tests.ps1",
                  "line": 94,
                  "label": "Get-SecretVault"
                },
                {
                  "type": "test",
                  "id": "C:\\Users\\JGrote\\Projects\\SecretManagement.KeePass\\Tests\\SecretManagementVault.Tests.ps1;98",
                  "file": "C:\\Users\\JGrote\\Projects\\SecretManagement.KeePass\\Tests\\SecretManagementVault.Tests.ps1",
                  "line": 97,
                  "label": "Test-SecretVault"
                },
                {
                  "type": "test",
                  "id": "C:\\Users\\JGrote\\Projects\\SecretManagement.KeePass\\Tests\\SecretManagementVault.Tests.ps1;102",
                  "file": "C:\\Users\\JGrote\\Projects\\SecretManagement.KeePass\\Tests\\SecretManagementVault.Tests.ps1",
                  "line": 101,
                  "label": "Get/Set/Remove String"
                },
                {
                  "type": "test",
                  "id": "C:\\Users\\JGrote\\Projects\\SecretManagement.KeePass\\Tests\\SecretManagementVault.Tests.ps1;123",
                  "file": "C:\\Users\\JGrote\\Projects\\SecretManagement.KeePass\\Tests\\SecretManagementVault.Tests.ps1",
                  "line": 122,
                  "label": "Get/Set/Remove SecureString"
                },
                {
                  "type": "test",
                  "id": "C:\\Users\\JGrote\\Projects\\SecretManagement.KeePass\\Tests\\SecretManagementVault.Tests.ps1;138",
                  "file": "C:\\Users\\JGrote\\Projects\\SecretManagement.KeePass\\Tests\\SecretManagementVault.Tests.ps1",
                  "line": 137,
                  "label": "Get/Set/Remove PSCredential"
                },
                {
                  "type": "test",
                  "id": "C:\\Users\\JGrote\\Projects\\SecretManagement.KeePass\\Tests\\SecretManagementVault.Tests.ps1;155",
                  "file": "C:\\Users\\JGrote\\Projects\\SecretManagement.KeePass\\Tests\\SecretManagementVault.Tests.ps1",
                  "line": 154,
                  "label": "Should not create a duplicate entry with Set-Secret"
                },
                {
                  "type": "test",
                  "id": "C:\\Users\\JGrote\\Projects\\SecretManagement.KeePass\\Tests\\SecretManagementVault.Tests.ps1;163",
                  "file": "C:\\Users\\JGrote\\Projects\\SecretManagement.KeePass\\Tests\\SecretManagementVault.Tests.ps1",
                  "line": 162,
                  "label": "Register-SecretVault -AllowClobber"
                }
              ]
            }
          ]
        }
      ]
    },
    {
      "type": "suite",
      "id": "C:\\Users\\JGrote\\Projects\\SecretManagement.KeePass\\SecretManagement.KeePass\\Public\\Register-KeePassSecretVault.Tests.ps1",
      "file": "C:\\Users\\JGrote\\Projects\\SecretManagement.KeePass\\SecretManagement.KeePass\\Public\\Register-KeePassSecretVault.Tests.ps1",
      "label": "Register-KeePassSecretVault.Tests.ps1",
      "children": [
        {
          "type": "suite",
          "id": "C:\\Users\\JGrote\\Projects\\SecretManagement.KeePass\\SecretManagement.KeePass\\Public\\Register-KeePassSecretVault.Tests.ps1;2",
          "file": "C:\\Users\\JGrote\\Projects\\SecretManagement.KeePass\\SecretManagement.KeePass\\Public\\Register-KeePassSecretVault.Tests.ps1",
          "line": 1,
          "label": "Register-KeepassSecretVault",
          "children": [
            {
              "type": "test",
              "id": "C:\\Users\\JGrote\\Projects\\SecretManagement.KeePass\\SecretManagement.KeePass\\Public\\Register-KeePassSecretVault.Tests.ps1;20",
              "file": "C:\\Users\\JGrote\\Projects\\SecretManagement.KeePass\\SecretManagement.KeePass\\Public\\Register-KeePassSecretVault.Tests.ps1",
              "line": 19,
              "label": "Registers a Vault"
            },
            {
              "type": "test",
              "id": "C:\\Users\\JGrote\\Projects\\SecretManagement.KeePass\\SecretManagement.KeePass\\Public\\Register-KeePassSecretVault.Tests.ps1;30",
              "file": "C:\\Users\\JGrote\\Projects\\SecretManagement.KeePass\\SecretManagement.KeePass\\Public\\Register-KeePassSecretVault.Tests.ps1",
              "line": 29,
              "label": "Fails if bad path specified"
            },
            {
              "type": "test",
              "id": "C:\\Users\\JGrote\\Projects\\SecretManagement.KeePass\\SecretManagement.KeePass\\Public\\Register-KeePassSecretVault.Tests.ps1;34",
              "file": "C:\\Users\\JGrote\\Projects\\SecretManagement.KeePass\\SecretManagement.KeePass\\Public\\Register-KeePassSecretVault.Tests.ps1",
              "line": 33,
              "label": "Fails if no auth method specified"
            },
            {
              "type": "test",
              "id": "C:\\Users\\JGrote\\Projects\\SecretManagement.KeePass\\SecretManagement.KeePass\\Public\\Register-KeePassSecretVault.Tests.ps1;39",
              "file": "C:\\Users\\JGrote\\Projects\\SecretManagement.KeePass\\SecretManagement.KeePass\\Public\\Register-KeePassSecretVault.Tests.ps1",
              "line": 38,
              "label": "Creates a new vault if Create is specified"
            },
            {
              "type": "test",
              "id": "C:\\Users\\JGrote\\Projects\\SecretManagement.KeePass\\SecretManagement.KeePass\\Public\\Register-KeePassSecretVault.Tests.ps1;61",
              "file": "C:\\Users\\JGrote\\Projects\\SecretManagement.KeePass\\SecretManagement.KeePass\\Public\\Register-KeePassSecretVault.Tests.ps1",
              "line": 60,
              "label": "Doesnt Clobber an existing vault if Create is specified"
            },
            {
              "type": "test",
              "id": "C:\\Users\\JGrote\\Projects\\SecretManagement.KeePass\\SecretManagement.KeePass\\Public\\Register-KeePassSecretVault.Tests.ps1;74",
              "file": "C:\\Users\\JGrote\\Projects\\SecretManagement.KeePass\\SecretManagement.KeePass\\Public\\Register-KeePassSecretVault.Tests.ps1",
              "line": 73,
              "label": "Doesnt Clobber an existing keyfile if Create is specified"
            },
            {
              "type": "test",
              "id": "C:\\Users\\JGrote\\Projects\\SecretManagement.KeePass\\SecretManagement.KeePass\\Public\\Register-KeePassSecretVault.Tests.ps1;86",
              "file": "C:\\Users\\JGrote\\Projects\\SecretManagement.KeePass\\SecretManagement.KeePass\\Public\\Register-KeePassSecretVault.Tests.ps1",
              "line": 85,
              "label": "Uses full titles if showfulltitle is specified"
            },
            {
              "type": "test",
              "id": "C:\\Users\\JGrote\\Projects\\SecretManagement.KeePass\\SecretManagement.KeePass\\Public\\Register-KeePassSecretVault.Tests.ps1;90",
              "file": "C:\\Users\\JGrote\\Projects\\SecretManagement.KeePass\\SecretManagement.KeePass\\Public\\Register-KeePassSecretVault.Tests.ps1",
              "line": 89,
              "label": "Succeeds with bad path but SkipValidate specified"
            }
          ]
        }
      ]
    },
    {
      "type": "suite",
      "id": "C:\\Users\\JGrote\\Projects\\SecretManagement.KeePass\\SecretManagement.KeePass\\SecretManagement.KeePass.Extension\\Tests\\Test-SecretVault.Tests.ps1",
      "file": "C:\\Users\\JGrote\\Projects\\SecretManagement.KeePass\\SecretManagement.KeePass\\SecretManagement.KeePass.Extension\\Tests\\Test-SecretVault.Tests.ps1",
      "label": "Test-SecretVault.Tests.ps1",
      "children": [
        {
          "type": "sui
[2021-03-20 21:23:33.255] [DEBUG] stdout: te",
          "id": "C:\\Users\\JGrote\\Projects\\SecretManagement.KeePass\\SecretManagement.KeePass\\SecretManagement.KeePass.Extension\\Tests\\Test-SecretVault.Tests.ps1;5",
          "file": "C:\\Users\\JGrote\\Projects\\SecretManagement.KeePass\\SecretManagement.KeePass\\SecretManagement.KeePass.Extension\\Tests\\Test-SecretVault.Tests.ps1",
          "line": 4,
          "label": "Test-SecretVault",
          "children": [
            {
              "type": "suite",
              "id": "C:\\Users\\JGrote\\Projects\\SecretManagement.KeePass\\SecretManagement.KeePass\\SecretManagement.KeePass.Extension\\Tests\\Test-SecretVault.Tests.ps1;19",
              "file": "C:\\Users\\JGrote\\Projects\\SecretManagement.KeePass\\SecretManagement.KeePass\\SecretManagement.KeePass.Extension\\Tests\\Test-SecretVault.Tests.ps1",
              "line": 18,
              "label": "Function Parameter Validation",
              "children": [
                {
                  "type": "test",
                  "id": "C:\\Users\\JGrote\\Projects\\SecretManagement.KeePass\\SecretManagement.KeePass\\SecretManagement.KeePass.Extension\\Tests\\Test-SecretVault.Tests.ps1;25",
                  "file": "C:\\Users\\JGrote\\Projects\\SecretManagement.KeePass\\SecretManagement.KeePass\\SecretManagement.KeePass.Extension\\Tests\\Test-SecretVault.Tests.ps1",
                  "line": 24,
                  "label": "has a parameter \"<Name>\""
                },
                {
                  "type": "test",
                  "id": "C:\\Users\\JGrote\\Projects\\SecretManagement.KeePass\\SecretManagement.KeePass\\SecretManagement.KeePass.Extension\\Tests\\Test-SecretVault.Tests.ps1;32",
                  "file": "C:\\Users\\JGrote\\Projects\\SecretManagement.KeePass\\SecretManagement.KeePass\\SecretManagement.KeePass.Extension\\Tests\\Test-SecretVault.Tests.ps1",
                  "line": 31,
                  "label": "has the mandatory value of parameter \"<Name>\" set to \"<Mandatory>\""
                },
                {
                  "type": "test",
                  "id": "C:\\Users\\JGrote\\Projects\\SecretManagement.KeePass\\SecretManagement.KeePass\\SecretManagement.KeePass.Extension\\Tests\\Test-SecretVault.Tests.ps1;38",
                  "file": "C:\\Users\\JGrote\\Projects\\SecretManagement.KeePass\\SecretManagement.KeePass\\SecretManagement.KeePass.Extension\\Tests\\Test-SecretVault.Tests.ps1",
                  "line": 37,
                  "label": "has parameter <Name> of type <Type>"
                },
                {
                  "type": "test",
                  "id": "C:\\Users\\JGrote\\Projects\\SecretManagement.KeePass\\SecretManagement.KeePass\\SecretManagement.KeePass.Extension\\Tests\\Test-SecretVault.Tests.ps1;44",
                  "file": "C:\\Users\\JGrote\\Projects\\SecretManagement.KeePass\\SecretManagement.KeePass\\SecretManagement.KeePass.Extension\\Tests\\Test-SecretVault.Tests.ps1",
                  "line": 43,
                  "label": "has one parameter set"
                }
              ]
            },
            {
              "type": "suite",
              "id": "C:\\Users\\JGrote\\Projects\\SecretManagement.KeePass\\SecretManagement.KeePass\\SecretManagement.KeePass.Extension\\Tests\\Test-SecretVault.Tests.ps1;48",
              "file": "C:\\Users\\JGrote\\Projects\\SecretManagement.KeePass\\SecretManagement.KeePass\\SecretManagement.KeePass.Extension\\Tests\\Test-SecretVault.Tests.ps1",
              "line": 47,
              "label": "Validating with correct MasterPassword",
              "children": [
                {
                  "type": "test",
                  "id": "C:\\Users\\JGrote\\Projects\\SecretManagement.KeePass\\SecretManagement.KeePass\\SecretManagement.KeePass.Extension\\Tests\\Test-SecretVault.Tests.ps1;76",
                  "file": "C:\\Users\\JGrote\\Projects\\SecretManagement.KeePass\\SecretManagement.KeePass\\SecretManagement.KeePass.Extension\\Tests\\Test-SecretVault.Tests.ps1",
                  "line": 75,
                  "label": "should not have a variable 'Vault_'"
                },
                {
                  "type": "test",
                  "id": "C:\\Users\\JGrote\\Projects\\SecretManagement.KeePass\\SecretManagement.KeePass\\SecretManagement.KeePass.Extension\\Tests\\Test-SecretVault.Tests.ps1;80",
                  "file": "C:\\Users\\JGrote\\Projects\\SecretManagement.KeePass\\SecretManagement.KeePass\\SecretManagement.KeePass.Extension\\Tests\\Test-SecretVault.Tests.ps1",
                  "line": 79,
                  "label": "should request a credential on the first pass"
                },
                {
                  "type": "test",
                  "id": "C:\\Users\\JGrote\\Projects\\SecretManagement.KeePass\\SecretManagement.KeePass\\SecretManagement.KeePass.Extension\\Tests\\Test-SecretVault.Tests.ps1;84",
                  "file": "C:\\Users\\JGrote\\Projects\\SecretManagement.KeePass\\SecretManagement.KeePass\\SecretManagement.KeePass.Extension\\Tests\\Test-SecretVault.Tests.ps1",
                  "line": 83,
                  "label": "Should not request a credential on the second pass"
                },
                {
                  "type": "test",
                  "id": "C:\\Users\\JGrote\\Projects\\SecretManagement.KeePass\\SecretManagement.KeePass\\SecretManagement.KeePass.Extension\\Tests\\Test-SecretVault.Tests.ps1;89",
                  "file": "C:\\Users\\JGrote\\Projects\\SecretManagement.KeePass\\SecretManagement.KeePass\\SecretManagement.KeePass.Extension\\Tests\\Test-SecretVault.Tests.ps1",
                  "line": 88,
                  "label": "should have a variable 'Vault_' upon unlock"
                },
                {
                  "type": "test",
                  "id": "C:\\Users\\JGrote\\Projects\\SecretManagement.KeePass\\SecretManagement.KeePass\\SecretManagement.KeePass.Extension\\Tests\\Test-SecretVault.Tests.ps1;93",
                  "file": "C:\\Users\\JGrote\\Projects\\SecretManagement.KeePass\\SecretManagement.KeePass\\SecretManagement.KeePass.Extension\\Tests\\Test-SecretVault.Tests.ps1",
                  "line": 92,
                  "label": "should return true"
                }
              ]
            },
            {
              "type": "suite",
              "id": "C:\\Users\\JGrote\\Projects\\SecretManagement.KeePass\\SecretManagement.KeePass\\SecretManagement.KeePass.Extension\\Tests\\Test-SecretVault.Tests.ps1;97",
              "file": "C:\\Users\\JGrote\\Projects\\SecretManagement.KeePass\\SecretManagement.KeePass\\SecretManagement.KeePass.Extension\\Tests\\Test-SecretVault.Tests.ps1",
              "line": 96,
              "label": "Validating with incorrect MasterPassword",
              "children": [
                {
                  "type": "test",
                  "id": "C:\\Users\\JGrote\\Projects\\SecretManagement.KeePass\\SecretManagement.KeePass\\SecretManagement.KeePass.Extension\\Tests\\Test-SecretVault.Tests.ps1;125",
                  "file": "C:\\Users\\JGrote\\Projects\\SecretManagement.KeePass\\SecretManagement.KeePass\\SecretManagement.KeePass.Extension\\Tests\\Test-SecretVault.Tests.ps1",
                  "line": 124,
                  "label": "should not have a variable 'Vault_'"
                },
                {
                  "type": "test",
                  "id": "C:\\Users\\JGrote\\Projects\\SecretManagement.KeePass\\SecretManagement.KeePass\\SecretManagement.KeePass.Extension\\Tests\\Test-SecretVault.Tests.ps1;128",
                  "file": "C:\\Users\\JGrote\\Projects\\SecretManagement.KeePass\\SecretManagement.KeePass\\SecretManagement.KeePass.Extension\\Tests\\Test-SecretVault.Tests.ps1",
                  "line": 127,
                  "label": "Detects Invalid Composite Key and does not set a vault variable"
                }
              ]
            },
            {
              "type": "suite",
              "id": "C:\\Users\\JGrote\\Projects\\SecretManagement.KeePass\\SecretManagement.KeePass\\SecretManagement.KeePass.Extension\\Tests\\Test-SecretVault.Tests.ps1;139",
              "file": "C:\\Users\\JGrote\\Projects\\SecretManagement.KeePass\\SecretManagement.KeePass\\SecretManagement.KeePass.Extension\\Tests\\Test-SecretVault.Tests.ps1",
              "line": 138,
              "label": "Validating with Path and correct UseMasterPassword",
              "children": [
                {
                  "type": "test",
                  "id": "C:\\Users\\JGrote\\Projects\\SecretManagement.KeePass\\SecretManagement.KeePass\\SecretManagement.KeePass.Extension\\Tests\\Test-SecretVault.Tests.ps1;168",
                  "file": "C:\\Users\\JGrote\\Projects\\SecretManagement.KeePass\\SecretManagement.KeePass\\SecretManagement.KeePass.Extension\\Tests\\Test-SecretVault.Tests.ps1",
                  "line": 167,
                  "label": "should not have a variable 'Vault_'"
                },
                {
                  "type": "test",
                  "id": "C:\\Users\\JGrote\\Projects\\SecretManagement.KeePass\\SecretManagement.KeePass\\SecretManagement.KeePass.Extension\\Tests\\Test-SecretVault.Tests.ps1;171",
                  "file": "C:\\Users\\JGrote\\Projects\\SecretManagement.KeePass\\SecretManagement.KeePass\\SecretManagement.KeePass.Extension\\Tests\\Test-SecretVault.Tests.ps1",
                  "line": 170,
                  "label": "should request a credential on the first pass"
                },
                {
                  "type": "test",
                  "id": "C:\\Users\\JGrote\\Projects\\SecretManagement.KeePass\\SecretManagement.KeePass\\SecretManagement.KeePass.Extension\\Tests\\Test-SecretVault.Tests.ps1;175",
                  "file": "C:\\Users\\JGrote\\Projects\\SecretManagement.KeePass\\SecretManagement.KeePass\\SecretManagement.KeePass.Extension\\Tests\\Test-SecretVault.Tests.ps1",
                  "line": 174,
                  "label": "Should not request a credential on the second pass"
                },
                {
                  "type": "test",
                  "id": "C:\\Users\\JGrote\\Projects\\SecretManagement.KeePass\\SecretManagement.KeePass\\SecretManagement.KeePass.Extension\\Tests\\Test-SecretVault.Tests.ps1;180",
                  "file": "C:\\Users\\JGrote\\Projects\\SecretManagement.KeePass\\SecretManagement.KeePass\\SecretManagement.KeePass.Extension\\Tests\\Test-SecretVault.Tests.ps1",
                  "line": 179,
                  "label": "should have a variable 'Vault_' after unlock"
                }
              ]
            },
            {
              "type": "suite",
              "id": "C:\\Users\\JGrote\\Projects\\SecretManagement.KeePass\\SecretManagement.KeePass\\SecretManagement.KeePass.Extension\\Tests\\Test-SecretVault.Tests.ps1;185",
              "file": "C:\\Users\\JGrote\\Projects\\SecretManagement.KeePass\\SecretManagement.KeePass\\SecretManagement.KeePass.Extension\\Tests\\Test-SecretVault.Tests.ps1",
              "line": 184,
              "label": "Validating with Path and incorrect UseMasterPassword",
              "children": [
                {
                  "type": "test",
                  "id": "C:\\Users\\JGrote\\Projects\\SecretManagement.KeePass\\SecretManagement.KeePass\\SecretManagement.KeePass.Extension\\Tests\\Test-SecretVault.Tests.ps1;213",
                  "file": "C:\\Users\\JGrote\\Projects\\SecretManagement.KeePass\\SecretManagement.KeePass\\SecretManagement.KeePass.Extension\\Tests\\Test-SecretVault.Tests.ps1",
                  "line": 212,
                  "label": "should not have a variable 'Vault_'"
                },
                {
                  "type": "test",
                  "id": "C:\\Users\\JGrote\\Projects\\SecretManagement.KeePass\\SecretManagement.KeePass\\SecretManagement.KeePass.Extension\\Tests\\Test-SecretVault.Tests.ps1;217",
                  "file": "C:\\Users\\JGrote\\Projects\\SecretManagement.KeePass\\SecretManagement.KeePass\\SecretManagement.KeePass.Extension\\Tests\\Test-SecretVault.Tests.ps1",
                  "line": 216,
                  "label": "Detects keepass composite key issue and does not set Vault connection variable"
                }
              ]
            },
            {
              "type": "suite",
              "id": "C:\\Users\\JGrote\\Projects\\SecretManagement.KeePass\\SecretManagement.KeePass\\SecretManagement.KeePass.Extension\\Tests\\Test-SecretVault.Tests.ps1;223",
              "file": "C:\\Users\\JGrote\\Projects\\SecretManagement.KeePass\\SecretManagement.KeePass\\SecretManagement.KeePass.Extension\\Tests\\Test-SecretVault.Tests.ps1",
              "line": 222,
              "label": "Validating with correct Keyfile",
              "children": [
                {
                  "type": "test",
                  "id": "C:\\Users\\JGrote\\Projects\\SecretManagement.KeePass\\SecretManagement.KeePass\\SecretManagement.KeePass.Extension\\Tests\\Test-SecretVault.Tests.ps1;253",
                  "file": "C:\\Users\\JGrote\\Projects\\SecretManagement.KeePass\\SecretManagement.KeePass\\SecretManagement.KeePass.Extension\\Tests\\Test-SecretVault.Tests.ps1",
                  "line": 252,
                  "label": "should not have a variable 'Vault_'"
                },
                {
                  "type": "test",
                  "id": "C:\\Users\\JGrote\\Projects\\SecretManagement.KeePass\\SecretManagement.KeePass\\SecretManagement.KeePass.Extension\\Tests\\Test-SecretVault.Tests.ps1;256",
                  "file": "C:\\Users\\JGrote\\Projects\\SecretManagement.KeePass\\SecretManagement.KeePass\\SecretManagement.KeePass.Extension\\Tests\\Test-SecretVault.Tests.ps1",
                  "line": 255,
                  "label": "Should not request a credential"
                },
                {
                  "type": "test",
                  "id": "C:\\Users\\JGrote\\Projects\\SecretManagement.KeePass\\SecretManagement.KeePass\\SecretManagement.KeePass.Extension\\Tests\\Test-SecretVault.Tests.ps1;260",
                  "file": "C:\\Users\\JGrote\\Projects\\SecretManagement.KeePass\\SecretManagement.KeePass\\SecretManagement.KeePass.Extension\\Tests\\Test-SecretVault.Tests.ps1",
                  "line": 259,
                  "label": "should have a variable 'Vault_'"
                },
                {
                  "type": "test",
                  "id": "C:\\Users\\JGrote\\Projects\\SecretManagement.KeePass\\SecretManagement.KeePass\\SecretManagement.KeePass.Extension\\Tests\\Test-SecretVault.Tests.ps1;263",
                  "file": "C:\\Users\\JGrote\\Projects\\SecretManagement.KeePass\\SecretManagement.KeePass\\SecretManagement.KeePass.Extension\\Tests\\Test-SecretVault.Tests.ps1",
                  "line": 262,
                  "label": "should return true"
                }
              ]
            },
            {
              "type": "suite",
              "id": "C:\\Users\\JGrote\\Projects\\SecretManagement.KeePass\\SecretManagement.KeePass\\SecretManagement.KeePass.Extension\\Tests\\Test-SecretVault.Tests.ps1;268",
              "file": "C:\\Users\\JGrote\\Projects\\SecretManagement.KeePass\\SecretManagement.KeePass\\SecretManagement.KeePass.Extension\\Tests\\Test-SecretVault.Tests.ps1",
              "line": 267,
              "label": "Validating with correct Keyfile V2",
              "children": [
                {
                  "type": "test",
                  "id": "C:\\Users\\JGrote\\Projects\\SecretManagement.KeePass\\SecretManagement.KeePass\\SecretManagement.KeePass.Extension\\Tests\\Test-SecretVault.Tests.ps1;298",
                  "file": "C:\\Users\\JGrote\\Projects\\SecretManagement.KeePass\\SecretManagement.KeePass\\SecretManagement.KeePass.Extension\\Tests\\Test-SecretVault.Tests.ps1",
                  "line": 297,
                  "label": "should not have a variable 'Vault_'"
                },
                {
                  "type": "test",
                  "id": "C:\\Users\\JGrote\\Projects\\SecretManagement.KeePass\\SecretManagement.KeePass\\SecretManagement.KeePass.Extension\\Tests\\Test-SecretVault.Tests.ps1;301",
                  "file": "C:\\Users\\JGrote\\Projects\\SecretManagement.KeePass\\SecretManagement.KeePass\\SecretManagement.KeePass.Extension\\Tests\\Test-SecretVault.Tests.ps1",
                  "line": 300,
                  "label": "Should not request a credential"
                },
                {
                  "type": "test",
                  "id": "C:\\Users\\JGrote\\Projects\\SecretManagement.KeePass\\SecretManagement.KeePass\\SecretManagement.KeePass.Extension\\Tests\\Test-SecretVault.Tests.ps1;305",
                  "file": "C:\\Users\\JGrote\\Projects\\SecretManagement.KeePass\\SecretManagement.KeePass\\SecretManagement.KeePass.Extension\\Tests\\Test-SecretVault.Tests.ps1",
                  "line": 304,
                  "label": "should have a variable 'Vault_'"
                },
                {
                  "type": "test",
                  "id": "C:\\Users\\JGrote\\Projects\\SecretManagement.KeePass\\SecretManagement.KeePass\\SecretManagement.KeePass.Extension\\Tests\\Test-SecretVault.Tests.ps1;308",
                  "file": "C:\\Users\\JGrote\\Projects\\SecretManagement.KeePass\\SecretManagement.KeePass\\SecretManagement.KeePass.Extension\\Tests\\Test-SecretVault.Tests.ps1",
                  "line": 307,
                  "label": "should return true"
                }
              ]
            },
            {
              "type": "suite",
              "id": "C:\\Users\\JGrote\\Projects\\SecretManagement.KeePass\\SecretManagement.KeePass\\SecretManagement.KeePass.Extension\\Tests\\Test-SecretVault.Tests.ps1;314",
              "file": "C:\\Users\\JGrote\\Projects\\SecretManagement.KeePass\\SecretManagement.KeePass\\SecretManagement.KeePass.Extension\\Tests\\Test-SecretVault.Tests.ps1",
              "line": 313,
              "label": "Validating with incorrect Keyfile",
              "children": [
                {
                  "type": "test",
                  "id": "C:\\Users\\JGrote\\Projects\\SecretManagement.KeePass\\SecretManagement.KeePass\\SecretManagement.KeePass.Extension\\Tests\\Test-SecretVault.Tests.ps1;344",
                  "file": "C:\\Users\\JGrote\\Projects\\SecretManagement.KeePass\\SecretManagement.KeePass\\SecretManagement.KeePass.Extension\\Tests\\Test-SecretVault.Tests.ps1",
                  "line": 343,
                  "label": "should not have a variable 'Vault_'"
                },
                {
                  "type": "test",
                  "id": "C:\\Users\\JGrote\\Projects\\SecretManagement.KeePass\\SecretManagement.KeePass\\SecretManagement.KeePass.Extension\\Tests\\Test-SecretVault.Tests.ps1;347",
                  "file": "C:\\Users\\JGrote\\Projects\\SecretManagement.KeePass\\SecretManagement.KeePass\\SecretManagement.KeePass.Extension\\Tests\\Test-SecretVault.Tests.ps1",
                  "line": 346,
                  "label": "Should not request a credential"
                },
                {
                  "type": "test",
                  "id": "C:\\Users\\JGrote\\Projects\\SecretManagement.KeePass\\SecretManagement.KeePass\\SecretManagement.KeePass.Extension\\Tests\\Test-SecretVault.Tests.ps1;354",
                  "file": "C:\\Users\\JGrote\\Projects\\SecretManagement.KeePass\\SecretManagement.KeePass\\SecretManagement.KeePass.Extension\\Tests\\Test-SecretVault.Tests.ps1",
                  "line": 353,
                  "label": "should still not have a variable 'Vault_'"
                }
              ]
            },
            {
              "type": "suite",
              "id": "C:\\Users\\JGrote\\Projects\\SecretManagement.KeePass\\SecretManagement.KeePass\\SecretManagement.KeePass.Extension\\Tests\\Test-SecretVault.Tests.ps1;358",
              "file": "C:\\Users\\JGrote\\Projects\\SecretManagement.KeePass\\SecretManagement.KeePass\\SecretManagement.KeePass.Extension\\Tests\\Test-SecretVault.Tests.ps1",
              "line": 357,
              "label": "Validating with correct Keyfile and correct master password",
              "children": [
                {
                  "type": "test",
                  "id": "C:\\Users\\JGrote\\Projects\\SecretManagement.KeePass\\SecretManagement.KeePass\\SecretManagement.KeePass.Extension\\Tests\\Test-SecretVault.Tests.ps1;391",
                  "file": "C:\\Users\\JGrote\\Projects\\SecretManagement.KeePass\\SecretManagement.KeePass\\SecretManagement.KeePass.Extension\\Tests\\Test-SecretVault.Tests.ps1",
                  "line": 390,
                  "label": "should not have a variable 'Vault_'"
                },
                {
                  "type": "test",
                  "id": "C:\\Users\\JGrote\\Projects\\SecretManagement.KeePass\\SecretManagement.KeePass\\SecretManagement.KeePass.Extension\\Tests\\Test-SecretVault.Tests.ps1;394",
                  "file": "C:\\Users\\JGrote\\Projects\\SecretManagement.KeePass\\SecretManagement.KeePass\\SecretManagement.KeePass.Extension\\Tests\\Test-SecretVault.Tests.ps1",
                  "line": 393,
                  "label": "Should request a credential on the first pass"
                },
                {
                  "type": "test",
                  "id": "C:\\Users\\JGrote\\Projects\\SecretManagement.KeePass\\SecretManagement.KeePass\\SecretManagement.KeePass.Extension\\Tests\\Test-SecretVault.Tests.ps1;398",
                  "file": "C:\\Users\\JGrote\\Projects\\SecretManagement.KeePass\\SecretManagement.KeePass\\SecretManagement.KeePass.Extension\\Tests\\Test-SecretVault.Tests.ps1",
                  "line": 397,
                  "label": "Should not request a credential on the second pass"
                },
                {
                  "type": "test",
                  "id": "C:\\Users\\JGrote\\Projects\\SecretManagement.KeePass\\SecretManagement.KeePass\\SecretManagement.KeePass.Extension\\Tests\\Test-SecretVault.Tests.ps1;402",
                  "file": "C:\\Users\\JGrote\\Projects\\SecretManagement.KeePass\\SecretManagement.KeePass\\SecretManagement.KeePass.Extension\\Tests\\Test-SecretVault.Tests.ps1",
                  "line": 401,
                  "label": "should have a variable 'Vault_'"
                },
                {
                  "type": "test",
                  "id": "C:\\Users\\JGrote\\Projects\\SecretManagement.KeePass\\SecretManagement.KeePass\\SecretManagement.KeePass.Extension\\Tests\\Test-SecretVault.Tests.ps1;405",
                  "file": "C:\\Users\\JGrote\\Projects\\SecretManagement.KeePass\\SecretManagement.KeePass\\SecretManagement.KeePass.Extension\\Tests\\Test-SecretVault.Tests.ps1",
                  "line": 404,
                  "label": "should return true"
                }
              ]
            },
            {
              "type": "suite",
              "id": "C:\\Users\\JGrote\\Projects\\SecretManagement.KeePass\\SecretManagement.KeePass\\SecretManagement.KeePass.Extension\\Tests\\Test-SecretVault.Tests.ps1;409",
              "file": "C:\\Users\\JGrote\\Projects\\SecretManagement.KeePass\\SecretManagement.KeePass\\SecretManagement.KeePass.Extension\\Tests\\Test-SecretVault.Tests.ps1",
              "line": 408,
              "label": "Validating with correct Keyfile and incorrect master password",
              "children": [
                {
                  "type": "test",
                  "id": "C:\\Users\\JGrote\\Projects\\SecretManagement.KeePass\\SecretManagement.KeePass\\SecretManagement.KeePass.Extension\\Tests\\Test-SecretVault.Tests.ps1;442",
                  "file": "C:\\Users\\JGrote\\Projects\\SecretManagement.KeePass\\SecretManagement.KeePass\\SecretManagement.KeePass.Extension\\Tests\\Test-SecretVault.Tests.ps1",
                  "line": 441,
                  "label": "should not have a variable 'Vault_'"
                },
                {
                  "type": "test",
                  "id": "C:\\Users\\JGrote\\Projects\\SecretManagement.KeePass\\SecretManagement.KeePass\\SecretManagement.KeePass.Extension\\Tests\\Test-SecretVault.Tests.ps1;445",
                  "file": "C:\\Users\\JGrote\\Projects\\SecretManagement.KeePass\\SecretManagement.KeePass\\SecretManagement.KeePass.Extension\\Tests\\Test-SecretVault.Tests.ps1",
                  "line": 444,
                  "label": "Detects Invalid Composite Key and does not set a vault variable"
                }
              ]
            },
            {
              "type": "suite",
              "id": "C:\\Users\\JGrote\\Projects\\SecretManagement.KeePass\\SecretManagement.KeePass\\SecretManagement.KeePass.Extension\\Tests\\Test-SecretVault.Tests.ps1;456",
              "file": "C:\\Users\\JGrote\\Projects\\SecretManagement.KeePass\\SecretManagement.KeePass\\SecretManagement.KeePass.Extension\\Tests\\Test-SecretVault.Tests.ps1",
              "line": 455,
              "label": "Validating with incorrect Keyfile and correct master password",
              "children": [
                {
                  "type": "test",
                  "id": "C:\\Users\\JGrote\\Projects\\SecretManagement.KeePass\\SecretManagement.KeePass\\SecretManagement.KeePass.Extension\\Tests\\Test-SecretVault.Tests.ps1;489",
                  "file": "C:\\Users\\JGrote\\Projects\\SecretManagement.KeePass\\SecretManagement.KeePass\\SecretManagement.KeePass.Extension\\Tests\\Test-SecretVault.Tests.ps1",
                  "line": 488,
                  "label": "should not have a variable 'Vault_'"
                },
                {
                  "type": "test",
                  "id": "C:\\Users\\JGrote\\Projects\\SecretManagement.KeePass\\SecretManagement.KeePass\\SecretManagement.KeePass.Extension\\Tests\\Test-SecretVault.Tests.ps1;492",
                  "file": "C:\\Users\\JGrote\\Projects\\SecretManagement.KeePass\\SecretManagement.KeePass\\SecretManagement.KeePass.Extension\\Tests\\Test-SecretVault.Tests.ps1",
                  "line": 491,
                  "label": "Detects Invalid Composite Key and does not set a vault variable"
                }
              ]
            },
            {
              "type": "suite",
              "id": "C:\\Users\\JGrote\\Projects\\SecretManagement.KeePass\\SecretManagement.KeePass\\SecretManagement.KeePass.Extension\\Tests\\Test-SecretVault.Tests.ps1;503",
              "file": "C:\\Users\\JGrote\\Projects\\SecretManagement.KeePass\\SecretManagement.KeePass\\SecretManagement.KeePass.Extension\\Tests\\Test-SecretVault.Tests.ps1",
              "line": 502,
              "label": "Validating with incorrect Keyfile and incorrect master password",
              "children": [
                {
                  "type": "test",
                  "id": "C:\\Users\\JGrote\\Projects\\SecretManagement.KeePass\\SecretManagement.KeePass\\SecretManagement.KeePass.Extension\\Tests\\Test-SecretVault.Tests.ps1;536",
                  "file": "C:\\Users\\JGrote\\Projects\\SecretManagement.KeePass\\SecretManagement.KeePass\\SecretManagement.KeePass.Extension\\Tests\\Test-SecretVault.Tests.ps1",
                  "line": 535,
                  "label": "should not have a variable 'Vault_'"
                },
                {
                  "type": "test",
                  "id": "C:\\Users\\JGrote\\Projects\\SecretManagement.KeePass\\SecretManagement.KeePass\\SecretManagement.KeePass.Extension\\Tests\\Test-SecretVault.Tests.ps1;539",
                  "file": "C:\\Users\\JGrote\\Projects\\SecretManagement.KeePass\\SecretManagement.KeePass\\SecretManagement.KeePass.Extension\\Tests\\Test-SecretVault.Tests.ps1",
                  "line": 538,
                  "label": "Detects Invalid Composite Key and does not set a vault variable"
                }
              ]
            },
            {
              "type": "suite",
              "id": "C:\\Users\\JGrote\\Projects\\SecretManagement.KeePass\\SecretManagement.KeePass\\SecretManagement.KeePass.Extension\\Tests\\Test-SecretVault.Tests.ps1;550",
              "file": "C:\\Users\\JGrote\\Projects\\SecretManagement.KeePass\\SecretManagement.KeePass\\SecretManagement.KeePass.Extension\\Tests\\Test-SecretVault.Tests.ps1",
              "line": 549,
              "label": "Validating Keyfile",
              "children": [
                {
                  "type": "test",
                  "id": "C:\\Users\\JGrote\\Projects\\SecretManagement.KeePass\\SecretManagement.KeePass\\SecretManagement.KeePass.Extension\\Tests\\Test-SecretVault.Tests.ps1;580",
                  "file": "C:\\Users\\JGrote\\Projects\\SecretManagement.KeePass\\SecretManagement.KeePass\\SecretManagement.KeePass.Extension\\Tests\\Test-SecretVault.Tests.ps1",
                  "line": 579,
                  "label": "should not have a variable 'Vault_'"
                },
                {
                  "type": "test",
                  "id": "C:\\Users\\JGrote\\Projects\\SecretManagement.KeePass\\SecretManagement.KeePass\\SecretManagement.KeePass.Extension\\Tests\\Test-SecretVault.Tests.ps1;583",
                  "file": "C:\\Users\\JGrote\\Projects\\SecretManagement.KeePass\\SecretManagement.KeePass\\SecretManagement.KeePass.Extension\\Tests\\Test-SecretVault.Tests.ps1",
                  "line": 582,
                  "label": "Should not request a credential"
                }
              ]
            },
            {
              "type": "suite",
              "id": "C:\\Users\\JGrote\\Projects\\SecretManagement.KeePass\\SecretManagement.KeePass\\SecretManagement.KeePass.Extension\\Tests\\Test-SecretVault.Tests.ps1;589",
              "file": "C:\\Users\\JGrote\\Projects\\SecretManagement.KeePass\\SecretManagement.KeePass\\SecretManagement.KeePass.Extension\\Tests\\Test-SecretVault.Tests.ps1",
              "line": 588,
              "label": "Validating Keyfile with master password",
              "children": [
                {
                  "type": "test",
                  "id": "C:\\Users\\JGrote\\Projects\\SecretManagement.KeePass\\SecretManagement.KeePass\\SecretManagement.KeePass.Extension\\Tests\\Test-SecretVault.Tests.ps1;622",
                  "file": "C:\\Users\\JGrote\\Projects\\SecretManagement.KeePass\\SecretManagement.KeePass\\SecretManagement.KeePass.Extension\\Tests\\Test-SecretVault.Tests.ps1",
                  "line": 621,
                  "label": "should not have a variable 'Vault_'"
                },
                {
                  "type": "test",
                  "id": "C:\\Users\\JGrote\\Projects\\SecretManagement.KeePass\\SecretManagement.KeePass\\SecretManagement.KeePass.Extension\\Tests\\Test-SecretVault.Tests.ps1;625",
                  "file": "C:\\Users\\JGrote\\Projects\\SecretManagement.KeePass\\SecretManagement.KeePass\\SecretManagement.KeePass.Extension\\Tests\\Test-SecretVault.Tests.ps1",
                  "line": 624,
                  "label": "Should request a credential on the first pass"
                },
                {
                  "type": "test",
                  "id": "C:\\Users\\JGrote\\Projects\\SecretManagement.KeePass\\SecretManagement.KeePass\\SecretManagement.KeePass.Extension\\Tests\\Test-SecretVault.Tests.ps1;629",
                  "file": "C:\\Users\\JGrote\\Projects\\SecretManagement.KeePass\\SecretManagement.KeePass\\SecretManagement.KeePass.Extension\\Tests\\Test-SecretVault.Tests.ps1",
                  "line": 628,
                  "label": "Should not request a credential on the second pass"
                },
                {
                  "type": "test",
                  "id": "C:\\Users\\JGrote\\Projects\\SecretManagement.KeePass\\SecretManagement.KeePass\\SecretManagement.KeePass.Extension\\Tests\\Test-SecretVault.Tests.ps1;634",
                  "file": "C:\\Users\\JGrote\\Projects\\SecretManagement.KeePass\\SecretManagement.KeePass\\SecretManagement.KeePass.Extension\\Tests\\Test-SecretVault.Tests.ps1",
                  "line": 633,
                  "label": "should have a variable 'Vault_'"
                }
              ]
            },
            {
              "type": "suite",
              "id": "C:\\Users\\JGrote\\Projects\\SecretManagement.KeePass\\SecretManagement.KeePass\\SecretManagement.KeePass.Extension\\Tests\\Test-SecretVault.Tests.ps1;639",
              "file": "C:\\Users\\JGrote\\Projects\\SecretManagement.KeePass\\SecretManagement.KeePass\\SecretManagement.KeePass.Extension\\Tests\\Test-SecretVault.Tests.ps1",
              "line": 638,
              "label": "Validating Keyfile",
              "children": [
                {
                  "type": "test",
                  "id": "C:\\Users\\JGrote\\Projects\\SecretManagement.KeePass\\SecretManagement.KeePass\\SecretManagement.KeePass.Extension\\Tests\\Test-SecretVault.Tests.ps1;669",
                  "file": "C:\\Users\\JGrote\\Projects\\SecretManagement.KeePass\\SecretManagement.KeePass\\SecretManagement.KeePass.Extension\\Tests\\Test-SecretVault.Tests.ps1",
                  "line": 668,
                  "label": "should not have a variable 'Vault_'"
                },
                {
                  "type": "test",
                  "id": "C:\\Users\\JGrote\\Projects\\SecretManagement.KeePass\\SecretManagement.KeePass\\SecretManagement.KeePass.Extension\\Tests\\Test-SecretVault.Tests.ps1;672",
                  "file": "C:\\Users\\JGrote\\Projects\\SecretManagement.KeePass\\SecretManagement.KeePass\\SecretManagement.KeePass.Extension\\Tests\\Test-SecretVault.Tests.ps1",
                  "line": 671,
                  "label": "Should not request a credential"
                },
                {
                  "type": "test",
                  "id": "C:\\Users\\JGrote\\Projects\\SecretManagement.KeePass\\SecretManagement.KeePass\\SecretManagement.KeePass.Extension\\Tests\\Test-SecretVault.Tests.ps1;676",
                  "file": "C:\\Users\\JGrote\\Projects\\SecretManagement.KeePass\\SecretManagement.KeePass\\SecretManagement.KeePass.Extension\\Tests\\Test-SecretVault.Tests.ps1",
                  "line": 675,
                  "label": "should have a variable 'Vault_'"
                }
              ]
            },
            {
              "type": "suite",
              "id": "C:\\Users\\JGrote\\Projects\\SecretManagement.KeePass\\SecretManagement.KeePass\\SecretManagement.KeePass.Extension\\Tests\\Test-SecretVault.Tests.ps1;680",
              "file": "C:\\Users\\JGrote\\Projects\\SecretManagement.KeePass\\SecretManagement.KeePass\\SecretManagement.KeePass.Extension\\Tests\\Test-SecretVault.Tests.ps1",
              "line": 679,
              "label": "Validating Keyfile with master password",
              "children": [
                {
                  "type": "test",
                  "id": "C:\\Users\\JGrote\\Projects\\SecretManagement.KeePass\\SecretManagement.KeePass\\SecretManagement.KeePass.Extension\\Tests\\Test-SecretVault.Tests.ps1;713",
                  "file": "C:\\Users\\JGrote\\Projects\\SecretManagement.KeePass\\SecretManagement.KeePass\\SecretManagement.KeePass.Extension\\Tests\\Test-SecretVault.Tests.ps1",
                  "line": 712,
                  "label": "should not have a variable 'Vault_'"
                },
                {
                  "type": "test",
                  "id": "C:\\Users\\JGrote\\Projects\\SecretManagement.KeePass\\SecretManagement.KeePass\\SecretManagement.KeePass.Extension\\Tests\\Test-SecretVault.Tests.ps1;716",
                  "file": "C:\\Users\\JGrote\\Projects\\SecretManagement.KeePass\\SecretManagement.KeePass\\SecretManagement.KeePass.Extension\\Tests\\Test-SecretVault.Tests.ps1",
                  "line": 715,
                  "label": "Should request a credential on the first pass"
                },
                {
                  "type": "test",
                  "id": "C:\\Users\\JGrote\\Projects\\SecretManagement.KeePass\\SecretManagement.KeePass\\SecretManagement.KeePass.Extension\\Tests\\Test-SecretVault.Tests.ps1;720",
                  "file": "C:\\Users\\JGrote\\Projects\\SecretManagement.KeePass\\SecretManagement.KeePass\\SecretManagement.KeePass.Extension\\Tests\\Test-SecretVault.Tests.ps1",
                  "line": 719,
                  "label": "Should not request a credential on the second pass"
                },
                {
                  "type": "test",
                  "id": "C:\\Users\\JGrote\\Projects\\SecretManagement.KeePass\\SecretManagement.KeePass\\SecretManagement.KeePass.Extension\\Tests\\Test-SecretVault.Tests.ps1;724",
                  "file": "C:\\Users\\JGrote\\Projects\\SecretManagement.KeePass\\SecretManagement.KeePass\\SecretManagement.KeePass.Extension\\Tests\\Test-SecretVault.Tests.ps1",
                  "line": 723,
                  "label": "should have a variable 'Vault_'"
                }
              ]
            }
          ]
        }
      ]
    },
    {
      "type": "suite",
      "id": "C:\\Users\\JGrote\\Projects\\SecretManagement.KeePass\\SecretManagement.KeePass\\SecretManagement.KeePass.Extension\\Tests\\Remove-Secret.Tests.ps1",
      "file": "C:\\Users\\JGrote\\Projects\\SecretManagement.KeePass\\SecretManagement.KeePass\\SecretManagement.KeePass.Extension\\Tests\\Remove-Secret.Tests.ps1",
      "label": "Remove-Secret.Tests.ps1",
      "children": [
        {
          "type": "suite",
          "id": "C:\\Users\\JGrote\\Projects\\SecretManagement.KeePass\\SecretManagement.KeePass\\SecretManagement.KeePass.Extension\\Tests\\Remove-Secret.Tests.ps1;2",
          "file": "C:\\Users\\JGrote\\Projects\\SecretManagement.KeePass\\SecretManagement.KeePass\\SecretManagement.KeePass.Extension\\Tests\\Remove-Secret.Tests.ps1",
          "line": 1,
          "label": "Remove-Secret",
          "children": [
            {
              "type": "test",
              "id": "C:\\Users\\JGrote\\Projects\\SecretManagement.KeePass\\SecretManagement.KeePass\\SecretManagement.KeePass.Extension\\Tests\\Remove-Secret.Tests.ps1;47",
              "file": "C:\\Users\\JGrote\\Projects\\SecretManagement.KeePass\\SecretManagement.KeePass\\SecretManagement.KeePass.Extension\\Tests\\Remove-Secret.Tests.ps1",
              "line": 46,
              "label": "Fails if name not specified"
            },
            {
              "type": "test",
              "id": "C:\\Users\\JGrote\\Projects\\SecretManagement.KeePass\\SecretManagement.KeePass\\SecretManagement.KeePass.Extension\\Tests\\Remove-Secret.Tests.ps1;54",
              "file": "C:\\Users\\JGrote\\Projects\\SecretManagement.KeePass\\SecretManagement.KeePass\\SecretManagement.KeePass.Extension\\Tests\\Remove-Secret.Tests.ps1",
              "line": 53,
              "label": "Removes predefined secret"
            },
            {
              "type": "test",
              "id": "C:\\Users\\JGrote\\Projects\\SecretManagement.KeePass\\SecretManagement.KeePass\\SecretManagement.KeePass.Extension\\Tests\\Remove-Secret.Tests.ps1;60",
              "file": "C:\\Users\\JGrote\\Projects\\SecretManagement.KeePass\\SecretManagement.KeePass\\SecretManagement.KeePass.Extension\\Tests\\Remove-Secret.Tests.ps1",
              "line": 59,
              "label": "Fails on removing already removed secret"
            },
            {
              "type": "test",
              "id": "C:\\Users\\JGrote\\Projects\\SecretManagement.KeePass\\SecretManagement.KeePass\\SecretManagement.KeePass.Extension\\Tests\\Remove-Secret.Tests.ps1;68",
              "file": "C:\\Users\\JGrote\\Projects\\SecretManagement.KeePass\\SecretManagement.KeePass\\SecretManagement.KeePass.Extension\\Tests\\Remove-Secret.Tests.ps1",
              "line": 67,
              "label": "Fails on duplicate secrets"
            }
          ]
        }
      ]
    },
    {
      "type": "suite",
      "id": "C:\\Users\\JGrote\\Projects\\SecretManagement.KeePass\\SecretManagement.KeePass\\SecretManagement.KeePass.Extension\\Tests\\Get-Secret.Tests.ps1",
      "file": "C:\\Users\\JGrote\\Projects\\SecretManagement.KeePass\\SecretManagement.KeePass\\SecretManagement.KeePass.Extension\\Tests\\Get-Secret.Tests.ps1",
      "label": "Get-Secret.Tests.ps1",
      "children": [
        {
          "type": "suite",
          "id": "C:\\Users\\JGrote\\Projects\\SecretManagement.KeePass\\SecretManagement.KeePass\\SecretManagement.KeePass.Extension\\Tests\\Get-Secret.Tests.ps1;1",
          "file": "C:\\Users\\JGrote\\Projects\\SecretManagement.KeePass\\SecretManagement.KeePass\\SecretManagement.KeePass.Extension\\Tests\\Get-Secret.Tests.ps1",
          "line": 0,
          "label": "Get-Secret",
          "children": [
            {
              "type": "suite",
              "id": "C:\\Users\\JGrote\\Projects\\SecretManagement.KeePass\\SecretManagement.KeePass\\SecretManagement.KeePass.Extension\\Tests\\Get-Secret.Tests.ps1;18",
              "file": "C:\\Users\\JGrote\\Projects\\SecretManagement.KeePass\\SecretManagement.KeePass\\SecretManagement.KeePass.Extension\\Tests\\Get-Secret.Tests.ps1",
              "line": 17,
              "label": "Function Parameter Validation",
              "children": [
                {
                  "type": "test",
                  "id": "C:\\Users\\JGrote\\Projects\\SecretManagement.KeePass\\SecretManagement.KeePass\\SecretManagement.KeePass.Extension\\Tests\\Get-Secret.Tests.ps1;24",
                  "file": "C:\\Users\\JGrote\\Projects\\SecretManagement.KeePass\\SecretManagement.KeePass\\SecretManagement.KeePass.Extension\\Tests\\Get-Secret.Tests.ps1",
                  "line": 23,
                  "label": "has a parameter \"<Name>\""
                },
                {
                  "type": "test",
                  "id": "C:\\Users\\JGrote\\Projects\\SecretManagement.KeePass\\SecretManagement.KeePass\\SecretManagement.KeePass.Extension\\Tests\\Get-Secret.Tests.ps1;37",
                  "file": "C:\\Users\\JGrote\\Projects\\SecretManagement.KeePass\\SecretManagement.KeePass\\SecretManagement.KeePass.Extension\\Tests\\Get-Secret.Tests.ps1",
                  "line": 36,
                  "label": "has the mandatory value of parameter \"<Name>\" set to \"<Mandatory>\""
                },
                {
                  "type": "test",
                  "id": "C:\\Users\\JGrote\\Projects\\SecretManagement.KeePass\\SecretManagement.KeePass\\SecretManagement.KeePass.Extension\\Tests\\Get-Secret.Tests.ps1;50",
                  "file": "C:\\Users\\JGrote\\Projects\\SecretManagement.KeePass\\SecretManagement.KeePass\\SecretManagement.KeePass.Extension\\Tests\\Get-Secret.Tests.ps1",
                  "line": 49,
                  "label": "has parameter <Name> of type <Type>"
                },
                {
                  "type": "test",
                  "id": "C:\\Users\\JGrote\\Projects\\SecretManagement.KeePass\\SecretManagement.KeePass\\SecretManagement.KeePass.Extension\\Tests\\Get-Secret.Tests.ps1;61",
                  "file": "C:\\Users\\JGrote\\Projects\\SecretManagement.KeePass\\SecretManagement.KeePass\\SecretManagement.KeePass.Extension\\Tests\\Get-Secret.Tests.ps1",
                  "line": 60,
                  "label": "has one parameter set"
                }
              ]
            },
            {
              "type": "suite",
              "id": "C:\\Users\\JGrote\\Projects\\SecretManagement.KeePass\\SecretManagement.KeePass\\SecretManagement.KeePass.Extension\\Tests\\Get-Secret.Tests.ps1;67",
              "file": "C:\\Users\\JGrote\\Projects\\SecretManagement.KeePass\\SecretManagement.KeePass\\SecretManagement.KeePass.Extension\\Tests\\Get-Secret.Tests.ps1",
              "line": 66,
              "label": "Get Secret information from MasterPassword protected KeePass",
              "children": [
                {
                  "type": "test",
                  "id": "C:\\Users\\JGrote\\Projects\\SecretManagement.KeePass\\SecretManagement.KeePass\\SecretManagement.KeePass.Extension\\Tests\\Get-Secret.Tests.ps1;95",
                  "file": "C:\\Users\\JGrote\\Projects\\SecretManagement.KeePass\\SecretManagement.KeePass\\SecretManagement.KeePass.Extension\\Tests\\Get-Secret.Tests.ps1",
                  "line": 94,
                  "label": "should return a <PSType> for entry <SecretName>"
                },
                {
                  "type": "test",
                  "id": "C:\\Users\\JGrote\\Projects\\SecretManagement.KeePass\\SecretManagement.KeePass\\SecretManagement.KeePass.Extension\\Tests\\Get-Secret.Tests.ps1;107",
                  "file": "C:\\Users\\JGrote\\Projects\\SecretManagement.KeePass\\SecretManagement.KeePass\\SecretManagement.KeePass.Extension\\Tests\\Get-Secret.Tests.ps1",
                  "line": 106,
                  "label": "should return <username> for <SecretName>"
                },
                {
                  "type": "test",
                  "id": "C:\\Users\\JGrote\\Projects\\SecretManagement.KeePass\\SecretManagement.KeePass\\SecretManagement.KeePass.Extension\\Tests\\Get-Secret.Tests.ps1;117",
                  "file": "C:\\Users\\JGrote\\Projects\\SecretManagement.KeePass\\SecretManagement.KeePass\\SecretManagement.KeePass.Extension\\Tests\\Get-Secret.Tests.ps1",
                  "line": 116,
                  "label": "should throw when multiple secrets are returned"
                },
                {
                  "type": "test",
                  "id": "C:\\Users\\JGrote\\Projects\\SecretManagement.KeePass\\SecretManagement.KeePass\\SecretManagement.KeePass.Extension\\Tests\\Get-Secret.Tests.ps1;124",
                  "file": "C:\\Users\\JGrote\\Projects\\SecretManagement.KeePass\\SecretManagement.KeePass\\SecretManagement.KeePass.Extension\\Tests\\Get-Secret.Tests.ps1",
                  "line": 123,
                  "label": "should return nothing when entry is not found in the KeePass DB"
                }
              ]
            },
            {
              "type": "suite",
              "id": "C:\\Users\\JGrote\\Projects\\SecretManagement.KeePass\\SecretManagement.KeePass\\SecretManagement.KeePass.Extension\\Tests\\Get-Secret.Tests.ps1;131",
              "file": "C:\\Users\\JGrote\\Projects\\SecretManagement.KeePass\\SecretManagement.KeePass\\SecretManagement.KeePass.Extension\\Tests\\Get-Secret.Tests.ps1",
              "line": 130,
              "label": "Get Secret information from KeyFile protected KeePass",
              "children": [
                {
                  "type": "test",
                  "id": "C:\\Users\\JGrote\\Projects\\SecretManagement.KeePass\\SecretManagement.KeePass\\SecretManagement.KeePass.Extension\\Tests\\Get-Secret.Tests.ps1;161",
                  "file": "C:\\Users\\JGrote\\Projects\\SecretManagement.KeePass\\SecretManagement.KeePass\\SecretManagement.KeePass.Extension\\Tests\\Get-Secret.Tests.ps1",
                  "line": 160,
                  "label": "should return a <PSType> for entry <SecretName>"
                },
                {
                  "type": "test",
                  "id": "C:\\Users\\JGrote\\Projects\\SecretManagement.KeePass\\SecretManagement.KeePass\\SecretManagement.KeePass.Extension\\Tests\\Get-Secret.Tests.ps1;174",
                  "file": "C:\\Users\\JGrote\\Projects\\SecretManagement.KeePass\\SecretManagement.KeePass\\SecretManagement.KeePass.Extension\\Tests\\Get-Secret.Tests.ps1",
                  "line": 173,
                  "label": "should return <username> for <SecretName>"
                },
                {
                  "type": "test",
                  "id": "C:\\Users\\JGrote\\Projects\\SecretManagement.KeePass\\SecretManagement.KeePass\\SecretManagement.KeePass.Extension\\Tests\\Get-Secret.Tests.ps1;184",
                  "file": "C:\\Users\\JGrote\\Projects\\SecretManagement.KeePass\\SecretManagement.KeePass\\SecretManagement.KeePass.Extension\\Tests\\Get-Secret.Tests.ps1",
                  "line": 183,
                  "label": "should throw when multiple secrets are returned"
                },
                {
                  "type": "test",
                  "id": "C:\\Users\\JGrote\\Projects\\SecretManagement.KeePass\\SecretManagement.KeePass\\SecretManagement.KeePass.Extension\\Tests\\Get-Secret.Tests.ps1;191",
                  "file": "C:\\Users\\JGrote\\Projects\\SecretManagement.KeePass\\SecretManagement.KeePass\\SecretManagement.KeePass.Extension\\Tests\\Get-Secret.Tests.ps1",
                  "line": 190,
                  "label": "should return nothing when entry is not found in the KeePass DB"
                }
              ]
            },
            {
              "type": "suite",
              "id": "C:\\Users\\JGrote\\Projects\\SecretManagement.KeePass\\SecretManagement.KeePass\\SecretManagement.KeePass.Extension\\Tests\\Get-Secret.Tests.ps1;198",
              "file": "C:\\Users\\JGrote\\Projects\\SecretManagement.KeePass\\SecretManagement.KeePass\\SecretManagement.KeePass.Extension\\Tests\\Get-Secret.Tests.ps1",
              "line": 197,
              "label": "Get Secret information from MasterPassword and KeyFile protected KeePass",
              "children": [
                {
                  "type": "test",
                  "id": "C:\\Users\\JGrote\\Projects\\SecretManagement.KeePass\\SecretManagement.KeePass\\SecretManagement.KeePass.Extension\\Tests\\Get-Secret.Tests.ps1;232",
                  "file": "C:\\Users\\JGrote\\Projects\\SecretManagement.KeePass\\SecretManagement.KeePass\\SecretManagement.KeePass.Extension\\Tests\\Get-Secret.Tests.ps1",
                  "line": 231,
                  "label": "should return a <PSType> for entry <SecretName>"
                },
                {
                  "type": "test",
                  "id": "C:\\Users\\JGrote\\Projects\\SecretManagement.KeePass\\SecretManagement.KeePass\\SecretManagement.KeePass.Extension\\Tests\\Get-Secret.Tests.ps1;244",
                  "file": "C:\\Users\\JGrote\\Projects\\SecretManagement.KeePass\\SecretManagement.KeePass\\SecretManagement.KeePass.Extension\\Tests\\Get-Secret.Tests.ps1",
                  "line": 243,
                  "label": "should return <username> for <SecretName>"
                },
                {
                  "type": "test",
                  "id": "C:\\Users\\JGrote\\Projects\\SecretManagement.KeePass\\SecretManagement.KeePass\\SecretManagement.KeePass.Extension\\Tests\\Get-Secret.Tests.ps1;254",
                  "file": "C:\\Users\\JGrote\\Projects\\SecretManagement.KeePass\\SecretManagement.KeePass\\SecretManagement.KeePass.Extension\\Tests\\Get-Secret.Tests.ps1",
                  "line": 253,
                  "label": "should throw when multiple secrets are returned"
                },
                {
                  "type": "test",
                  "id": "C:\\Users\\JGrote\\Projects\\SecretManagement.KeePass\\SecretManagement.KeePass\\SecretManagement.KeePass.Extension\\Tests\\Get-Secret.Tests.ps1;261",
                  "file": "C:\\Users\\JGrote\\Projects\\SecretManagement.KeePass\\SecretManagement.KeePass\\SecretManagement.KeePass.Extension\\Tests\\Get-Secret.Tests.ps1",
                  "line": 260,
                  "label": "should return nothing when entry is not found in the KeePass DB"
                }
              ]
            }
          ]
        }
      ]
    }
  ]
}

[2021-03-20 21:23:33.281] [DEBUG] child process exited with code 0
[2021-03-20 21:23:33.281] [ERROR] Unable to parse JSON data from Pester test discovery script. Contents: VERBOSE: Loading module from path 'C:\Users\JGrote\Projects\SecretManagement.KeePass\SecretManagement.KeePass\SecretManagement.KeePass.psd1'.
VERBOSE: Loading module from path 'C:\Users\JGrote\Projects\SecretManagement.KeePass\SecretManagement.KeePass\SecretManagement.KeePass.Extension\SecretManagement.KeePass.Extension.psd1'.
VERBOSE: Loading module from path 'C:\Users\JGrote\Projects\SecretManagement.KeePass\SecretManagement.KeePass\PoshKeePass\PoShKeePass.psd1'.
VERBOSE: Loading 'FormatsToProcess' from path 'C:\Users\JGrote\Projects\SecretManagement.KeePass\SecretManagement.KeePass\PoshKeePass\PoShKeePass.format.ps1xml'.
VERBOSE: Loading module from path 'C:\Users\JGrote\Projects\SecretManagement.KeePass\SecretManagement.KeePass\PoshKeePass\PoShKeePass.psm1'.
VERBOSE: Importing function 'Add-KPEntry'.
VERBOSE: Importing function 'Add-KPGroup'.
VERBOSE: Importing function 'ConvertFrom-KPProtectedString'.
VERBOSE: Importing function 'ConvertTo-KPPSObject'.
VERBOSE: Importing function 'Get-KeePassConfigFile'.
VERBOSE: Importing function 'Get-KeePassDatabaseConfiguration'.
VERBOSE: Importing function 'Get-KeePassEntry'.
VERBOSE: Importing function 'Get-KeePassGroup'.
VERBOSE: Importing function 'Get-KPEntry'.
VERBOSE: Importing function 'Get-KPGroup'.
VERBOSE: Importing function 'Get-KPPasswordProfile'.
VERBOSE: Importing function 'Import-KPLibrary'.
VERBOSE: Importing function 'New-KeePassDatabase'.
VERBOSE: Importing function 'New-KeePassDatabaseConfiguration'.
VERBOSE: Importing function 'New-KeePassEntry'.
VERBOSE: Importing function 'New-KeePassGroup'.
VERBOSE: Importing function 'New-KeePassPassword'.
VERBOSE: Importing function 'New-KPConfigurationFile'.
VERBOSE: Importing function 'New-KPConnection'.
VERBOSE: Importing function 'New-KPPasswordProfile'.
VERBOSE: Importing function 'Remove-KeePassDatabaseConfiguration'.
VERBOSE: Importing function 'Remove-KeePassEntry'.
VERBOSE: Importing function 'Remove-KeePassGroup'.
VERBOSE: Importing function 'Remove-KPConnection'.
VERBOSE: Importing function 'Remove-KPEntry'.
VERBOSE: Importing function 'Remove-KPGroup'.
VERBOSE: Importing function 'Remove-KPPasswordProfile'.
VERBOSE: Importing function 'Restore-KPConfigurationFile'.
VERBOSE: Importing function 'Set-KeePassConfigFilePath'.
VERBOSE: Importing function 'Set-KPEntry'.
VERBOSE: Importing function 'Set-KPGroup'.
VERBOSE: Importing function 'Test-Bound'.
VERBOSE: Importing function 'Test-KPConnection'.
VERBOSE: Importing function 'Test-KPPasswordValue'.
VERBOSE: Importing function 'Update-KeePassDatabaseConfiguration'.
VERBOSE: Importing function 'Update-KeePassEntry'.
VERBOSE: Importing function 'Update-KeePassGroup'.
VERBOSE: Loading module from path 'C:\Users\JGrote\Projects\SecretManagement.KeePass\SecretManagement.KeePass\SecretManagement.KeePass.Extension\SecretManagement.KeePass.Extension.psm1'.
VERBOSE: Importing function 'Connect-KeePassDatabase'.
VERBOSE: Importing function 'Get-Secret'.
VERBOSE: Importing function 'Get-SecretInfo'.
VERBOSE: Importing function 'Remove-Secret'.
VERBOSE: Importing function 'Set-Secret'.
VERBOSE: Importing function 'Test-SecretVault'.
VERBOSE: Importing function 'Unlock-SecretVault'.
VERBOSE: Importing function 'Unregister-SecretVault'.
VERBOSE: Loading module from path 'C:\Users\JGrote\Projects\SecretManagement.KeePass\SecretManagement.KeePass\SecretManagement.KeePass.psm1'.
VERBOSE: Importing function 'Register-KeepassSecretVault'.
VERBOSE: Importing function 'Unlock-KeePassSecretVault'.
{
  "type": "suite",
  "id": "root",
  "label": "Pester",
  "children": [
    {
      "type": "suite",
      "id": "C:\\Users\\JGrote\\Projects\\SecretManagement.KeePass\\Tests\\SecretManagementVault.Tests.ps1",
      "file": "C:\\Users\\JGrote\\Projects\\SecretManagement.KeePass\\Tests\\SecretManagementVault.Tests.ps1",
      "label": "SecretManagementVault.Tests.ps1",
      "children": [
        {
          "type": "suite",
          "id": "C:\\Users\\JGrote\\Projects\\SecretManagement.KeePass\\Tests\\SecretManagementVault.Tests.ps1;2",
          "file": "C:\\Users\\JGrote\\Projects\\SecretManagement.KeePass\\Tests\\SecretManagementVault.Tests.ps1",
          "line": 1,
          "label": "SecretManagement.Keepass",
          "children": [
            {
              "type": "suite",
              "id": "C:\\Users\\JGrote\\Projects\\SecretManagement.KeePass\\Tests\\SecretManagementVault.Tests.ps1;63",
              "file": "C:\\Users\\JGrote\\Projects\\SecretManagement.KeePass\\Tests\\SecretManagementVault.Tests.ps1",
              "line": 62,
              "label": "Unlock",
              "children": [
                {
                  "type": "test",
                  "id": "C:\\Users\\JGrote\\Projects\\SecretManagement.KeePass\\Tests\\SecretManagementVault.Tests.ps1;64",
                  "file": "C:\\Users\\JGrote\\Projects\\SecretManagement.KeePass\\Tests\\SecretManagementVault.Tests.ps1",
                  "line": 63,
                  "label": "Vault prompts for Master Key"
                },
                {
                  "type": "test",
                  "id": "C:\\Users\\JGrote\\Projects\\SecretManagement.KeePass\\Tests\\SecretManagementVault.Tests.ps1;69",
                  "file": "C:\\Users\\JGrote\\Projects\\SecretManagement.KeePass\\Tests\\SecretManagementVault.Tests.ps1",
                  "line": 68,
                  "label": "Unattended Vault Unlock"
                }
              ]
            },
            {
              "type": "suite",
              "id": "C:\\Users\\JGrote\\Projects\\SecretManagement.KeePass\\Tests\\SecretManagementVault.Tests.ps1;76",
              "file": "C:\\Users\\JGrote\\Projects\\SecretManagement.KeePass\\Tests\\SecretManagementVault.Tests.ps1",
              "line": 75,
              "label": "InvalidRegistration",
              "children": [
                {
                  "type": "test",
                  "id": "C:\\Users\\JGrote\\Projects\\SecretManagement.KeePass\\Tests\\SecretManagementVault.Tests.ps1;84",
                  "file": "C:\\Users\\JGrote\\Projects\\SecretManagement.KeePass\\Tests\\SecretManagementVault.Tests.ps1",
                  "line": 83,
                  "label": "Test-SecretVault should fail on uninitalized vault"
                }
              ]
            },
            {
              "type": "suite",
              "id": "C:\\Users\\JGrote\\Projects\\SecretManagement.KeePass\\Tests\\SecretManagementVault.Tests.ps1;89",
              "file": "C:\\Users\\JGrote\\Projects\\SecretManagement.KeePass\\Tests\\SecretManagementVault.Tests.ps1",
              "line": 88,
              "label": "SecretManagement",
              "children": [
                {
                  "type": "test",
                  "id": "C:\\Users\\JGrote\\Projects\\SecretManagement.KeePass\\Tests\\SecretManagementVault.Tests.ps1;95",
                  "file": "C:\\Users\\JGrote\\Projects\\SecretManagement.KeePass\\Tests\\SecretManagementVault.Tests.ps1",
                  "line": 94,
                  "label": "Get-SecretVault"
                },
                {
                  "type": "test",
                  "id": "C:\\Users\\JGrote\\Projects\\SecretManagement.KeePass\\Tests\\SecretManagementVault.Tests.ps1;98",
                  "file": "C:\\Users\\JGrote\\Projects\\SecretManagement.KeePass\\Tests\\SecretManagementVault.Tests.ps1",
                  "line": 97,
                  "label": "Test-SecretVault"
                },
                {
                  "type": "test",
                  "id": "C:\\Users\\JGrote\\Projects\\SecretManagement.KeePass\\Tests\\SecretManagementVault.Tests.ps1;102",
                  "file": "C:\\Users\\JGrote\\Projects\\SecretManagement.KeePass\\Tests\\SecretManagementVault.Tests.ps1",
                  "line": 101,
                  "label": "Get/Set/Remove String"
                },
                {
                  "type": "test",
                  "id": "C:\\Users\\JGrote\\Projects\\SecretManagement.KeePass\\Tests\\SecretManagementVault.Tests.ps1;123",
                  "file": "C:\\Users\\JGrote\\Projects\\SecretManagement.KeePass\\Tests\\SecretManagementVault.Tests.ps1",
                  "line": 122,
                  "label": "Get/Set/Remove SecureString"
                },
                {
                  "type": "test",
                  "id": "C:\\Users\\JGrote\\Projects\\SecretManagement.KeePass\\Tests\\SecretManagementVault.Tests.ps1;138",
                  "file": "C:\\Users\\JGrote\\Projects\\SecretManagement.KeePass\\Tests\\SecretManagementVault.Tests.ps1",
                  "line": 137,
                  "label": "Get/Set/Remove PSCredential"
                },
                {
                  "type": "test",
                  "id": "C:\\Users\\JGrote\\Projects\\SecretManagement.KeePass\\Tests\\SecretManagementVault.Tests.ps1;155",
                  "file": "C:\\Users\\JGrote\\Projects\\SecretManagement.KeePass\\Tests\\SecretManagementVault.Tests.ps1",
                  "line": 154,
                  "label": "Should not create a duplicate entry with Set-Secret"
                },
                {
                  "type": "test",
                  "id": "C:\\Users\\JGrote\\Projects\\SecretManagement.KeePass\\Tests\\SecretManagementVault.Tests.ps1;163",
                  "file": "C:\\Users\\JGrote\\Projects\\SecretManagement.KeePass\\Tests\\SecretManagementVault.Tests.ps1",
                  "line": 162,
                  "label": "Register-SecretVault -AllowClobber"
                }
              ]
            }
          ]
        }
      ]
    },
    {
      "type": "suite",
      "id": "C:\\Users\\JGrote\\Projects\\SecretManagement.KeePass\\SecretManagement.KeePass\\Public\\Register-KeePassSecretVault.Tests.ps1",
      "file": "C:\\Users\\JGrote\\Projects\\SecretManagement.KeePass\\SecretManagement.KeePass\\Public\\Register-KeePassSecretVault.Tests.ps1",
      "label": "Register-KeePassSecretVault.Tests.ps1",
      "children": [
        {
          "type": "suite",
          "id": "C:\\Users\\JGrote\\Projects\\SecretManagement.KeePass\\SecretManagement.KeePass\\Public\\Register-KeePassSecretVault.Tests.ps1;2",
          "file": "C:\\Users\\JGrote\\Projects\\SecretManagement.KeePass\\SecretManagement.KeePass\\Public\\Register-KeePassSecretVault.Tests.ps1",
          "line": 1,
          "label": "Register-KeepassSecretVault",
          "children": [
            {
              "type": "test",
              "id": "C:\\Users\\JGrote\\Projects\\SecretManagement.KeePass\\SecretManagement.KeePass\\Public\\Register-KeePassSecretVault.Tests.ps1;20",
              "file": "C:\\Users\\JGrote\\Projects\\SecretManagement.KeePass\\SecretManagement.KeePass\\Public\\Register-KeePassSecretVault.Tests.ps1",
              "line": 19,
              "label": "Registers a Vault"
            },
            {
              "type": "test",
              "id": "C:\\Users\\JGrote\\Projects\\SecretManagement.KeePass\\SecretManagement.KeePass\\Public\\Register-KeePassSecretVault.Tests.ps1;30",
              "file": "C:\\Users\\JGrote\\Projects\\SecretManagement.KeePass\\SecretManagement.KeePass\\Public\\Register-KeePassSecretVault.Tests.ps1",
              "line": 29,
              "label": "Fails if bad path specified"
            },
            {
              "type": "test",
              "id": "C:\\Users\\JGrote\\Projects\\SecretManagement.KeePass\\SecretManagement.KeePass\\Public\\Register-KeePassSecretVault.Tests.ps1;34",
              "file": "C:\\Users\\JGrote\\Projects\\SecretManagement.KeePass\\SecretManagement.KeePass\\Public\\Register-KeePassSecretVault.Tests.ps1",
              "line": 33,
              "label": "Fails if no auth method specified"
            },
            {
              "type": "test",
              "id": "C:\\Users\\JGrote\\Projects\\SecretManagement.KeePass\\SecretManagement.KeePass\\Public\\Register-KeePassSecretVault.Tests.ps1;39",
              "file": "C:\\Users\\JGrote\\Projects\\SecretManagement.KeePass\\SecretManagement.KeePass\\Public\\Register-KeePassSecretVault.Tests.ps1",
              "line": 38,
              "label": "Creates a new vault if Create is specified"
            },
            {
              "type": "test",
              "id": "C:\\Users\\JGrote\\Projects\\SecretManagement.KeePass\\SecretManagement.KeePass\\Public\\Register-KeePassSecretVault.Tests.ps1;61",
              "file": "C:\\Users\\JGrote\\Projects\\SecretManagement.KeePass\\SecretManagement.KeePass\\Public\\Register-KeePassSecretVault.Tests.ps1",
              "line": 60,
              "label": "Doesnt Clobber an existing vault if Create is specified"
            },
            {
              "type": "test",
              "id": "C:\\Users\\JGrote\\Projects\\SecretManagement.KeePass\\SecretManagement.KeePass\\Public\\Register-KeePassSecretVault.Tests.ps1;74",
              "file": "C:\\Users\\JGrote\\Projects\\SecretManagement.KeePass\\SecretManagement.KeePass\\Public\\Register-KeePassSecretVault.Tests.ps1",
              "line": 73,
              "label": "Doesnt Clobber an existing keyfile if Create is specified"
            },
            {
              "type": "test",
              "id": "C:\\Users\\JGrote\\Projects\\SecretManagement.KeePass\\SecretManagement.KeePass\\Public\\Register-KeePassSecretVault.Tests.ps1;86",
              "file": "C:\\Users\\JGrote\\Projects\\SecretManagement.KeePass\\SecretManagement.KeePass\\Public\\Register-KeePassSecretVault.Tests.ps1",
              "line": 85,
              "label": "Uses full titles if showfulltitle is specified"
            },
            {
              "type": "test",
              "id": "C:\\Users\\JGrote\\Projects\\SecretManagement.KeePass\\SecretManagement.KeePass\\Public\\Register-KeePassSecretVault.Tests.ps1;90",
              "file": "C:\\Users\\JGrote\\Projects\\SecretManagement.KeePass\\SecretManagement.KeePass\\Public\\Register-KeePassSecretVault.Tests.ps1",
              "line": 89,
              "label": "Succeeds with bad path but SkipValidate specified"
            }
          ]
        }
      ]
    },
    {
      "type": "suite",
      "id": "C:\\Users\\JGrote\\Projects\\SecretManagement.KeePass\\SecretManagement.KeePass\\SecretManagement.KeePass.Extension\\Tests\\Test-SecretVault.Tests.ps1",
      "file": "C:\\Users\\JGrote\\Projects\\SecretManagement.KeePass\\SecretManagement.KeePass\\SecretManagement.KeePass.Extension\\Tests\\Test-SecretVault.Tests.ps1",
      "label": "Test-SecretVault.Tests.ps1",
      "children": [
        {
          "type": "suite",
          "id": "C:\\Users\\JGrote\\Projects\\SecretManagement.KeePass\\SecretManagement.KeePass\\SecretManagement.KeePass.Extension\\Tests\\Test-SecretVault.Tests.ps1;5",
          "file": "C:\\Users\\JGrote\\Projects\\SecretManagement.KeePass\\SecretManagement.KeePass\\SecretManagement.KeePass.Extension\\Tests\\Test-SecretVault.Tests.ps1",
          "line": 4,
          "label": "Test-SecretVault",
          "children": [
            {
              "type": "suite",
              "id": "C:\\Users\\JGrote\\Projects\\SecretManagement.KeePass\\SecretManagement.KeePass\\SecretManagement.KeePass.Extension\\Tests\\Test-SecretVault.Tests.ps1;19",
              "file": "C:\\Users\\JGrote\\Projects\\SecretManagement.KeePass\\SecretManagement.KeePass\\SecretManagement.KeePass.Extension\\Tests\\Test-SecretVault.Tests.ps1",
              "line": 18,
              "label": "Function Parameter Validation",
              "children": [
                {
                  "type": "test",
                  "id": "C:\\Users\\JGrote\\Projects\\SecretManagement.KeePass\\SecretManagement.KeePass\\SecretManagement.KeePass.Extension\\Tests\\Test-SecretVault.Tests.ps1;25",
                  "file": "C:\\Users\\JGrote\\Projects\\SecretManagement.KeePass\\SecretManagement.KeePass\\SecretManagement.KeePass.Extension\\Tests\\Test-SecretVault.Tests.ps1",
                  "line": 24,
                  "label": "has a parameter \"<Name>\""
                },
                {
                  "type": "test",
                  "id": "C:\\Users\\JGrote\\Projects\\SecretManagement.KeePass\\SecretManagement.KeePass\\SecretManagement.KeePass.Extension\\Tests\\Test-SecretVault.Tests.ps1;32",
                  "file": "C:\\Users\\JGrote\\Projects\\SecretManagement.KeePass\\SecretManagement.KeePass\\SecretManagement.KeePass.Extension\\Tests\\Test-SecretVault.Tests.ps1",
                  "line": 31,
                  "label": "has the mandatory value of parameter \"<Name>\" set to \"<Mandatory>\""
                },
                {
                  "type": "test",
                  "id": "C:\\Users\\JGrote\\Projects\\SecretManagement.KeePass\\SecretManagement.KeePass\\SecretManagement.KeePass.Extension\\Tests\\Test-SecretVault.Tests.ps1;38",
                  "file": "C:\\Users\\JGrote\\Projects\\SecretManagement.KeePass\\SecretManagement.KeePass\\SecretManagement.KeePass.Extension\\Tests\\Test-SecretVault.Tests.ps1",
                  "line": 37,
                  "label": "has parameter <Name> of type <Type>"
                },
                {
                  "type": "test",
                  "id": "C:\\Users\\JGrote\\Projects\\SecretManagement.KeePass\\SecretManagement.KeePass\\SecretManagement.KeePass.Extension\\Tests\\Test-SecretVault.Tests.ps1;44",
                  "file": "C:\\Users\\JGrote\\Projects\\SecretManagement.KeePass\\SecretManagement.KeePass\\SecretManagement.KeePass.Extension\\Tests\\Test-SecretVault.Tests.ps1",
                  "line": 43,
                  "label": "has one parameter set"
                }
              ]
            },
            {
              "type": "suite",
              "id": "C:\\Users\\JGrote\\Projects\\SecretManagement.KeePass\\SecretManagement.KeePass\\SecretManagement.KeePass.Extension\\Tests\\Test-SecretVault.Tests.ps1;48",
              "file": "C:\\Users\\JGrote\\Projects\\SecretManagement.KeePass\\SecretManagement.KeePass\\SecretManagement.KeePass.Extension\\Tests\\Test-SecretVault.Tests.ps1",
              "line": 47,
              "label": "Validating with correct MasterPassword",
              "children": [
                {
                  "type": "test",
                  "id": "C:\\Users\\JGrote\\Projects\\SecretManagement.KeePass\\SecretManagement.KeePass\\SecretManagement.KeePass.Extension\\Tests\\Test-SecretVault.Tests.ps1;76",
                  "file": "C:\\Users\\JGrote\\Projects\\SecretManagement.KeePass\\SecretManagement.KeePass\\SecretManagement.KeePass.Extension\\Tests\\Test-SecretVault.Tests.ps1",
                  "line": 75,
                  "label": "should not have a variable 'Vault_'"
                },
                {
                  "type": "test",
                  "id": "C:\\Users\\JGrote\\Projects\\SecretManagement.KeePass\\SecretManagement.KeePass\\SecretManagement.KeePass.Extension\\Tests\\Test-SecretVault.Tests.ps1;80",
                  "file": "C:\\Users\\JGrote\\Projects\\SecretManagement.KeePass\\SecretManagement.KeePass\\SecretManagement.KeePass.Extension\\Tests\\Test-SecretVault.Tests.ps1",
                  "line": 79,
                  "label": "should request a credential on the first pass"
                },
                {
                  "type": "test",
                  "id": "C:\\Users\\JGrote\\Projects\\SecretManagement.KeePass\\SecretManagement.KeePass\\SecretManagement.KeePass.Extension\\Tests\\Test-SecretVault.Tests.ps1;84",
                  "file": "C:\\Users\\JGrote\\Projects\\SecretManagement.KeePass\\SecretManagement.KeePass\\SecretManagement.KeePass.Extension\\Tests\\Test-SecretVault.Tests.ps1",
                  "line": 83,
                  "label": "Should not request a credential on the second pass"
                },
                {
                  "type": "test",
                  "id": "C:\\Users\\JGrote\\Projects\\SecretManagement.KeePass\\SecretManagement.KeePass\\SecretManagement.KeePass.Extension\\Tests\\Test-SecretVault.Tests.ps1;89",
                  "file": "C:\\Users\\JGrote\\Projects\\SecretManagement.KeePass\\SecretManagement.KeePass\\SecretManagement.KeePass.Extension\\Tests\\Test-SecretVault.Tests.ps1",
                  "line": 88,
                  "label": "should have a variable 'Vault_' upon unlock"
                },
                {
                  "type": "test",
                  "id": "C:\\Users\\JGrote\\Projects\\SecretManagement.KeePass\\SecretManagement.KeePass\\SecretManagement.KeePass.Extension\\Tests\\Test-SecretVault.Tests.ps1;93",
                  "file": "C:\\Users\\JGrote\\Projects\\SecretManagement.KeePass\\SecretManagement.KeePass\\SecretManagement.KeePass.Extension\\Tests\\Test-SecretVault.Tests.ps1",
                  "line": 92,
                  "label": "should return true"
                }
              ]
            },
            {
              "type": "suite",
              "id": "C:\\Users\\JGrote\\Projects\\SecretManagement.KeePass\\SecretManagement.KeePass\\SecretManagement.KeePass.Extension\\Tests\\Test-SecretVault.Tests.ps1;97",
              "file": "C:\\Users\\JGrote\\Projects\\SecretManagement.KeePass\\SecretManagement.KeePass\\SecretManagement.KeePass.Extension\\Tests\\Test-SecretVault.Tests.ps1",
              "line": 96,
              "label": "Validating with incorrect MasterPassword",
              "children": [
                {
                  "type": "test",
                  "id": "C:\\Users\\JGrote\\Projects\\SecretManagement.KeePass\\SecretManagement.KeePass\\SecretManagement.KeePass.Extension\\Tests\\Test-SecretVault.Tests.ps1;125",
                  "file": "C:\\Users\\JGrote\\Projects\\SecretManagement.KeePass\\SecretManagement.KeePass\\SecretManagement.KeePass.Extension\\Tests\\Test-SecretVault.Tests.ps1",
                  "line": 124,
                  "label": "should not have a variable 'Vault_'"
                },
                {
                  "type": "test",
                  "id": "C:\\Users\\JGrote\\Projects\\SecretManagement.KeePass\\SecretManagement.KeePass\\SecretManagement.KeePass.Extension\\Tests\\Test-SecretVault.Tests.ps1;128",
                  "file": "C:\\Users\\JGrote\\Projects\\SecretManagement.KeePass\\SecretManagement.KeePass\\SecretManagement.KeePass.Extension\\Tests\\Test-SecretVault.Tests.ps1",
                  "line": 127,
                  "label": "Detects Invalid Composite Key and does not set a vault variable"
                }
              ]
            },
            {
              "type": "suite",
              "id": "C:\\Users\\JGrote\\Projects\\SecretManagement.KeePass\\SecretManagement.KeePass\\SecretManagement.KeePass.Extension\\Tests\\Test-SecretVault.Tests.ps1;139",
              "file": "C:\\Users\\JGrote\\Projects\\SecretManagement.KeePass\\SecretManagement.KeePass\\SecretManagement.KeePass.Extension\\Tests\\Test-SecretVault.Tests.ps1",
              "line": 138,
              "label": "Validating with Path and correct UseMasterPassword",
              "children": [
                {
                  "type": "test",
                  "id": "C:\\Users\\JGrote\\Projects\\SecretManagement.KeePass\\SecretManagement.KeePass\\SecretManagement.KeePass.Extension\\Tests\\Test-SecretVault.Tests.ps1;168",
                  "file": "C:\\Users\\JGrote\\Projects\\SecretManagement.KeePass\\SecretManagement.KeePass\\SecretManagement.KeePass.Extension\\Tests\\Test-SecretVault.Tests.ps1",
                  "line": 167,
                  "label": "should not have a variable 'Vault_'"
                },
                {
                  "type": "test",
                  "id": "C:\\Users\\JGrote\\Projects\\SecretManagement.KeePass\\SecretManagement.KeePass\\SecretManagement.KeePass.Extension\\Tests\\Test-SecretVault.Tests.ps1;171",
                  "file": "C:\\Users\\JGrote\\Projects\\SecretManagement.KeePass\\SecretManagement.KeePass\\SecretManagement.KeePass.Extension\\Tests\\Test-SecretVault.Tests.ps1",
                  "line": 170,
                  "label": "should request a credential on the first pass"
                },
                {
                  "type": "test",
                  "id": "C:\\Users\\JGrote\\Projects\\SecretManagement.KeePass\\SecretManagement.KeePass\\SecretManagement.KeePass.Extension\\Tests\\Test-SecretVault.Tests.ps1;175",
                  "file": "C:\\Users\\JGrote\\Projects\\SecretManagement.KeePass\\SecretManagement.KeePass\\SecretManagement.KeePass.Extension\\Tests\\Test-SecretVault.Tests.ps1",
                  "line": 174,
                  "label": "Should not request a credential on the second pass"
                },
                {
                  "type": "test",
                  "id": "C:\\Users\\JGrote\\Projects\\SecretManagement.KeePass\\SecretManagement.KeePass\\SecretManagement.KeePass.Extension\\Tests\\Test-SecretVault.Tests.ps1;180",
                  "file": "C:\\Users\\JGrote\\Projects\\SecretManagement.KeePass\\SecretManagement.KeePass\\SecretManagement.KeePass.Extension\\Tests\\Test-SecretVault.Tests.ps1",
                  "line": 179,
                  "label": "should have a variable 'Vault_' after unlock"
                }
              ]
            },
            {
              "type": "suite",
              "id": "C:\\Users\\JGrote\\Projects\\SecretManagement.KeePass\\SecretManagement.KeePass\\SecretManagement.KeePass.Extension\\Tests\\Test-SecretVault.Tests.ps1;185",
              "file": "C:\\Users\\JGrote\\Projects\\SecretManagement.KeePass\\SecretManagement.KeePass\\SecretManagement.KeePass.Extension\\Tests\\Test-SecretVault.Tests.ps1",
              "line": 184,
              "label": "Validating with Path and incorrect UseMasterPassword",
              "children": [
                {
                  "type": "test",
                  "id": "C:\\Users\\JGrote\\Projects\\SecretManagement.KeePass\\SecretManagement.KeePass\\SecretManagement.KeePass.Extension\\Tests\\Test-SecretVault.Tests.ps1;213",
                  "file": "C:\\Users\\JGrote\\Projects\\SecretManagement.KeePass\\SecretManagement.KeePass\\SecretManagement.KeePass.Extension\\Tests\\Test-SecretVault.Tests.ps1",
                  "line": 212,
                  "label": "should not have a variable 'Vault_'"
                },
                {
                  "type": "test",
                  "id": "C:\\Users\\JGrote\\Projects\\SecretManagement.KeePass\\SecretManagement.KeePass\\SecretManagement.KeePass.Extension\\Tests\\Test-SecretVault.Tests.ps1;217",
                  "file": "C:\\Users\\JGrote\\Projects\\SecretManagement.KeePass\\SecretManagement.KeePass\\SecretManagement.KeePass.Extension\\Tests\\Test-SecretVault.Tests.ps1",
                  "line": 216,
                  "label": "Detects keepass composite key issue and does not set Vault connection variable"
                }
              ]
            },
            {
              "type": "suite",
              "id": "C:\\Users\\JGrote\\Projects\\SecretManagement.KeePass\\SecretManagement.KeePass\\SecretManagement.KeePass.Extension\\Tests\\Test-SecretVault.Tests.ps1;223",
              "file": "C:\\Users\\JGrote\\Projects\\SecretManagement.KeePass\\SecretManagement.KeePass\\SecretManagement.KeePass.Extension\\Tests\\Test-SecretVault.Tests.ps1",
              "line": 222,
              "label": "Validating with correct Keyfile",
              "children": [
                {
                  "type": "test",
                  "id": "C:\\Users\\JGrote\\Projects\\SecretManagement.KeePass\\SecretManagement.KeePass\\SecretManagement.KeePass.Extension\\Tests\\Test-SecretVault.Tests.ps1;253",
                  "file": "C:\\Users\\JGrote\\Projects\\SecretManagement.KeePass\\SecretManagement.KeePass\\SecretManagement.KeePass.Extension\\Tests\\Test-SecretVault.Tests.ps1",
                  "line": 252,
                  "label": "should not have a variable 'Vault_'"
                },
                {
                  "type": "test",
                  "id": "C:\\Users\\JGrote\\Projects\\SecretManagement.KeePass\\SecretManagement.KeePass\\SecretManagement.KeePass.Extension\\Tests\\Test-SecretVault.Tests.ps1;256",
                  "file": "C:\\Users\\JGrote\\Projects\\SecretManagement.KeePass\\SecretManagement.KeePass\\SecretManagement.KeePass.Extension\\Tests\\Test-SecretVault.Tests.ps1",
                  "line": 255,
                  "label": "Should not request a credential"
                },
                {
                  "type": "test",
                  "id": "C:\\Users\\JGrote\\Projects\\SecretManagement.KeePass\\SecretManagement.KeePass\\SecretManagement.KeePass.Extension\\Tests\\Test-SecretVault.Tests.ps1;260",
                  "file": "C:\\Users\\JGrote\\Projects\\SecretManagement.KeePass\\SecretManagement.KeePass\\SecretManagement.KeePass.Extension\\Tests\\Test-SecretVault.Tests.ps1",
                  "line": 259,
                  "label": "should have a variable 'Vault_'"
                },
                {
                  "type": "test",
                  "id": "C:\\Users\\JGrote\\Projects\\SecretManagement.KeePass\\SecretManagement.KeePass\\SecretManagement.KeePass.Extension\\Tests\\Test-SecretVault.Tests.ps1;263",
                  "file": "C:\\Users\\JGrote\\Projects\\SecretManagement.KeePass\\SecretManagement.KeePass\\SecretManagement.KeePass.Extension\\Tests\\Test-SecretVault.Tests.ps1",
                  "line": 262,
                  "label": "should return true"
                }
              ]
            },
            {
              "type": "suite",
              "id": "C:\\Users\\JGrote\\Projects\\SecretManagement.KeePass\\SecretManagement.KeePass\\SecretManagement.KeePass.Extension\\Tests\\Test-SecretVault.Tests.ps1;268",
              "file": "C:\\Users\\JGrote\\Projects\\SecretManagement.KeePass\\SecretManagement.KeePass\\SecretManagement.KeePass.Extension\\Tests\\Test-SecretVault.Tests.ps1",
              "line": 267,
              "label": "Validating with correct Keyfile V2",
              "children": [
                {
                  "type": "test",
                  "id": "C:\\Users\\JGrote\\Projects\\SecretManagement.KeePass\\SecretManagement.KeePass\\SecretManagement.KeePass.Extension\\Tests\\Test-SecretVault.Tests.ps1;298",
                  "file": "C:\\Users\\JGrote\\Projects\\SecretManagement.KeePass\\SecretManagement.KeePass\\SecretManagement.KeePass.Extension\\Tests\\Test-SecretVault.Tests.ps1",
                  "line": 297,
                  "label": "should not have a variable 'Vault_'"
                },
                {
                  "type": "test",
                  "id": "C:\\Users\\JGrote\\Projects\\SecretManagement.KeePass\\SecretManagement.KeePass\\SecretManagement.KeePass.Extension\\Tests\\Test-SecretVault.Tests.ps1;301",
                  "file": "C:\\Users\\JGrote\\Projects\\SecretManagement.KeePass\\SecretManagement.KeePass\\SecretManagement.KeePass.Extension\\Tests\\Test-SecretVault.Tests.ps1",
                  "line": 300,
                  "label": "Should not request a credential"
                },
                {
                  "type": "test",
                  "id": "C:\\Users\\JGrote\\Projects\\SecretManagement.KeePass\\SecretManagement.KeePass\\SecretManagement.KeePass.Extension\\Tests\\Test-SecretVault.Tests.ps1;305",
                  "file": "C:\\Users\\JGrote\\Projects\\SecretManagement.KeePass\\SecretManagement.KeePass\\SecretManagement.KeePass.Extension\\Tests\\Test-SecretVault.Tests.ps1",
                  "line": 304,
                  "label": "should have a variable 'Vault_'"
                },
                {
                  "type": "test",
                  "id": "C:\\Users\\JGrote\\Projects\\SecretManagement.KeePass\\SecretManagement.KeePass\\SecretManagement.KeePass.Extension\\Tests\\Test-SecretVault.Tests.ps1;308",
                  "file": "C:\\Users\\JGrote\\Projects\\SecretManagement.KeePass\\SecretManagement.KeePass\\SecretManagement.KeePass.Extension\\Tests\\Test-SecretVault.Tests.ps1",
                  "line": 307,
                  "label": "should return true"
                }
              ]
            },
            {
              "type": "suite",
              "id": "C:\\Users\\JGrote\\Projects\\SecretManagement.KeePass\\SecretManagement.KeePass\\SecretManagement.KeePass.Extension\\Tests\\Test-SecretVault.Tests.ps1;314",
              "file": "C:\\Users\\JGrote\\Projects\\SecretManagement.KeePass\\SecretManagement.KeePass\\SecretManagement.KeePass.Extension\\Tests\\Test-SecretVault.Tests.ps1",
              "line": 313,
              "label": "Validating with incorrect Keyfile",
              "children": [
                {
                  "type": "test",
                  "id": "C:\\Users\\JGrote\\Projects\\SecretManagement.KeePass\\SecretManagement.KeePass\\SecretManagement.KeePass.Extension\\Tests\\Test-SecretVault.Tests.ps1;344",
                  "file": "C:\\Users\\JGrote\\Projects\\SecretManagement.KeePass\\SecretManagement.KeePass\\SecretManagement.KeePass.Extension\\Tests\\Test-SecretVault.Tests.ps1",
                  "line": 343,
                  "label": "should not have a variable 'Vault_'"
                },
                {
                  "type": "test",
                  "id": "C:\\Users\\JGrote\\Projects\\SecretManagement.KeePass\\SecretManagement.KeePass\\SecretManagement.KeePass.Extension\\Tests\\Test-SecretVault.Tests.ps1;347",
                  "file": "C:\\Users\\JGrote\\Projects\\SecretManagement.KeePass\\SecretManagement.KeePass\\SecretManagement.KeePass.Extension\\Tests\\Test-SecretVault.Tests.ps1",
                  "line": 346,
                  "label": "Should not request a credential"
                },
                {
                  "type": "test",
                  "id": "C:\\Users\\JGrote\\Projects\\SecretManagement.KeePass\\SecretManagement.KeePass\\SecretManagement.KeePass.Extension\\Tests\\Test-SecretVault.Tests.ps1;354",
                  "file": "C:\\Users\\JGrote\\Projects\\SecretManagement.KeePass\\SecretManagement.KeePass\\SecretManagement.KeePass.Extension\\Tests\\Test-SecretVault.Tests.ps1",
                  "line": 353,
                  "label": "should still not have a variable 'Vault_'"
                }
              ]
            },
            {
              "type": "suite",
              "id": "C:\\Users\\JGrote\\Projects\\SecretManagement.KeePass\\SecretManagement.KeePass\\SecretManagement.KeePass.Extension\\Tests\\Test-SecretVault.Tests.ps1;358",
              "file": "C:\\Users\\JGrote\\Projects\\SecretManagement.KeePass\\SecretManagement.KeePass\\SecretManagement.KeePass.Extension\\Tests\\Test-SecretVault.Tests.ps1",
              "line": 357,
              "label": "Validating with correct Keyfile and correct master password",
              "children": [
                {
                  "type": "test",
                  "id": "C:\\Users\\JGrote\\Projects\\SecretManagement.KeePass\\SecretManagement.KeePass\\SecretManagement.KeePass.Extension\\Tests\\Test-SecretVault.Tests.ps1;391",
                  "file": "C:\\Users\\JGrote\\Projects\\SecretManagement.KeePass\\SecretManagement.KeePass\\SecretManagement.KeePass.Extension\\Tests\\Test-SecretVault.Tests.ps1",
                  "line": 390,
                  "label": "should not have a variable 'Vault_'"
                },
                {
                  "type": "test",
                  "id": "C:\\Users\\JGrote\\Projects\\SecretManagement.KeePass\\SecretManagement.KeePass\\SecretManagement.KeePass.Extension\\Tests\\Test-SecretVault.Tests.ps1;394",
                  "file": "C:\\Users\\JGrote\\Projects\\SecretManagement.KeePass\\SecretManagement.KeePass\\SecretManagement.KeePass.Extension\\Tests\\Test-SecretVault.Tests.ps1",
                  "line": 393,
                  "label": "Should request a credential on the first pass"
                },
                {
                  "type": "test",
                  "id": "C:\\Users\\JGrote\\Projects\\SecretManagement.KeePass\\SecretManagement.KeePass\\SecretManagement.KeePass.Extension\\Tests\\Test-SecretVault.Tests.ps1;398",
                  "file": "C:\\Users\\JGrote\\Projects\\SecretManagement.KeePass\\SecretManagement.KeePass\\SecretManagement.KeePass.Extension\\Tests\\Test-SecretVault.Tests.ps1",
                  "line": 397,
                  "label": "Should not request a credential on the second pass"
                },
                {
                  "type": "test",
                  "id": "C:\\Users\\JGrote\\Projects\\SecretManagement.KeePass\\SecretManagement.KeePass\\SecretManagement.KeePass.Extension\\Tests\\Test-SecretVault.Tests.ps1;402",
                  "file": "C:\\Users\\JGrote\\Projects\\SecretManagement.KeePass\\SecretManagement.KeePass\\SecretManagement.KeePass.Extension\\Tests\\Test-SecretVault.Tests.ps1",
                  "line": 401,
                  "label": "should have a variable 'Vault_'"
                },
                {
                  "type": "test",
                  "id": "C:\\Users\\JGrote\\Projects\\SecretManagement.KeePass\\SecretManagement.KeePass\\SecretManagement.KeePass.Extension\\Tests\\Test-SecretVault.Tests.ps1;405",
                  "file": "C:\\Users\\JGrote\\Projects\\SecretManagement.KeePass\\SecretManagement.KeePass\\SecretManagement.KeePass.Extension\\Tests\\Test-SecretVault.Tests.ps1",
                  "line": 404,
                  "label": "should return true"
                }
              ]
            },
            {
              "type": "suite",
              "id": "C:\\Users\\JGrote\\Projects\\SecretManagement.KeePass\\SecretManagement.KeePass\\SecretManagement.KeePass.Extension\\Tests\\Test-SecretVault.Tests.ps1;409",
              "file": "C:\\Users\\JGrote\\Projects\\SecretManagement.KeePass\\SecretManagement.KeePass\\SecretManagement.KeePass.Extension\\Tests\\Test-SecretVault.Tests.ps1",
              "line": 408,
              "label": "Validating with correct Keyfile and incorrect master password",
              "children": [
                {
                  "type": "test",
                  "id": "C:\\Users\\JGrote\\Projects\\SecretManagement.KeePass\\SecretManagement.KeePass\\SecretManagement.KeePass.Extension\\Tests\\Test-SecretVault.Tests.ps1;442",
                  "file": "C:\\Users\\JGrote\\Projects\\SecretManagement.KeePass\\SecretManagement.KeePass\\SecretManagement.KeePass.Extension\\Tests\\Test-SecretVault.Tests.ps1",
                  "line": 441,
                  "label": "should not have a variable 'Vault_'"
                },
                {
                  "type": "test",
                  "id": "C:\\Users\\JGrote\\Projects\\SecretManagement.KeePass\\SecretManagement.KeePass\\SecretManagement.KeePass.Extension\\Tests\\Test-SecretVault.Tests.ps1;445",
                  "file": "C:\\Users\\JGrote\\Projects\\SecretManagement.KeePass\\SecretManagement.KeePass\\SecretManagement.KeePass.Extension\\Tests\\Test-SecretVault.Tests.ps1",
                  "line": 444,
                  "label": "Detects Invalid Composite Key and does not set a vault variable"
                }
              ]
            },
            {
              "type": "suite",
              "id": "C:\\Users\\JGrote\\Projects\\SecretManagement.KeePass\\SecretManagement.KeePass\\SecretManagement.KeePass.Extension\\Tests\\Test-SecretVault.Tests.ps1;456",
              "file": "C:\\Users\\JGrote\\Projects\\SecretManagement.KeePass\\SecretManagement.KeePass\\SecretManagement.KeePass.Extension\\Tests\\Test-SecretVault.Tests.ps1",
              "line": 455,
              "label": "Validating with incorrect Keyfile and correct master password",
              "children": [
                {
                  "type": "test",
                  "id": "C:\\Users\\JGrote\\Projects\\SecretManagement.KeePass\\SecretManagement.KeePass\\SecretManagement.KeePass.Extension\\Tests\\Test-SecretVault.Tests.ps1;489",
                  "file": "C:\\Users\\JGrote\\Projects\\SecretManagement.KeePass\\SecretManagement.KeePass\\SecretManagement.KeePass.Extension\\Tests\\Test-SecretVault.Tests.ps1",
                  "line": 488,
                  "label": "should not have a variable 'Vault_'"
                },
                {
                  "type": "test",
                  "id": "C:\\Users\\JGrote\\Projects\\SecretManagement.KeePass\\SecretManagement.KeePass\\SecretManagement.KeePass.Extension\\Tests\\Test-SecretVault.Tests.ps1;492",
                  "file": "C:\\Users\\JGrote\\Projects\\SecretManagement.KeePass\\SecretManagement.KeePass\\SecretManagement.KeePass.Extension\\Tests\\Test-SecretVault.Tests.ps1",
                  "line": 491,
                  "label": "Detects Invalid Composite Key and does not set a vault variable"
                }
              ]
            },
            {
              "type": "suite",
              "id": "C:\\Users\\JGrote\\Projects\\SecretManagement.KeePass\\SecretManagement.KeePass\\SecretManagement.KeePass.Extension\\Tests\\Test-SecretVault.Tests.ps1;503",
              "file": "C:\\Users\\JGrote\\Projects\\SecretManagement.KeePass\\SecretManagement.KeePass\\SecretManagement.KeePass.Extension\\Tests\\Test-SecretVault.Tests.ps1",
              "line": 502,
              "label": "Validating with incorrect Keyfile and incorrect master password",
              "children": [
                {
                  "type": "test",
                  "id": "C:\\Users\\JGrote\\Projects\\SecretManagement.KeePass\\SecretManagement.KeePass\\SecretManagement.KeePass.Extension\\Tests\\Test-SecretVault.Tests.ps1;536",
                  "file": "C:\\Users\\JGrote\\Projects\\SecretManagement.KeePass\\SecretManagement.KeePass\\SecretManagement.KeePass.Extension\\Tests\\Test-SecretVault.Tests.ps1",
                  "line": 535,
                  "label": "should not have a variable 'Vault_'"
                },
                {
                  "type": "test",
                  "id": "C:\\Users\\JGrote\\Projects\\SecretManagement.KeePass\\SecretManagement.KeePass\\SecretManagement.KeePass.Extension\\Tests\\Test-SecretVault.Tests.ps1;539",
                  "file": "C:\\Users\\JGrote\\Projects\\SecretManagement.KeePass\\SecretManagement.KeePass\\SecretManagement.KeePass.Extension\\Tests\\Test-SecretVault.Tests.ps1",
                  "line": 538,
                  "label": "Detects Invalid Composite Key and does not set a vault variable"
                }
              ]
            },
            {
              "type": "suite",
              "id": "C:\\Users\\JGrote\\Projects\\SecretManagement.KeePass\\SecretManagement.KeePass\\SecretManagement.KeePass.Extension\\Tests\\Test-SecretVault.Tests.ps1;550",
              "file": "C:\\Users\\JGrote\\Projects\\SecretManagement.KeePass\\SecretManagement.KeePass\\SecretManagement.KeePass.Extension\\Tests\\Test-SecretVault.Tests.ps1",
              "line": 549,
              "label": "Validating Keyfile",
              "children": [
                {
                  "type": "test",
                  "id": "C:\\Users\\JGrote\\Projects\\SecretManagement.KeePass\\SecretManagement.KeePass\\SecretManagement.KeePass.Extension\\Tests\\Test-SecretVault.Tests.ps1;580",
                  "file": "C:\\Users\\JGrote\\Projects\\SecretManagement.KeePass\\SecretManagement.KeePass\\SecretManagement.KeePass.Extension\\Tests\\Test-SecretVault.Tests.ps1",
                  "line": 579,
                  "label": "should not have a variable 'Vault_'"
                },
                {
                  "type": "test",
                  "id": "C:\\Users\\JGrote\\Projects\\SecretManagement.KeePass\\SecretManagement.KeePass\\SecretManagement.KeePass.Extension\\Tests\\Test-SecretVault.Tests.ps1;583",
                  "file": "C:\\Users\\JGrote\\Projects\\SecretManagement.KeePass\\SecretManagement.KeePass\\SecretManagement.KeePass.Extension\\Tests\\Test-SecretVault.Tests.ps1",
                  "line": 582,
                  "label": "Should not request a credential"
                }
              ]
            },
            {
              "type": "suite",
              "id": "C:\\Users\\JGrote\\Projects\\SecretManagement.KeePass\\SecretManagement.KeePass\\SecretManagement.KeePass.Extension\\Tests\\Test-SecretVault.Tests.ps1;589",
              "file": "C:\\Users\\JGrote\\Projects\\SecretManagement.KeePass\\SecretManagement.KeePass\\SecretManagement.KeePass.Extension\\Tests\\Test-SecretVault.Tests.ps1",
              "line": 588,
              "label": "Validating Keyfile with master password",
              "children": [
                {
                  "type": "test",
                  "id": "C:\\Users\\JGrote\\Projects\\SecretManagement.KeePass\\SecretManagement.KeePass\\SecretManagement.KeePass.Extension\\Tests\\Test-SecretVault.Tests.ps1;622",
                  "file": "C:\\Users\\JGrote\\Projects\\SecretManagement.KeePass\\SecretManagement.KeePass\\SecretManagement.KeePass.Extension\\Tests\\Test-SecretVault.Tests.ps1",
                  "line": 621,
                  "label": "should not have a variable 'Vault_'"
                },
                {
                  "type": "test",
                  "id": "C:\\Users\\JGrote\\Projects\\SecretManagement.KeePass\\SecretManagement.KeePass\\SecretManagement.KeePass.Extension\\Tests\\Test-SecretVault.Tests.ps1;625",
                  "file": "C:\\Users\\JGrote\\Projects\\SecretManagement.KeePass\\SecretManagement.KeePass\\SecretManagement.KeePass.Extension\\Tests\\Test-SecretVault.Tests.ps1",
                  "line": 624,
                  "label": "Should request a credential on the first pass"
                },
                {
                  "type": "test",
                  "id": "C:\\Users\\JGrote\\Projects\\SecretManagement.KeePass\\SecretManagement.KeePass\\SecretManagement.KeePass.Extension\\Tests\\Test-SecretVault.Tests.ps1;629",
                  "file": "C:\\Users\\JGrote\\Projects\\SecretManagement.KeePass\\SecretManagement.KeePass\\SecretManagement.KeePass.Extension\\Tests\\Test-SecretVault.Tests.ps1",
                  "line": 628,
                  "label": "Should not request a credential on the second pass"
                },
                {
                  "type": "test",
                  "id": "C:\\Users\\JGrote\\Projects\\SecretManagement.KeePass\\SecretManagement.KeePass\\SecretManagement.KeePass.Extension\\Tests\\Test-SecretVault.Tests.ps1;634",
                  "file": "C:\\Users\\JGrote\\Projects\\SecretManagement.KeePass\\SecretManagement.KeePass\\SecretManagement.KeePass.Extension\\Tests\\Test-SecretVault.Tests.ps1",
                  "line": 633,
                  "label": "should have a variable 'Vault_'"
                }
              ]
            },
            {
              "type": "suite",
              "id": "C:\\Users\\JGrote\\Projects\\SecretManagement.KeePass\\SecretManagement.KeePass\\SecretManagement.KeePass.Extension\\Tests\\Test-SecretVault.Tests.ps1;639",
              "file": "C:\\Users\\JGrote\\Projects\\SecretManagement.KeePass\\SecretManagement.KeePass\\SecretManagement.KeePass.Extension\\Tests\\Test-SecretVault.Tests.ps1",
              "line": 638,
              "label": "Validating Keyfile",
              "children": [
                {
                  "type": "test",
                  "id": "C:\\Users\\JGrote\\Projects\\SecretManagement.KeePass\\SecretManagement.KeePass\\SecretManagement.KeePass.Extension\\Tests\\Test-SecretVault.Tests.ps1;669",
                  "file": "C:\\Users\\JGrote\\Projects\\SecretManagement.KeePass\\SecretManagement.KeePass\\SecretManagement.KeePass.Extension\\Tests\\Test-SecretVault.Tests.ps1",
                  "line": 668,
                  "label": "should not have a variable 'Vault_'"
                },
                {
                  "type": "test",
                  "id": "C:\\Users\\JGrote\\Projects\\SecretManagement.KeePass\\SecretManagement.KeePass\\SecretManagement.KeePass.Extension\\Tests\\Test-SecretVault.Tests.ps1;672",
                  "file": "C:\\Users\\JGrote\\Projects\\SecretManagement.KeePass\\SecretManagement.KeePass\\SecretManagement.KeePass.Extension\\Tests\\Test-SecretVault.Tests.ps1",
                  "line": 671,
                  "label": "Should not request a credential"
                },
                {
                  "type": "test",
                  "id": "C:\\Users\\JGrote\\Projects\\SecretManagement.KeePass\\SecretManagement.KeePass\\SecretManagement.KeePass.Extension\\Tests\\Test-SecretVault.Tests.ps1;676",
                  "file": "C:\\Users\\JGrote\\Projects\\SecretManagement.KeePass\\SecretManagement.KeePass\\SecretManagement.KeePass.Extension\\Tests\\Test-SecretVault.Tests.ps1",
                  "line": 675,
                  "label": "should have a variable 'Vault_'"
                }
              ]
            },
            {
              "type": "suite",
              "id": "C:\\Users\\JGrote\\Projects\\SecretManagement.KeePass\\SecretManagement.KeePass\\SecretManagement.KeePass.Extension\\Tests\\Test-SecretVault.Tests.ps1;680",
              "file": "C:\\Users\\JGrote\\Projects\\SecretManagement.KeePass\\SecretManagement.KeePass\\SecretManagement.KeePass.Extension\\Tests\\Test-SecretVault.Tests.ps1",
              "line": 679,
              "label": "Validating Keyfile with master password",
              "children": [
                {
                  "type": "test",
                  "id": "C:\\Users\\JGrote\\Projects\\SecretManagement.KeePass\\SecretManagement.KeePass\\SecretManagement.KeePass.Extension\\Tests\\Test-SecretVault.Tests.ps1;713",
                  "file": "C:\\Users\\JGrote\\Projects\\SecretManagement.KeePass\\SecretManagement.KeePass\\SecretManagement.KeePass.Extension\\Tests\\Test-SecretVault.Tests.ps1",
                  "line": 712,
                  "label": "should not have a variable 'Vault_'"
                },
                {
                  "type": "test",
                  "id": "C:\\Users\\JGrote\\Projects\\SecretManagement.KeePass\\SecretManagement.KeePass\\SecretManagement.KeePass.Extension\\Tests\\Test-SecretVault.Tests.ps1;716",
                  "file": "C:\\Users\\JGrote\\Projects\\SecretManagement.KeePass\\SecretManagement.KeePass\\SecretManagement.KeePass.Extension\\Tests\\Test-SecretVault.Tests.ps1",
                  "line": 715,
                  "label": "Should request a credential on the first pass"
                },
                {
                  "type": "test",
                  "id": "C:\\Users\\JGrote\\Projects\\SecretManagement.KeePass\\SecretManagement.KeePass\\SecretManagement.KeePass.Extension\\Tests\\Test-SecretVault.Tests.ps1;720",
                  "file": "C:\\Users\\JGrote\\Projects\\SecretManagement.KeePass\\SecretManagement.KeePass\\SecretManagement.KeePass.Extension\\Tests\\Test-SecretVault.Tests.ps1",
                  "line": 719,
                  "label": "Should not request a credential on the second pass"
                },
                {
                  "type": "test",
                  "id": "C:\\Users\\JGrote\\Projects\\SecretManagement.KeePass\\SecretManagement.KeePass\\SecretManagement.KeePass.Extension\\Tests\\Test-SecretVault.Tests.ps1;724",
                  "file": "C:\\Users\\JGrote\\Projects\\SecretManagement.KeePass\\SecretManagement.KeePass\\SecretManagement.KeePass.Extension\\Tests\\Test-SecretVault.Tests.ps1",
                  "line": 723,
                  "label": "should have a variable 'Vault_'"
                }
              ]
            }
          ]
        }
      ]
    },
    {
      "type": "suite",
      "id": "C:\\Users\\JGrote\\Projects\\SecretManagement.KeePass\\SecretManagement.KeePass\\SecretManagement.KeePass.Extension\\Tests\\Remove-Secret.Tests.ps1",
      "file": "C:\\Users\\JGrote\\Projects\\SecretManagement.KeePass\\SecretManagement.KeePass\\SecretManagement.KeePass.Extension\\Tests\\Remove-Secret.Tests.ps1",
      "label": "Remove-Secret.Tests.ps1",
      "children": [
        {
          "type": "suite",
          "id": "C:\\Users\\JGrote\\Projects\\SecretManagement.KeePass\\SecretManagement.KeePass\\SecretManagement.KeePass.Extension\\Tests\\Remove-Secret.Tests.ps1;2",
          "file": "C:\\Users\\JGrote\\Projects\\SecretManagement.KeePass\\SecretManagement.KeePass\\SecretManagement.KeePass.Extension\\Tests\\Remove-Secret.Tests.ps1",
          "line": 1,
          "label": "Remove-Secret",
          "children": [
            {
              "type": "test",
              "id": "C:\\Users\\JGrote\\Projects\\SecretManagement.KeePass\\SecretManagement.KeePass\\SecretManagement.KeePass.Extension\\Tests\\Remove-Secret.Tests.ps1;47",
              "file": "C:\\Users\\JGrote\\Projects\\SecretManagement.KeePass\\SecretManagement.KeePass\\SecretManagement.KeePass.Extension\\Tests\\Remove-Secret.Tests.ps1",
              "line": 46,
              "label": "Fails if name not specified"
            },
            {
              "type": "test",
              "id": "C:\\Users\\JGrote\\Projects\\SecretManagement.KeePass\\SecretManagement.KeePass\\SecretManagement.KeePass.Extension\\Tests\\Remove-Secret.Tests.ps1;54",
              "file": "C:\\Users\\JGrote\\Projects\\SecretManagement.KeePass\\SecretManagement.KeePass\\SecretManagement.KeePass.Extension\\Tests\\Remove-Secret.Tests.ps1",
              "line": 53,
              "label": "Removes predefined secret"
            },
            {
              "type": "test",
              "id": "C:\\Users\\JGrote\\Projects\\SecretManagement.KeePass\\SecretManagement.KeePass\\SecretManagement.KeePass.Extension\\Tests\\Remove-Secret.Tests.ps1;60",
              "file": "C:\\Users\\JGrote\\Projects\\SecretManagement.KeePass\\SecretManagement.KeePass\\SecretManagement.KeePass.Extension\\Tests\\Remove-Secret.Tests.ps1",
              "line": 59,
              "label": "Fails on removing already removed secret"
            },
            {
              "type": "test",
              "id": "C:\\Users\\JGrote\\Projects\\SecretManagement.KeePass\\SecretManagement.KeePass\\SecretManagement.KeePass.Extension\\Tests\\Remove-Secret.Tests.ps1;68",
              "file": "C:\\Users\\JGrote\\Projects\\SecretManagement.KeePass\\SecretManagement.KeePass\\SecretManagement.KeePass.Extension\\Tests\\Remove-Secret.Tests.ps1",
              "line": 67,
              "label": "Fails on duplicate secrets"
            }
          ]
        }
      ]
    },
    {
      "type": "suite",
      "id": "C:\\Users\\JGrote\\Projects\\SecretManagement.KeePass\\SecretManagement.KeePass\\SecretManagement.KeePass.Extension\\Tests\\Get-Secret.Tests.ps1",
      "file": "C:\\Users\\JGrote\\Projects\\SecretManagement.KeePass\\SecretManagement.KeePass\\SecretManagement.KeePass.Extension\\Tests\\Get-Secret.Tests.ps1",
      "label": "Get-Secret.Tests.ps1",
      "children": [
        {
          "type": "suite",
          "id": "C:\\Users\\JGrote\\Projects\\SecretManagement.KeePass\\SecretManagement.KeePass\\SecretManagement.KeePass.Extension\\Tests\\Get-Secret.Tests.ps1;1",
          "file": "C:\\Users\\JGrote\\Projects\\SecretManagement.KeePass\\SecretManagement.KeePass\\SecretManagement.KeePass.Extension\\Tests\\Get-Secret.Tests.ps1",
          "line": 0,
          "label": "Get-Secret",
          "children": [
            {
              "type": "suite",
              "id": "C:\\Users\\JGrote\\Projects\\SecretManagement.KeePass\\SecretManagement.KeePass\\SecretManagement.KeePass.Extension\\Tests\\Get-Secret.Tests.ps1;18",
              "file": "C:\\Users\\JGrote\\Projects\\SecretManagement.KeePass\\SecretManagement.KeePass\\SecretManagement.KeePass.Extension\\Tests\\Get-Secret.Tests.ps1",
              "line": 17,
              "label": "Function Parameter Validation",
              "children": [
                {
                  "type": "test",
                  "id": "C:\\Users\\JGrote\\Projects\\SecretManagement.KeePass\\SecretManagement.KeePass\\SecretManagement.KeePass.Extension\\Tests\\Get-Secret.Tests.ps1;24",
                  "file": "C:\\Users\\JGrote\\Projects\\SecretManagement.KeePass\\SecretManagement.KeePass\\SecretManagement.KeePass.Extension\\Tests\\Get-Secret.Tests.ps1",
                  "line": 23,
                  "label": "has a parameter \"<Name>\""
                },
                {
                  "type": "test",
                  "id": "C:\\Users\\JGrote\\Projects\\SecretManagement.KeePass\\SecretManagement.KeePass\\SecretManagement.KeePass.Extension\\Tests\\Get-Secret.Tests.ps1;37",
                  "file": "C:\\Users\\JGrote\\Projects\\SecretManagement.KeePass\\SecretManagement.KeePass\\SecretManagement.KeePass.Extension\\Tests\\Get-Secret.Tests.ps1",
                  "line": 36,
                  "label": "has the mandatory value of parameter \"<Name>\" set to \"<Mandatory>\""
                },
                {
                  "type": "test",
                  "id": "C:\\Users\\JGrote\\Projects\\SecretManagement.KeePass\\SecretManagement.KeePass\\SecretManagement.KeePass.Extension\\Tests\\Get-Secret.Tests.ps1;50",
                  "file": "C:\\Users\\JGrote\\Projects\\SecretManagement.KeePass\\SecretManagement.KeePass\\SecretManagement.KeePass.Extension\\Tests\\Get-Secret.Tests.ps1",
                  "line": 49,
                  "label": "has parameter <Name> of type <Type>"
                },
                {
                  "type": "test",
                  "id": "C:\\Users\\JGrote\\Projects\\SecretManagement.KeePass\\SecretManagement.KeePass\\SecretManagement.KeePass.Extension\\Tests\\Get-Secret.Tests.ps1;61",
                  "file": "C:\\Users\\JGrote\\Projects\\SecretManagement.KeePass\\SecretManagement.KeePass\\SecretManagement.KeePass.Extension\\Tests\\Get-Secret.Tests.ps1",
                  "line": 60,
                  "label": "has one parameter set"
                }
              ]
            },
            {
              "type": "suite",
              "id": "C:\\Users\\JGrote\\Projects\\SecretManagement.KeePass\\SecretManagement.KeePass\\SecretManagement.KeePass.Extension\\Tests\\Get-Secret.Tests.ps1;67",
              "file": "C:\\Users\\JGrote\\Projects\\SecretManagement.KeePass\\SecretManagement.KeePass\\SecretManagement.KeePass.Extension\\Tests\\Get-Secret.Tests.ps1",
              "line": 66,
              "label": "Get Secret information from MasterPassword protected KeePass",
              "children": [
                {
                  "type": "test",
                  "id": "C:\\Users\\JGrote\\Projects\\SecretManagement.KeePass\\SecretManagement.KeePass\\SecretManagement.KeePass.Extension\\Tests\\Get-Secret.Tests.ps1;95",
                  "file": "C:\\Users\\JGrote\\Projects\\SecretManagement.KeePass\\SecretManagement.KeePass\\SecretManagement.KeePass.Extension\\Tests\\Get-Secret.Tests.ps1",
                  "line": 94,
                  "label": "should return a <PSType> for entry <SecretName>"
                },
                {
                  "type": "test",
                  "id": "C:\\Users\\JGrote\\Projects\\SecretManagement.KeePass\\SecretManagement.KeePass\\SecretManagement.KeePass.Extension\\Tests\\Get-Secret.Tests.ps1;107",
                  "file": "C:\\Users\\JGrote\\Projects\\SecretManagement.KeePass\\SecretManagement.KeePass\\SecretManagement.KeePass.Extension\\Tests\\Get-Secret.Tests.ps1",
                  "line": 106,
                  "label": "should return <username> for <SecretName>"
                },
                {
                  "type": "test",
                  "id": "C:\\Users\\JGrote\\Projects\\SecretManagement.KeePass\\SecretManagement.KeePass\\SecretManagement.KeePass.Extension\\Tests\\Get-Secret.Tests.ps1;117",
                  "file": "C:\\Users\\JGrote\\Projects\\SecretManagement.KeePass\\SecretManagement.KeePass\\SecretManagement.KeePass.Extension\\Tests\\Get-Secret.Tests.ps1",
                  "line": 116,
                  "label": "should throw when multiple secrets are returned"
                },
                {
                  "type": "test",
                  "id": "C:\\Users\\JGrote\\Projects\\SecretManagement.KeePass\\SecretManagement.KeePass\\SecretManagement.KeePass.Extension\\Tests\\Get-Secret.Tests.ps1;124",
                  "file": "C:\\Users\\JGrote\\Projects\\SecretManagement.KeePass\\SecretManagement.KeePass\\SecretManagement.KeePass.Extension\\Tests\\Get-Secret.Tests.ps1",
                  "line": 123,
                  "label": "should return nothing when entry is not found in the KeePass DB"
                }
              ]
            },
            {
              "type": "suite",
              "id": "C:\\Users\\JGrote\\Projects\\SecretManagement.KeePass\\SecretManagement.KeePass\\SecretManagement.KeePass.Extension\\Tests\\Get-Secret.Tests.ps1;131",
              "file": "C:\\Users\\JGrote\\Projects\\SecretManagement.KeePass\\SecretManagement.KeePass\\SecretManagement.KeePass.Extension\\Tests\\Get-Secret.Tests.ps1",
              "line": 130,
              "label": "Get Secret information from KeyFile protected KeePass",
              "children": [
                {
                  "type": "test",
                  "id": "C:\\Users\\JGrote\\Projects\\SecretManagement.KeePass\\SecretManagement.KeePass\\SecretManagement.KeePass.Extension\\Tests\\Get-Secret.Tests.ps1;161",
                  "file": "C:\\Users\\JGrote\\Projects\\SecretManagement.KeePass\\SecretManagement.KeePass\\SecretManagement.KeePass.Extension\\Tests\\Get-Secret.Tests.ps1",
                  "line": 160,
                  "label": "should return a <PSType> for entry <SecretName>"
                },
                {
                  "type": "test",
                  "id": "C:\\Users\\JGrote\\Projects\\SecretManagement.KeePass\\SecretManagement.KeePass\\SecretManagement.KeePass.Extension\\Tests\\Get-Secret.Tests.ps1;174",
                  "file": "C:\\Users\\JGrote\\Projects\\SecretManagement.KeePass\\SecretManagement.KeePass\\SecretManagement.KeePass.Extension\\Tests\\Get-Secret.Tests.ps1",
                  "line": 173,
                  "label": "should return <username> for <SecretName>"
                },
                {
                  "type": "test",
                  "id": "C:\\Users\\JGrote\\Projects\\SecretManagement.KeePass\\SecretManagement.KeePass\\SecretManagement.KeePass.Extension\\Tests\\Get-Secret.Tests.ps1;184",
                  "file": "C:\\Users\\JGrote\\Projects\\SecretManagement.KeePass\\SecretManagement.KeePass\\SecretManagement.KeePass.Extension\\Tests\\Get-Secret.Tests.ps1",
                  "line": 183,
                  "label": "should throw when multiple secrets are returned"
                },
                {
                  "type": "test",
                  "id": "C:\\Users\\JGrote\\Projects\\SecretManagement.KeePass\\SecretManagement.KeePass\\SecretManagement.KeePass.Extension\\Tests\\Get-Secret.Tests.ps1;191",
                  "file": "C:\\Users\\JGrote\\Projects\\SecretManagement.KeePass\\SecretManagement.KeePass\\SecretManagement.KeePass.Extension\\Tests\\Get-Secret.Tests.ps1",
                  "line": 190,
                  "label": "should return nothing when entry is not found in the KeePass DB"
                }
              ]
            },
            {
              "type": "suite",
              "id": "C:\\Users\\JGrote\\Projects\\SecretManagement.KeePass\\SecretManagement.KeePass\\SecretManagement.KeePass.Extension\\Tests\\Get-Secret.Tests.ps1;198",
              "file": "C:\\Users\\JGrote\\Projects\\SecretManagement.KeePass\\SecretManagement.KeePass\\SecretManagement.KeePass.Extension\\Tests\\Get-Secret.Tests.ps1",
              "line": 197,
              "label": "Get Secret information from MasterPassword and KeyFile protected KeePass",
              "children": [
                {
                  "type": "test",
                  "id": "C:\\Users\\JGrote\\Projects\\SecretManagement.KeePass\\SecretManagement.KeePass\\SecretManagement.KeePass.Extension\\Tests\\Get-Secret.Tests.ps1;232",
                  "file": "C:\\Users\\JGrote\\Projects\\SecretManagement.KeePass\\SecretManagement.KeePass\\SecretManagement.KeePass.Extension\\Tests\\Get-Secret.Tests.ps1",
                  "line": 231,
                  "label": "should return a <PSType> for entry <SecretName>"
                },
                {
                  "type": "test",
                  "id": "C:\\Users\\JGrote\\Projects\\SecretManagement.KeePass\\SecretManagement.KeePass\\SecretManagement.KeePass.Extension\\Tests\\Get-Secret.Tests.ps1;244",
                  "file": "C:\\Users\\JGrote\\Projects\\SecretManagement.KeePass\\SecretManagement.KeePass\\SecretManagement.KeePass.Extension\\Tests\\Get-Secret.Tests.ps1",
                  "line": 243,
                  "label": "should return <username> for <SecretName>"
                },
                {
                  "type": "test",
                  "id": "C:\\Users\\JGrote\\Projects\\SecretManagement.KeePass\\SecretManagement.KeePass\\SecretManagement.KeePass.Extension\\Tests\\Get-Secret.Tests.ps1;254",
                  "file": "C:\\Users\\JGrote\\Projects\\SecretManagement.KeePass\\SecretManagement.KeePass\\SecretManagement.KeePass.Extension\\Tests\\Get-Secret.Tests.ps1",
                  "line": 253,
                  "label": "should throw when multiple secrets are returned"
                },
                {
                  "type": "test",
                  "id": "C:\\Users\\JGrote\\Projects\\SecretManagement.KeePass\\SecretManagement.KeePass\\SecretManagement.KeePass.Extension\\Tests\\Get-Secret.Tests.ps1;261",
                  "file": "C:\\Users\\JGrote\\Projects\\SecretManagement.KeePass\\SecretManagement.KeePass\\SecretManagement.KeePass.Extension\\Tests\\Get-Secret.Tests.ps1",
                  "line": 260,
                  "label": "should return nothing when entry is not found in the KeePass DB"
                }
              ]
            }
          ]
        }
      ]
    }
  ]
}

[2021-03-20 21:23:33.335] [DEBUG] No test files found.

Discovery should start from workspaceroot by Default

By having the extension search 'test','Tests',etc. it behaves differently than the normal Pester. For instance, if you have a Tests folder at the root and a Tests folder in a subdirectory (common for SecretManagement vault extensions), it only picks up the tests in the root Tests folder. I assumed I was doing something wrong so I spent a lot of time figuring out why this was happening until I found the actual execution code in the log.

Workaround

Set "pesterExplorer.testRootDirectory": ".", however I think this should be the default and it shouldn't try to "guess" the folders for you, it should be default discover what a standard Invoke-Pester in the root of the directory would find unless you specify otherwise with rootdirectory

Further testRootDirectory should be an array and run the invocation as a foreach across them and concatenate the results, but that's not as big of a deal.

Looking for additional maintainers

I'm having a hard time keeping up with maintaining this extension and am looking for folks to help me out.

It's clear to me that this extension has value, but I just don't have the time.

I'll continue to do work in short sprints every now and then but if I had a helping hand, it would really help bring this extension to the next level.

Here are the points that I'd like some help with that would really kick things up a notch:

  • keeping up with Pester's changes (breaking or otherwise)
  • support for -TestCases invocations
  • support for tests with template strings "Foo <name>"

Consider adding deprecation warning?

Hi Tyler,

Since you are not maintaining this module anymore, would you consider a PR for an information message that it has been deprecated and direct people to Pester Tests? It'll have a "Don't Show Again" for people who want to continue to use this version as-is, for instance for Pester 4 support.

Gracefully handle lack of Pester 5.0

image

I've just synced my settings to computer without Pester 5.0 and error popped up.

c:\Users\przemyslaw\.vscode\extensions\tylerleonhardt.vscode-pester-test-adapter-0.0.14\out\pesterTests.js:73
                        throw e;
                        ^

[SyntaxError: Unexpected end of JSON input
	at JSON.parse (<anonymous>)
	at ChildProcess.<anonymous> (c:\Users\przemyslaw\.vscode\extensions\tylerleonhardt.vscode-pester-test-adapter-0.0.14\out\pesterTests.js:69:46)
	at ChildProcess.emit (events.js:223:5)
	at maybeClose (internal/child_process.js:1021:16)
	at Process.ChildProcess._handle.onexit (internal/child_process.js:283:5)]

Duplicated test ID

Some tests results are not shown even when they are properly executed.
But the explorer says "There are multiple tests with the same ID"

PesterExplorer

Importing Pester module...

Starting discovery in 1 files.
Discovery finished in 1.7s.
[+] C:\DeveloperArea\Modules\Tests\Utility.Functions.Tests.ps1 5.65s (1.42s|2.61s)
Tests completed in 5.77s
Tests Passed: 15, Failed: 0, Skipped: 0 NotRun: 0

Invalid pesterExplorer.TestRootDirectory on opening new projet

So I've opened a new project, it asked me to scan things I pressed Always - and then I was greeted with invalid path + cannot debug (I guess I did it before PowerShell loaded)

image

I already had: "pesterExplorer.testRootDirectory": "Tests", in my config from earlier projects. When I pressed Always "pesterExplorer.autoDiscoverOnOpen": true this was added which is expected. Weirdly enough Tests path exists.

image

Along with this error it detected some other tests - not sure where from 😂

image

The error appears on reopening the project again and again

File level should maybe just be file name instead of full path

image

That file path getting cut off is not ideal... maybe the file name could be the label and the full file path can be the id.

This means that we need to change the logic of the tree traversal to check the id in addition to the label... but maybe that's fine.

Support cancelling

This will be hard since this is a separate extension. We don't expose a way for another extension to cancel another.

Feature Request: Add a "Pause" Button in Test Explorer bar

Hi,
Thanks a lot for this great extension.
I think it would be practical to add a "Pause" button that will stop discovery, stop autorun on save.
Even if there is the setting pester.autoRunOnsave , this button will allow more dynamic interaction between code change and tests Runs.

My scenario is that during the conversion of pester v4 to pester v5 , this extension run the v4 tests and I would prefer to pause theses tests during the conversion time.
Thank you for your time on this.
image

Discover Fails 'Get-ScriptAnalyzerRule' is not recognized

I have a test that uses Get-ScriptAnalyzerRule which I think is preventing the GUI from showing my tests. When I hit the run button I get the error:

System.Management.Automation.CommandNotFoundException: The term 'Get-ScriptAnalyzerRule' is not recognized as the name of a cmdlet, function, script file, or operable program.

When I manually run this test with 'Invoke-Pester' there are no issues.

The test is pretty simple, here is the snippet:

Describe 'PSScriptAnalyzer Rules' -Tag 'Meta' {
	$rules = Get-ScriptAnalyzerRule | ForEach-Object {
		@{ RuleName = $_.RuleName }
	}

	BeforeAll {
		$analysis = Invoke-ScriptAnalyzer -Path $ProjectRoot -Recurse
	}

	It "Should pass <RuleName>" -ForEach $rules {
		if (($analysis) -and ($analysis.RuleName -contains $RuleName)) {
			$analysis | Where-Object RuleName -EQ $RuleName -OutVariable failures | Out-Default
			$failures.Count | Should -Be 0
		}
	}
}

VSCode can't load this extension.

It seems to be that this extension has trouble to get loaded correctly.

[2021-05-01 20:47:15.073] [exthost] [info] ExtensionService#loadCommonJSModule file:///c:/Users/Paul-/AppData/Local/Programs/Microsoft VS Code/resources/app/extensions/github-authentication/dist/extension.js
[2021-05-01 20:47:15.083] [exthost] [error] Activating extension TylerLeonhardt.vscode-pester-test-adapter failed due to an error:
[2021-05-01 20:47:15.083] [exthost] [error] TypeError: Cannot read property 'registerExternalExtension' of undefined
	at PowerShellExtensionClient.RegisterExtension (c:\Users\Paul-\.vscode\extensions\tylerleonhardt.vscode-pester-test-adapter-0.0.23\out\powershellExtension.js:25:65)
	at new PesterTestRunner (c:\Users\Paul-\.vscode\extensions\tylerleonhardt.vscode-pester-test-adapter-0.0.23\out\pesterTests.js:26:40)
	at new PesterAdapter (c:\Users\Paul-\.vscode\extensions\tylerleonhardt.vscode-pester-test-adapter-0.0.23\out\adapter.js:20:33)
	at TestAdapterRegistrar.adapterFactory (c:\Users\Paul-\.vscode\extensions\tylerleonhardt.vscode-pester-test-adapter-0.0.23\out\main.js:45:120)
	at TestAdapterRegistrar.add (c:\Users\Paul-\.vscode\extensions\tylerleonhardt.vscode-pester-test-adapter-0.0.23\node_modules\vscode-test-adapter-util\out\registrar.js:44:30)
	at new TestAdapterRegistrar (c:\Users\Paul-\.vscode\extensions\tylerleonhardt.vscode-pester-test-adapter-0.0.23\node_modules\vscode-test-adapter-util\out\registrar.js:19:22)
	at c:\Users\Paul-\.vscode\extensions\tylerleonhardt.vscode-pester-test-adapter-0.0.23\out\main.js:45:40
	at Generator.next (<anonymous>)
	at c:\Users\Paul-\.vscode\extensions\tylerleonhardt.vscode-pester-test-adapter-0.0.23\node_modules\tslib\tslib.js:117:75
	at new Promise (<anonymous>)
	at Object.__awaiter (c:\Users\Paul-\.vscode\extensions\tylerleonhardt.vscode-pester-test-adapter-0.0.23\node_modules\tslib\tslib.js:113:16)
	at activate (c:\Users\Paul-\.vscode\extensions\tylerleonhardt.vscode-pester-test-adapter-0.0.23\out\main.js:10:20)
	at Function._callActivateOptional (c:\Users\Paul-\AppData\Local\Programs\Microsoft VS Code\resources\app\out\vs\workbench\services\extensions\node\extensionHostProcess.js:91:14382)
	at Function._callActivate (c:\Users\Paul-\AppData\Local\Programs\Microsoft VS Code\resources\app\out\vs\workbench\services\extensions\node\extensionHostProcess.js:91:14051)
	at c:\Users\Paul-\AppData\Local\Programs\Microsoft VS Code\resources\app\out\vs\workbench\services\extensions\node\extensionHostProcess.js:91:12203
	at processTicksAndRejections (internal/process/task_queues.js:97:5)
	at async Promise.all (index 0)
	at async Promise.all (index 128)
	at async Promise.all (index 1)

This is the error I see in the vscode Log (Extension Host)

It uses the description instead of the name so TestParams will not work because of duplicate names

It "Some test <ExpectedPath>" -TestCases @(@{ IsAdmin = $true; ExpectedPath = 'cert:\LocalMachine\My' },@{ IsAdmin = $false; ExpectedPath = 'cert:\CurrentUser\My' }) 
{
...
}

This result in two tests with the same name: Some Test because the description in TestExplorerResults.xml is Some tests where the name is Some test cert:\LocalMachine\My and Some test cert:\CurrentUser\My

See the xml:

<test-case description="Some test" name="Some test.To run all the test cases.Some test(&quot;cert:\LocalMachine\My&quot;,True)" time="0.234" asserts="0" success="False" result="Failure" executed="True">
...
</test-case>
<test-case description="Some test" name="Some test.To run all the test cases.Some test(&quot;cert:\CurrentUser\My&quot;,False)" time="0.1041" asserts="0" success="False" result="Failure" executed="True">
....
</test-case>

Can this be configured (For example to let me choose it uses the name field instead of the description.)

Add Pester 5.1 requirement

I was having a problem where I was only seeing the first It test for each item
image

Found I was on pester 5.0.4 and update to 5.1+ solved it, may want to add a prerequisite check.

Describe/Context/It with <var> syntax in it doesn't report state

Example:

Context "asdf <env:PATH>" {
}

This doesn't show any state of running because when we "discover" this test, it is asdf <env:PATH> but when we run this test, it is asdf /bin:/usr/local/bin:..... There's no concrete way of matching the discovery result from Pester with the test result output.

This does work for ones with "TestCases" because those are structured with a test-suite of asdf <Foo> (where Foo is a property on a test case) and test-case children of asdf ActualValueOfFoo

Feature Request: Pester Verbosity Setting

When I click the run for the tests, I prefer detailed to normal output. There should be settings to mirror these settings and ideally inherit these settings if not explicity set otherwise.

image

Warn about Pester code execution

From #16

You need to add a step (logic) to your flow that prevents auto-execution. Not all tests are great (or even non-destructive) and executing them silently is pretty bad. In the case of GPOZaurr, it basically creates/deletes some permissions in GPO but it may as well remove GPOS, create new ones. This is my test AD so not a big deal but if someone copies the code to his computer on production it could be game over. And that is just if the tests are "finished" and working correctly. The limits of PowerShell/Pester may be known but you do have control over Typescript to some degree. Maybe look for tests by default in \Tests folder and make users approve usage per project. What I am trying to say it's a really dangerous state now.

I agree. I'll say

Pester test discovery requires the code outside of Describe blocks in all *.Tests.ps1 file to be executed. Would you like to run the Pester discovery?"

"Yes/No/Always"

where the "always" option sets a configuration.

Native Testing Fails with 'Reset-TestSuiteState' not recognized

[2021-06-01 16:25:24.491] [INFO] Test Explorer found
[2021-06-01 16:25:24.491] [INFO] Creating adapter for c:\Users\JGrote\Projects\Press
[2021-06-01 16:25:24.491] [INFO] Initializing Pester adapter
[2021-06-01 16:25:24.491] [INFO] Initializing Pester test runner.
[2021-06-01 16:25:24.493] [INFO] Registering adapter for c:\Users\JGrote\Projects\Press
[2021-06-01 16:25:24.493] [INFO] Loading Pester tests
[2021-06-01 16:25:24.493] [INFO] Initialization finished
[2021-06-01 16:25:24.494] [INFO] Loading Pester tests
[2021-06-01 16:25:24.618] [DEBUG] Found 3 paths
[2021-06-01 16:25:24.618] [DEBUG] Found 3 paths
[2021-06-01 16:25:27.063] [DEBUG] Using PowerShell (x64) at: C:\Program Files\PowerShell\7\pwsh.exe
[2021-06-01 16:25:27.064] [DEBUG] 
$Path = @(
    'c:\Users\JGrote\Projects\Press\Source\Public\Update-GithubRelease.Tests.ps1'
'c:\Users\JGrote\Projects\Press\Source\Public\Get-Version.Tests.ps1'
'c:\Users\JGrote\Projects\Press\Source\Public\Build-ReleaseNotes.Tests.ps1'
)

$VerbosePreference = 'Ignore'
$WarningPreference = 'Ignore'
$DebugPreference = 'Ignore'
Import-Module Pester -MinimumVersion 5.0.0 -ErrorAction Stop
function Discover-Test
{
    [CmdletBinding()]
    param(
        [Parameter(Mandatory)]
        [String[]] $Path,
        [String[]] $ExcludePath
    )
    & (Get-Module Pester) { 
        param (
            $Path, 
            $ExcludePath,
            $SessionState)
        
        Reset-TestSuiteState
        # to avoid Describe thinking that we run in interactive mode
        $invokedViaInvokePester = $true
        $files = Find-File -Path $Path -ExcludePath $ExcludePath -Extension $PesterPreference.Run.TestExtension.Value
        $containers = foreach ($f in $files) {
            <# HACK: We check to see if there is a single Describe block in the file so that we don't accidentally execute code that shouldn't need to be executed. #>
            if (!(Select-String -Path $f -SimpleMatch 'Describe')) {
                continue
            }
            New-BlockContainerObject -File (Get-Item $f)
        }
        Find-Test -BlockContainer $containers -SessionState $SessionState } -Path $Path -ExcludePath $ExcludePath -SessionState $PSCmdlet.SessionState
}

function New-SuiteObject ($Block) { 
    [PSCustomObject]@{
        type = 'suite'
        id = $Block.ScriptBlock.File + ';' + $Block.StartLine
        file = $Block.ScriptBlock.File
        line = $Block.StartLine - 1
        label = $Block.Name
        children = [Collections.Generic.List[Object]]@()
    }
}

function New-TestObject ($Test) { 
    [PSCustomObject]@{
        type = 'test'
        id = $Test.ScriptBlock.File + ';' + $Test.StartLine
        file = $Test.ScriptBlock.File
        line = $Test.StartLine - 1
        label = $Test.Name
    }
}

function fold ($children, $Block) {
    foreach ($b in $Block.Blocks) { 
        $o = (New-SuiteObject $b)
        $children.Add($o)
        fold $o.children $b
    }

    $hashset = [System.Collections.Generic.HashSet[string]]::new()
    foreach ($t in $Block.Tests) {
        $key = "$($t.ExpandedPath):$($t.StartLine)"
        if ($hashset.Contains($key)) {
            continue
        }
        $children.Add((New-TestObject $t))
        $hashset.Add($key) | Out-Null
    }
    $hashset.Clear() | Out-Null
}

$found = Discover-Test -Path $Path

# whole suite
$suite = [PSCustomObject]@{
    Blocks = [Collections.Generic.List[Object]] $found
    Tests = [Collections.Generic.List[Object]]@()
}

$testSuiteInfo = [PSCustomObject]@{
    type = 'suite'
    id = 'root'
    label = 'Pester'
    children = [Collections.Generic.List[Object]]@()
}

foreach ($file in $found) {
    $fileSuite = [PSCustomObject]@{
        type = 'suite'
        id = $file.BlockContainer.Item.FullName
        file = $file.BlockContainer.Item.FullName
        label = $file.BlockContainer.Item.Name
        children = [Collections.Generic.List[Object]]@()
    }
    $testSuiteInfo.children.Add($fileSuite)
    fold $fileSuite.children $file
}

$testSuiteInfo | ConvertTo-Json -Depth 100

[2021-06-01 16:25:27.069] [DEBUG] Using PowerShell (x64) at: C:\Program Files\PowerShell\7\pwsh.exe
[2021-06-01 16:25:27.069] [DEBUG] 
$Path = @(
    'c:\Users\JGrote\Projects\Press\Source\Public\Build-ReleaseNotes.Tests.ps1'
'c:\Users\JGrote\Projects\Press\Source\Public\Get-Version.Tests.ps1'
'c:\Users\JGrote\Projects\Press\Source\Public\Update-GithubRelease.Tests.ps1'
)

$VerbosePreference = 'Ignore'
$WarningPreference = 'Ignore'
$DebugPreference = 'Ignore'
Import-Module Pester -MinimumVersion 5.0.0 -ErrorAction Stop
function Discover-Test
{
    [CmdletBinding()]
    param(
        [Parameter(Mandatory)]
        [String[]] $Path,
        [String[]] $ExcludePath
    )
    & (Get-Module Pester) { 
        param (
            $Path, 
            $ExcludePath,
            $SessionState)
        
        Reset-TestSuiteState
        # to avoid Describe thinking that we run in interactive mode
        $invokedViaInvokePester = $true
        $files = Find-File -Path $Path -ExcludePath $ExcludePath -Extension $PesterPreference.Run.TestExtension.Value
        $containers = foreach ($f in $files) {
            <# HACK: We check to see if there is a single Describe block in the file so that we don't accidentally execute code that shouldn't need to be executed. #>
            if (!(Select-String -Path $f -SimpleMatch 'Describe')) {
                continue
            }
            New-BlockContainerObject -File (Get-Item $f)
        }
        Find-Test -BlockContainer $containers -SessionState $SessionState } -Path $Path -ExcludePath $ExcludePath -SessionState $PSCmdlet.SessionState
}

function New-SuiteObject ($Block) { 
    [PSCustomObject]@{
        type = 'suite'
        id = $Block.ScriptBlock.File + ';' + $Block.StartLine
        file = $Block.ScriptBlock.File
        line = $Block.StartLine - 1
        label = $Block.Name
        children = [Collections.Generic.List[Object]]@()
    }
}

function New-TestObject ($Test) { 
    [PSCustomObject]@{
        type = 'test'
        id = $Test.ScriptBlock.File + ';' + $Test.StartLine
        file = $Test.ScriptBlock.File
        line = $Test.StartLine - 1
        label = $Test.Name
    }
}

function fold ($children, $Block) {
    foreach ($b in $Block.Blocks) { 
        $o = (New-SuiteObject $b)
        $children.Add($o)
        fold $o.children $b
    }

    $hashset = [System.Collections.Generic.HashSet[string]]::new()
    foreach ($t in $Block.Tests) {
        $key = "$($t.ExpandedPath):$($t.StartLine)"
        if ($hashset.Contains($key)) {
            continue
        }
        $children.Add((New-TestObject $t))
        $hashset.Add($key) | Out-Null
    }
    $hashset.Clear() | Out-Null
}

$found = Discover-Test -Path $Path

# whole suite
$suite = [PSCustomObject]@{
    Blocks = [Collections.Generic.List[Object]] $found
    Tests = [Collections.Generic.List[Object]]@()
}

$testSuiteInfo = [PSCustomObject]@{
    type = 'suite'
    id = 'root'
    label = 'Pester'
    children = [Collections.Generic.List[Object]]@()
}

foreach ($file in $found) {
    $fileSuite = [PSCustomObject]@{
        type = 'suite'
        id = $file.BlockContainer.Item.FullName
        file = $file.BlockContainer.Item.FullName
        label = $file.BlockContainer.Item.Name
        children = [Collections.Generic.List[Object]]@()
    }
    $testSuiteInfo.children.Add($fileSuite)
    fold $fileSuite.children $file
}

$testSuiteInfo | ConvertTo-Json -Depth 100

[2021-06-01 16:25:28.330] [ERROR] stderr: �[91mReset-TestSuiteState: 
�[96mLine |
�[96m  26 | �[0m         �[96mReset-TestSuiteState�[0m
�[96m     | �[91m         ~~~~~~~~~~~~~~~~~~~~

[2021-06-01 16:25:28.330] [ERROR] stderr: �[91m�[96m     | �[91mThe term 'Reset-TestSuiteState' is not recognized as a name of a cmdlet, function, script file, or executable program.
Check the spelling of the name, or if a path was included, verify that the path is correct and try again.�[0m

[2021-06-01 16:25:28.359] [ERROR] stderr: �[91mReset-TestSuiteState: 

[2021-06-01 16:25:28.359] [ERROR] stderr: �[96mLine |
�[96m  26 | �[0m         �[96mReset-TestSuiteState�[0m
�[96m     | �[91m         ~~~~~~~~~~~~~~~~~~~~
�[91m�[96m     | �[91mThe term 'Reset-TestSuiteState' is not recognized as a name of a cmdlet, function, script file, or executable program.

[2021-06-01 16:25:28.360] [ERROR] stderr: Check the spelling of the name, or if a path was included, verify that the path is correct and try again.�[0m

[2021-06-01 16:25:28.676] [DEBUG] stdout: {
  "type": "suite",
  "id": "root",
  "label": "Pester",
  "children": [
    {
      "type": "suite",
      "id": null,
      "file": null,
      "label": null,
      "children": []
    },
    {
      "type": "suite",
      "id": null,
      "file": null,
      "label": null,
      "children": []
    },
    {
      "type": "suite",
      "id": null,
      "file": null,
      "label": null,
      "children": []
    }
  ]
}

[2021-06-01 16:25:28.706] [DEBUG] child process exited with code 0
[2021-06-01 16:25:28.708] [DEBUG] stdout: {
  "type": "suite",
  "id": "root",
  "label": "Pester",
  "children": [
    {
      "type": "suite",
      "id": null,
      "file": null,
      "label": null,
      "children": []
    },
    {
      "type": "suite",
      "id": null,
      "file": null,
      "label": null,
      "children": []
    },
    {
      "type": "suite",
      "id": null,
      "file": null,
      "label": null,
      "children": []
    }
  ]
}

[2021-06-01 16:25:28.731] [DEBUG] child process exited with code 0

Support "autorun"

  • watch the configuration for any changes that may affect the results of running the tests and emit an autorun event if necessary
  • watch the workspace for any changes to the source files and emit an autorun event if necessary

We should be careful with this because the test run doesn't happen in another process...

Ensure that only one test run is active at a time

Right now you can multi-select tests and they will trigger X separate runs. That's not ideal. We should only run one since that's all the PowerShell extension can handle at a time.

Perhaps Pester could also support specifying multiple It's or Describe's to run in a file. (cc @nohwnd)

All in all, I think this scenario is small and for now we should just say "it's not supported".

Honor PowerShell extension settings

We need to use the powershell.powerShellDefaultVersion setting and powershell.powerShellAdditionalExePaths setting in the PowerShell extension to make sure that our "discover tests" code uses the correct PowerShell exe.

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.