microsoft/hve-core

Public

mirrored fromhttps://github.com/microsoft/hve-coreAvailable

CodeCommitsIssuesPull requestsActionsInsightsSecurity
docs/621-ai-artifacts

Branches

Tags

  • No tags available.
0Branches0Tags
Go to file
Add file
Code

Clone

HTTPS

Download ZIP

scripts/tests/pester.config.ps1

72lines · modecode

1#!/usr/bin/env pwsh
2# Copyright (c) Microsoft Corporation.
3# SPDX-License-Identifier: MIT
4#
5# pester.config.ps1
6#
7# Purpose: Pester 5.x configuration for HVE-Core PowerShell testing
8# Author: HVE Core Team
9#
10
11[CmdletBinding()]
12param(
13 [Parameter()]
14 [switch]$CI,
15
16 [Parameter()]
17 [switch]$CodeCoverage,
18
19 [Parameter()]
20 [string[]]$TestPath = @("$PSScriptRoot")
21)
22
23$configuration = New-PesterConfiguration
24
25# Run configuration
26$configuration.Run.Path = @($TestPath)
27$configuration.Run.Exit = $CI.IsPresent
28$configuration.Run.PassThru = $true
29$configuration.Run.TestExtension = '.Tests.ps1'
30
31# Filter configuration
32$configuration.Filter.ExcludeTag = @('Integration', 'Slow')
33
34# Output configuration
35$configuration.Output.Verbosity = if ($CI.IsPresent) { 'Normal' } else { 'Detailed' }
36$configuration.Output.CIFormat = if ($CI.IsPresent) { 'GithubActions' } else { 'Auto' }
37$configuration.Output.CILogLevel = 'Error'
38
39# Test result configuration (NUnit XML for CI artifact upload)
40$configuration.TestResult.Enabled = $CI.IsPresent
41$configuration.TestResult.OutputFormat = 'NUnitXml'
42$configuration.TestResult.OutputPath = Join-Path $PSScriptRoot '../../logs/pester-results.xml'
43$configuration.TestResult.TestSuiteName = 'HVE-Core-PowerShell-Tests'
44
45# Code coverage configuration
46if ($CodeCoverage.IsPresent) {
47 $configuration.CodeCoverage.Enabled = $true
48 $configuration.CodeCoverage.OutputFormat = 'JaCoCo'
49 $configuration.CodeCoverage.OutputPath = Join-Path $PSScriptRoot '../../logs/coverage.xml'
50
51 # Resolve coverage paths explicitly - Join-Path with wildcards returns literal paths without file system expansion in Pester configuration
52 $scriptRoot = Split-Path $PSScriptRoot -Parent
53 $coverageDirs = @('linting', 'security', 'dev-tools', 'lib', 'extension', 'plugins')
54
55 $coveragePaths = $coverageDirs | ForEach-Object {
56 Get-ChildItem -Path (Join-Path $scriptRoot $_) -Include '*.ps1', '*.psm1' -Recurse -File -ErrorAction SilentlyContinue
57 } | Where-Object {
58 $_.FullName -notmatch '\.Tests\.ps1$'
59 } | Select-Object -ExpandProperty FullName
60
61 if ($coveragePaths.Count -gt 0) {
62 $configuration.CodeCoverage.Path = $coveragePaths
63 }
64
65 $configuration.CodeCoverage.ExcludeTests = $true
66 $configuration.CodeCoverage.CoveragePercentTarget = 80
67}
68
69# Should configuration
70$configuration.Should.ErrorAction = 'Stop'
71
72return $configuration
73