63 lines
2.6 KiB
Python
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()
|