Explorar o código

evals: default SUPERPOWERS_ROOT to parent of evals/ if unset

Adds _set_superpowers_root_default() to drill/cli.py, called at
module import after load_dotenv(). PROJECT_ROOT resolves to evals/
post-lift; its parent is the superpowers repo root, which is the
correct value for SUPERPOWERS_ROOT.

Existing env values are respected as overrides via os.environ.setdefault.

Tests:
- helper sets default when var is unset
- helper does not override when var is already set
Jesse Vincent hai 4 meses
pai
achega
be0357f98a
Modificáronse 2 ficheiros con 39 adicións e 0 borrados
  1. 17 0
      evals/drill/cli.py
  2. 22 0
      evals/tests/test_cli.py

+ 17 - 0
evals/drill/cli.py

@@ -2,6 +2,7 @@
 
 from __future__ import annotations
 
+import os
 import secrets
 from pathlib import Path
 
@@ -13,6 +14,22 @@ PROJECT_ROOT: Path = Path(__file__).parent.parent
 load_dotenv(PROJECT_ROOT / ".env")
 
 
+def _set_superpowers_root_default() -> None:
+    """Default SUPERPOWERS_ROOT to the parent of evals/ if not already set.
+
+    Drill historically required contributors to export SUPERPOWERS_ROOT
+    pointing at the superpowers checkout. After lifting drill into
+    superpowers/evals/, the parent of PROJECT_ROOT is always the
+    superpowers root, so we can supply this default automatically.
+
+    Existing SUPERPOWERS_ROOT environment values are respected as overrides.
+    """
+    os.environ.setdefault("SUPERPOWERS_ROOT", str(PROJECT_ROOT.parent))
+
+
+_set_superpowers_root_default()
+
+
 @click.group()
 def main() -> None:
     """Drill: Superpowers skill compliance benchmark."""

+ 22 - 0
evals/tests/test_cli.py

@@ -59,3 +59,25 @@ class TestCompareCommand:
         runner = CliRunner()
         result = runner.invoke(main, ["compare", "nonexistent", "--sweep", "abc123"])
         assert result.exit_code != 0  # No results dir, but flag is parsed
+
+
+def test_set_superpowers_root_default_when_unset(monkeypatch, tmp_path):
+    """When SUPERPOWERS_ROOT is unset, helper sets it to PROJECT_ROOT.parent."""
+    monkeypatch.delenv("SUPERPOWERS_ROOT", raising=False)
+    from drill.cli import _set_superpowers_root_default, PROJECT_ROOT
+
+    _set_superpowers_root_default()
+
+    import os
+    assert os.environ["SUPERPOWERS_ROOT"] == str(PROJECT_ROOT.parent)
+
+
+def test_set_superpowers_root_default_respects_existing(monkeypatch):
+    """When SUPERPOWERS_ROOT is already set, helper does not override."""
+    monkeypatch.setenv("SUPERPOWERS_ROOT", "/custom/path")
+    from drill.cli import _set_superpowers_root_default
+
+    _set_superpowers_root_default()
+
+    import os
+    assert os.environ["SUPERPOWERS_ROOT"] == "/custom/path"