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:
Jesse Vincent
2026-05-06 12:19:39 -07:00
parent 3c046f579e
commit b3817bba4f
2 changed files with 39 additions and 0 deletions

View File

@@ -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."""

View File

@@ -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"