mirror of
https://github.com/headroomlabs-ai/headroom.git
synced 2026-08-27 14:17:10 -04:00
Centralize Docker / CI e2e test helpers so per-command suites can be declarative and future commands (install, wrap, ...) can reuse the same shim/PATH/assertion primitives without duplicating infrastructure. The harness provides: * Case dataclass describing one test as argv + shims + expected exit / stdout / stderr / files / custom callbacks * make_shim() factory producing cross-platform executable shims (.sh on POSIX, .cmd on Windows) with noop / fail / record-args behaviors * with_clean_path() context manager that isolates PATH to a minimal known-good value plus any extras supplied by the case * agent_settings_path() locator mirroring headroom.cli.init so tests can assert the right file was written without touching private init state * run_cases() for independent cases and run_case_sequence() for cases that must share scratch state (e.g. manifest-merge scenarios) Shell / PowerShell shim-creation scripts are also shipped for CI steps that need to drop a shim without spinning up Python first. No behavior change in this commit - pure infrastructure. The init suite and new subcommand suites consume the harness in follow-up commits. Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
24 lines
603 B
PowerShell
24 lines
603 B
PowerShell
# Create a noop executable shim at $Dir\$Name.cmd for use in PATH during
|
|
# native (non-Docker) e2e tests on Windows. Mirrors e2e/_lib/shims.py
|
|
# make_shim(noop).
|
|
#
|
|
# Usage: make_shim.ps1 -Name <name> -Dir <dir>
|
|
|
|
param(
|
|
[Parameter(Mandatory = $true)][string]$Name,
|
|
[Parameter(Mandatory = $true)][string]$Dir
|
|
)
|
|
|
|
$ErrorActionPreference = "Stop"
|
|
|
|
if (-not (Test-Path $Dir)) {
|
|
New-Item -ItemType Directory -Path $Dir -Force | Out-Null
|
|
}
|
|
|
|
$path = Join-Path $Dir "$Name.cmd"
|
|
$content = @"
|
|
@echo off
|
|
exit /b 0
|
|
"@
|
|
Set-Content -Path $path -Value $content -Encoding ASCII -NoNewline
|
|
Write-Output $path
|