Skip to content
Merged
Show file tree
Hide file tree
Changes from 1 commit
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
6 changes: 5 additions & 1 deletion .github/scripts/issue_format.py
Original file line number Diff line number Diff line change
Expand Up @@ -103,7 +103,11 @@ def _headings(body: str) -> list[tuple[str, int, int]]:

def _find(body: str, aliases: tuple[str, ...]) -> int | None:
for text, idx, _ in _headings(body):
if any(text == alias or text.startswith(f"{alias} (") for alias in aliases):
if any(
text == alias
or text.startswith((f"{alias} (", f"{alias} -", f"{alias} /"))
for alias in aliases
):
return idx
return None

Expand Down
3 changes: 2 additions & 1 deletion .github/workflows/agents-issue-format-guard.yml
Original file line number Diff line number Diff line change
Expand Up @@ -61,7 +61,7 @@ jobs:
id: validate
if: steps.issue.outputs.exempt != 'true'
run: |
set +e
set -euo pipefail
report_file="$(mktemp)"
error_file="$(mktemp)"
trap 'rm -f "$report_file" "$error_file"' EXIT
Expand All @@ -70,6 +70,7 @@ jobs:
echo "rc=skip" >> "$GITHUB_OUTPUT"
exit 0
fi
set +e
python3 .github/scripts/issue_format.py body.md > "$report_file" 2> "$error_file"
rc=$?
set -e
Expand Down
6 changes: 5 additions & 1 deletion templates/consumer-repo/.github/scripts/issue_format.py
Original file line number Diff line number Diff line change
Expand Up @@ -103,7 +103,11 @@ def _headings(body: str) -> list[tuple[str, int, int]]:

def _find(body: str, aliases: tuple[str, ...]) -> int | None:
for text, idx, _ in _headings(body):
if any(text == alias or text.startswith(f"{alias} (") for alias in aliases):
if any(
text == alias
or text.startswith((f"{alias} (", f"{alias} -", f"{alias} /"))
for alias in aliases
):
return idx
return None

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -61,7 +61,7 @@ jobs:
id: validate
if: steps.issue.outputs.exempt != 'true'
run: |
set +e
set -euo pipefail
report_file="$(mktemp)"
error_file="$(mktemp)"
trap 'rm -f "$report_file" "$error_file"' EXIT
Expand All @@ -70,6 +70,7 @@ jobs:
echo "rc=skip" >> "$GITHUB_OUTPUT"
exit 0
fi
set +e
python3 .github/scripts/issue_format.py body.md > "$report_file" 2> "$error_file"
rc=$?
set -e
Expand Down
11 changes: 11 additions & 0 deletions tests/scripts/test_issue_format.py
Original file line number Diff line number Diff line change
Expand Up @@ -51,6 +51,17 @@ def test_heading_with_trailing_qualifier_matches_required_section() -> None:
assert report.ok


@pytest.mark.parametrize("separator", ["-", "/"])
def test_heading_with_spaced_trailing_qualifier_matches_required_section(separator: str) -> None:
validator = _validator()
report = validator.validate(
VALID_CONTEXT
+ f"## Tasks {separator} in order\n- [ ] Implement it\n\n"
+ f"## Acceptance Criteria {separator} all must hold\n- pytest tests/test_x.py passes\n"
)
assert report.ok


Comment thread
stranske marked this conversation as resolved.
Resolved
def test_checkbox_and_subjective_errors_are_non_conforming() -> None:
validator = _validator()
report = validator.validate(
Expand Down
Loading