mirror of
https://github.com/obra/superpowers.git
synced 2026-05-09 10:39:06 +08:00
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
This commit is contained in:
@@ -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."""
|
||||
|
||||
@@ -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"
|
||||
|
||||
Reference in New Issue
Block a user