Skip to content

[Issue]: Add Pester test infrastructure (config, directories, shared mocks) #193

@WilliamBerryiii

Description

@WilliamBerryiii

Summary

Create the foundational Pester test infrastructure including directory structure, configuration file, and shared mock utilities. This enables all subsequent test file PRs.

Parent Issue: #190

Requirements

  • Create scripts/tests/ directory structure with subdirectories for each script category
  • Add Pester 5.x configuration file (scripts/tests/pester.config.ps1)
  • Create shared Git CLI mock module (scripts/tests/Mocks/GitMocks.psm1)
  • Add test fixtures directory with .gitkeep placeholders
  • Update .gitignore for test output files (if needed)

Implementation Details

Directory Structure

scripts/tests/
├── pester.config.ps1          # Pester 5.x configuration
├── Mocks/
│   └── GitMocks.psm1          # Git CLI and GitHub env mocking
├── Fixtures/
│   └── .gitkeep               # Test fixture files
├── linting/
│   └── .gitkeep
├── security/
│   └── .gitkeep
├── dev-tools/
│   └── .gitkeep
└── extension/
    └── .gitkeep

Pester Configuration

Key configuration requirements:

  • Run.Exit = $true for CI integration
  • TestResult.OutputFormat = 'NUnitXml' for GitHub annotations
  • TestResult.OutputPathlogs/pester-results.xml
  • Output.CIFormat = 'GithubActions' for PR annotations
  • CodeCoverage.Enabled = $false (enabled in stretch goal)

Git Mock Module

The mock module should provide:

  • New-GitMockEnvironment - Set GITHUB_BASE_REF, GITHUB_HEAD_REF, GITHUB_ACTIONS
  • Remove-GitMockEnvironment - Clean up environment variables
  • New-MockGitDiffOutput - Generate mock git diff output

Acceptance Criteria

  • scripts/tests/pester.config.ps1 exists and returns valid PesterConfiguration
  • scripts/tests/Mocks/GitMocks.psm1 exports mocking functions
  • Subdirectories created for linting, security, dev-tools, extension
  • Configuration can be loaded by Pester: Invoke-Pester -Configuration (. scripts/tests/pester.config.ps1)
  • All new files follow PSScriptAnalyzer rules

Dependencies

  • None (first PR in sequence)

Estimated Effort

1-2 hours


Additional Context

Code Examples

See research document for complete implementation examples:

  • Pester configuration patterns from Pester 5.x documentation
  • Git mock module examples

Related Issues

Metadata

Metadata

Labels

configurationConfiguration files and settingsenhancementNew feature or requestfoundationCore infrastructure and foundational componentsscriptsPowerShell, Bash, or Python scriptstoolingDeveloper tooling and utilities

Type

No type

Projects

No projects

Milestone

No milestone

Relationships

None yet

Development

No branches or pull requests

Issue actions