import sys import unittest from pathlib import Path sys.path.insert(0, str(Path(__file__).resolve().parent.parent)) from wflib import tasks as T def ready(done): doc = T.parse(f"# T\n\n## Pending\n\n- **t-x** [P2] (<1h): X.\n Done: {done}\n") return doc.sections[0].items[0].runner_ready if hasattr(doc, "sections") else None class HumanDoneTest(unittest.TestCase): def test_owner_bound_subject(self): self.assertTrue(ready("owner-bound task with Done not counted")) def test_owner_actions(self): self.assertFalse(ready("owner confirms X")) self.assertFalse(ready("owner approves X")) self.assertFalse(ready("report to owner")) self.assertFalse(ready("confirm it works")) def test_word_alone_is_fine(self): self.assertTrue(ready("owner-facing docs updated; owner-private names scrubbed")) self.assertTrue(ready("tests confirm the parser handles X")) self.assertTrue(ready("the owner file is read")) def test_more_actions(self): self.assertFalse(ready("owner says it is fine")) self.assertFalse(ready("Owner tests it")) self.assertFalse(ready("confirm with the owner")) def test_match_exposed(self): doc = T.parse("# T\n\n## Pending\n\n- **t-x** [P2] (<1h): X.\n Done: owner approves X\n") self.assertEqual(doc.sections[0].items[0].human_done_match, "owner approves") if __name__ == "__main__": unittest.main()