mirror of
https://github.com/NousResearch/hermes-agent.git
synced 2026-09-28 06:45:17 +08:00
test(install): drop the dead bzip2-less tar stub from the Get-PinnedGit E2E
Get-PinnedGit no longer invokes tar at all (no $inboxTar seam exists since the PortableGit pin), so the C# stub tar.exe and the Invoke-Native override that bound it were never reached: the test compiled a stub for nothing and its docstring described a mechanism the installer does not have. Keep the real-download Get-PinnedGit run under a bzip2-less PATH and the git.exe + bash.exe contract checks; that is what the test proves.
This commit is contained in:
@@ -1,19 +1,14 @@
|
||||
"""Pinned git staging must not need a bzip2-capable tar (#122512).
|
||||
"""Pinned git staging must not need a bzip2-capable tar (#122512, #122774).
|
||||
|
||||
The reported Windows 10 box has no bzip2.exe on PATH, and its System32
|
||||
tar.exe cannot run the bzip2 filter
|
||||
("tar.exe: Error opening archive: Can't initialize filter; unable to run
|
||||
program \"bzip2 -d\""), so extracting the pinned .tar.bz2 fails and
|
||||
bootstrap dies at stage=prerequisites with "failed to extract pinned git
|
||||
archive".
|
||||
|
||||
The driver below reproduces that machine deterministically: PATH carries
|
||||
no bzip2, and the installer's own Invoke-Native seam resolves $inboxTar
|
||||
to a stub System32 tar.exe that only prints the reported error. Then it
|
||||
runs the real Get-PinnedGit against the real pinned archive and demands
|
||||
a working git.exe plus the bundled bash contract pm/shell.py relies on.
|
||||
Stock Windows 10 ships a System32 tar.exe without a bzip2 filter, so the
|
||||
old .tar.bz2 pin died at stage=prerequisites ("tar.exe: Error opening
|
||||
archive: Can't initialize filter; unable to run program \"bzip2 -d\"").
|
||||
Get-PinnedGit now stages the PortableGit self-extractor, which needs
|
||||
neither tar nor bzip2. The driver below runs the real Get-PinnedGit
|
||||
against the real pinned archive with a PATH that carries no bzip2 (or
|
||||
anything else to fall back on) and demands a working git.exe plus the
|
||||
bundled bash contract pm/shell.py relies on.
|
||||
"""
|
||||
import os
|
||||
import subprocess
|
||||
import textwrap
|
||||
from pathlib import Path
|
||||
@@ -22,34 +17,10 @@ import pytest
|
||||
|
||||
ROOT = Path(__file__).resolve().parents[3]
|
||||
INSTALLER = ROOT / "scripts" / "install.ps1"
|
||||
CSC = (
|
||||
Path(os.environ.get("SystemRoot", r"C:\Windows"))
|
||||
/ "Microsoft.NET" / "Framework64" / "v4.0.30319" / "csc.exe"
|
||||
)
|
||||
|
||||
|
||||
@pytest.mark.platforms("windows")
|
||||
def test_pinned_git_extracts_without_a_bzip2_capable_tar(tmp_path):
|
||||
assert CSC.is_file(), f"missing C# compiler: {CSC}"
|
||||
|
||||
# The reporter's System32 tar.exe: it exists, but has no bzip2 filter.
|
||||
stub_src = tmp_path / "bzip2less_tar.cs"
|
||||
stub_src.write_text(
|
||||
"using System; class Stub { static int Main(string[] a) { "
|
||||
'System.Console.Error.WriteLine("tar.exe: Error opening archive: '
|
||||
"Can't initialize filter; unable to run program \\\"bzip2 -d\\\"\"); "
|
||||
"return 1; } }",
|
||||
encoding="ascii",
|
||||
)
|
||||
fake_root = tmp_path / "sysroot"
|
||||
stub_tar = fake_root / "System32" / "tar.exe"
|
||||
stub_tar.parent.mkdir(parents=True)
|
||||
compiled = subprocess.run(
|
||||
[str(CSC), "/nologo", f"/out:{stub_tar}", str(stub_src)],
|
||||
capture_output=True, text=True, timeout=120,
|
||||
)
|
||||
assert compiled.returncode == 0, compiled.stdout + compiled.stderr
|
||||
|
||||
driver = tmp_path / "driver.ps1"
|
||||
driver.write_text(
|
||||
textwrap.dedent(f"""
|
||||
@@ -57,13 +28,6 @@ def test_pinned_git_extracts_without_a_bzip2_capable_tar(tmp_path):
|
||||
$env:HERMES_RUNTIME_DIR = '{tmp_path / "tools"}'
|
||||
# This machine has no bzip2 (and nothing else to fall back on).
|
||||
$env:PATH = "$env:SystemRoot\\System32;$env:SystemRoot"
|
||||
function Invoke-Native {{
|
||||
param([scriptblock]$Command)
|
||||
# Dynamic scope: bind the installer's $inboxTar to the
|
||||
# bzip2-less stub before running its extraction command.
|
||||
$inboxTar = '{stub_tar}'
|
||||
& $Command
|
||||
}}
|
||||
$git = Get-PinnedGit
|
||||
if (-not $git) {{ exit 9 }}
|
||||
& $git --version 2>$null | Out-Null
|
||||
|
||||
Reference in New Issue
Block a user