diff options
Diffstat (limited to 'tests/test_split.py')
| -rw-r--r-- | tests/test_split.py | 36 |
1 files changed, 36 insertions, 0 deletions
diff --git a/tests/test_split.py b/tests/test_split.py index d382a9f..4182ce4 100644 --- a/tests/test_split.py +++ b/tests/test_split.py @@ -195,3 +195,39 @@ class FinishSplitTest(SplitCli): code, out, err = self.wf("done", "t-three", "-m", "ok", project=False, cwd=self.wt, env=IDENT) self.assertEqual(code, 0, out + err) self.assertIn("commit TASKS.md tasks/archive.md, push home", out) + + +class PushSplitTest(SplitCli): + toml = SplitCli.toml + 'push = ["echo pushing", "echo boom; exit 3"]\n' + + def setUp(self): + super().setUp() + self.wt = self.add_wt() + (self.wt / "code.txt").write_text("x\n") + + def test_push_failure_keeps_merge_marks_and_reports(self): + code, out, err = self.wf("finish", "t-three", "-m", "ok", "--commit", "impl", "code.txt", + project=False, cwd=self.wt, env=IDENT) + self.assertEqual(code, 0, out + err) + self.assertIn("not pushed (exit 3): echo boom; exit 3\n", out) + self.assertIn(" boom\n", out) + self.assertIn("rerun: wf push", out) + self.assertRegex(out, r"report: commit [0-9a-f]+ books [0-9a-f]+ push-failed 3\n$") + self.assertEqual(self.log(self.code), "impl\ninit\n") + self.assertTrue((self.root / ".wf" / "push-failed").is_file()) + code, out, err = self.wf("next", "--brief", project=False, cwd=self.root) + self.assertIn("push failed", out) + + def test_wf_push_success_clears_marker(self): + self.wf("finish", "t-three", "-m", "ok", "--commit", "impl", "code.txt", project=False, cwd=self.wt, env=IDENT) + (self.root / "workflow.toml").write_text(SplitCli.toml + 'push = ["true"]\n') + code, out, err = self.wf("push", project=False, cwd=self.root) + self.assertEqual(code, 0, out + err) + self.assertFalse((self.root / ".wf" / "push-failed").exists()) + + def test_push_runs_in_private_root(self): + (self.root / "workflow.toml").write_text(SplitCli.toml + 'push = ["pwd > pushed-from.txt"]\n') + code, out, err = self.wf("finish", "t-three", "-m", "ok", "--commit", "impl", "code.txt", + project=False, cwd=self.wt, env=IDENT) + self.assertEqual(code, 0, out + err) + self.assertEqual((self.root / "pushed-from.txt").read_text().strip(), str(self.root)) |
