aboutsummaryrefslogtreecommitdiffziptar.gz
path: root/tests
diff options
context:
space:
mode:
authorgodosa <godosa@godosa.eu>2026-10-07 09:31:12 +0200
committergodosa <godosa@godosa.eu>2026-10-07 09:31:12 +0200
commit4743282cde2cd3d6ec767e93564b2121c6d643e4 (patch)
treedc7d8af1a52c75e47dc5ea4c6808607c336a5110 /tests
parentecf39ec27307f36d9458a22a332c8848bffe79a5 (diff)
downloadworkflow-4743282cde2cd3d6ec767e93564b2121c6d643e4.tar.gz
workflow-4743282cde2cd3d6ec767e93564b2121c6d643e4.zip
split projects 4/6: workflow.toml push, wf push, .wf/push-failed marker
Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01JEAjUkQRrCYX5MZhWxdtj2
Diffstat (limited to 'tests')
-rw-r--r--tests/test_split.py36
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))