diff --git a/backend/app/bot.py b/backend/app/bot.py index 9170f2f..f6ea9c3 100644 --- a/backend/app/bot.py +++ b/backend/app/bot.py @@ -27,7 +27,7 @@ import json import logging from dataclasses import dataclass -from . import db, notify +from . import db, entry as entry_mod, notify from .gitea import Gitea, GiteaError log = logging.getLogger(__name__) @@ -1085,8 +1085,6 @@ class Bot: frontmatter on main. Stamps the commit with the ยง6.5 On-behalf-of trailer and writes an actions-log row, mirroring the graduation stamp's bot-write shape.""" - from . import entry as entry_mod - path = f"rfcs/{slug}.md" result = await self._gitea.read_file(org, meta_repo, path, ref="main") if result is None: @@ -1097,7 +1095,7 @@ class Bot: e.reviewed_at = reviewed_at e.reviewed_by = reviewed_by commit_message = _stamp_single(f"Mark {slug} reviewed", actor) - result2 = await self._gitea.update_file( + result = await self._gitea.update_file( org, meta_repo, path, content=entry_mod.serialize(e), sha=sha, @@ -1107,8 +1105,8 @@ class Bot: author_email=actor.email or f"{actor.gitea_login}@users.noreply", ) commit_sha = ( - result2.get("commit", {}).get("sha") - or result2.get("content", {}).get("sha") + result.get("commit", {}).get("sha") + or result.get("content", {}).get("sha") or "" ) _log( diff --git a/backend/tests/test_mark_reviewed.py b/backend/tests/test_mark_reviewed.py index 7894ddc..6db5c5c 100644 --- a/backend/tests/test_mark_reviewed.py +++ b/backend/tests/test_mark_reviewed.py @@ -42,10 +42,17 @@ def test_mark_reviewed_clears_flag(app_with_fake_gitea): r = client.post("/api/projects/default/rfcs/feat/mark-reviewed") assert r.status_code == 200 row = db.conn().execute( - "SELECT unreviewed, reviewed_by FROM cached_rfcs WHERE slug='feat'" + "SELECT unreviewed, reviewed_at, reviewed_by FROM cached_rfcs WHERE slug='feat'" ).fetchone() assert row["unreviewed"] == 0 assert row["reviewed_by"] == "ben" + assert row["reviewed_at"] # provenance stamped + # git-side: the entry file on main was rewritten with the cleared flag. + from app import entry as entry_mod + written = fake.files[("wiggleverse", "meta", "main", "rfcs/feat.md")]["content"] + e = entry_mod.parse(written) + assert e.unreviewed is False + assert e.reviewed_by == "ben" def test_mark_reviewed_forbidden_for_non_superuser(app_with_fake_gitea):