Files
cleveragents-core/features/steps/review_playbook_steps.py
T
brent.edwards 7bf8056003
CI / benchmark-publish (pull_request) Has been skipped
CI / lint (pull_request) Successful in 20s
CI / build (pull_request) Successful in 25s
CI / quality (pull_request) Successful in 29s
CI / typecheck (pull_request) Successful in 32s
CI / security (pull_request) Successful in 1m2s
CI / integration_tests (pull_request) Failing after 2m49s
CI / benchmark-regression (pull_request) Failing after 2m33s
CI / unit_tests (pull_request) Failing after 7m54s
CI / docker (pull_request) Has been skipped
CI / coverage (pull_request) Failing after 16m44s
style: fix formatting
2026-02-20 20:38:53 +00:00

66 lines
2.5 KiB
Python

"""Step definitions for review playbook validation feature."""
from __future__ import annotations
from pathlib import Path
from behave import given, then, when
from behave.runner import Context
@given('the review playbook file at "{path}"')
def step_given_review_playbook_file(context: Context, path: str) -> None:
"""Store the review playbook file path."""
context.review_playbook_path = Path(path)
@then("the review playbook file should exist")
def step_then_review_playbook_exists(context: Context) -> None:
"""Verify the review playbook file exists."""
playbook_path: Path = context.review_playbook_path
if not playbook_path.exists():
raise AssertionError(f"Review playbook file not found at {playbook_path}")
@when("I read the review playbook content")
def step_when_read_review_playbook(context: Context) -> None:
"""Read the review playbook file content."""
playbook_path: Path = context.review_playbook_path
if not playbook_path.exists():
raise FileNotFoundError(f"Review playbook file not found at {playbook_path}")
context.review_playbook_content = playbook_path.read_text(encoding="utf-8")
@then('the playbook should contain the section "{section}"')
def step_then_playbook_contains_section(context: Context, section: str) -> None:
"""Verify the playbook contains a specific section heading."""
content: str = context.review_playbook_content
# Section headings in markdown use ## or ### prefix
if section not in content:
raise AssertionError(
f"Section '{section}' not found in review playbook. "
f"File length: {len(content)} characters"
)
@then('the playbook should contain the text "{text}"')
def step_then_playbook_contains_text(context: Context, text: str) -> None:
"""Verify the playbook contains specific text."""
content: str = context.review_playbook_content
if text not in content:
raise AssertionError(f"Text '{text}' not found in review playbook")
@then("the playbook should reference these nox sessions:")
def step_then_playbook_references_nox_sessions(context: Context) -> None:
"""Verify the playbook references all required nox sessions."""
content: str = context.review_playbook_content
for row in context.table:
session_name: str = row["session"]
nox_reference = f"nox -s {session_name}"
if nox_reference not in content:
raise AssertionError(
f"Nox session '{session_name}' (as '{nox_reference}') "
f"not found in review playbook"
)