Files
claude-code 5e91298b44
werkator build succeeded after 00:28
werkator/werkrevisor-statistics build succeeded after 00:55
werkrevisor 0.31.6: hints on PR documents are line comments again (#72)
Co-authored-by: claude-code <claude-code@javagil.de>
2026-10-10 12:33:39 +02:00

63 lines
2.6 KiB
Python

import unittest
from tests.fakes import FakeGitea, FakeModel, config, diff_for, gitea_file, review_data
from tests.test_flow import run
from tests.test_hints_hold_merge import AUTOMERGE
from tests.test_line_comments import APP
from werkrevisor.verdict import Verdict
DOC = "docs/guide.md"
PR_DOC = "docs/prs/2026-10-10-PR#1-change.md"
def hint_on(path, **review):
data = review_data(issues=[path], header="[low] Unclear sentence")
for issue in data["review"]["key_issues_to_review"]:
issue.update(start_line=1, end_line=1)
gitea = FakeGitea(files=[gitea_file(path)], diff=diff_for(path, added=["A sentence."]))
outcome, _ = run(gitea, FakeModel(data=data, prompt_files=[path]), cfg=config(gate=AUTOMERGE, review=review))
return outcome, gitea
class DocHintsTest(unittest.TestCase):
def test_a_hint_on_documentation_is_no_line_comment(self):
"""Scenario#66.01, Scenario#72.02"""
outcome, gitea = hint_on(DOC)
self.assertIs(outcome.result.verdict, Verdict.GREEN)
self.assertEqual([r[0] for r in gitea.created_reviews], ["APPROVED"])
self.assertFalse(any(gitea.review_comments))
self.assertIn(f"`{DOC}:1`", gitea.created_comments[-1])
self.assertIn("Unclear sentence", gitea.created_comments[-1])
self.assertNotIn("as a line comment", gitea.created_comments[-1])
self.assertEqual(len(gitea.scheduled_merges), 1)
def test_a_hint_on_a_pr_document_is_a_line_comment(self):
"""Scenario#72.01"""
outcome, gitea = hint_on(PR_DOC)
self.assertIs(outcome.result.verdict, Verdict.GREEN)
[comment] = gitea.review_comments[0]
self.assertEqual(comment["path"], PR_DOC)
self.assertEqual(gitea.scheduled_merges, [])
self.assertIn("merge waits for 1 open hint(s)", outcome.result.gate_note)
def test_a_hint_on_code_stays_a_line_comment(self):
"""Scenario#66.02"""
outcome, gitea = hint_on(APP)
self.assertIs(outcome.result.verdict, Verdict.GREEN)
[comment] = gitea.review_comments[0]
self.assertEqual(comment["path"], APP)
self.assertEqual(gitea.scheduled_merges, [])
self.assertIn("merge waits for 1 open hint(s)", outcome.result.gate_note)
def test_doc_hint_line_comments_restores_the_line_comment(self):
"""Scenario#66.03"""
outcome, gitea = hint_on(DOC, doc_hint_line_comments=True)
[comment] = gitea.review_comments[0]
self.assertEqual(comment["path"], DOC)
self.assertEqual(gitea.scheduled_merges, [])
self.assertIn("merge waits for 1 open hint(s)", outcome.result.gate_note)
if __name__ == "__main__":
unittest.main()