Test modification of a task by an on-add hook (test case for #3416) (#3443)

* Add test case to cover https://github.com/GothenburgBitFactory/taskwarrior/issues/3416

* Add (builtin) on-add-modify test hook and use it

* TDB2::add() move hook invocation before save (#3416)
This commit is contained in:
Maarten Aertsen 2024-05-15 03:47:43 +02:00 committed by GitHub
parent e4c33d1e1d
commit fb16dbf7cf
No known key found for this signature in database
GPG key ID: B5690EEEBB952194
3 changed files with 41 additions and 3 deletions

View file

@ -58,6 +58,23 @@ class TestHooksOnAdd(TestCase):
code, out, err = self.t("1 info")
self.assertIn("Description foo", out)
def test_onadd_builtin_accept_modify(self):
"""on-add-accept-modify - a well-behaved, successful, on-add hook, that modifies the added task."""
hookname = 'on-add-modify'
self.t.hooks.add_default(hookname, log=True)
code, out, err = self.t("add teh foo")
hook = self.t.hooks[hookname]
hook.assertTriggeredCount(1)
hook.assertExitcode(0)
logs = hook.get_logs()
self.assertEqual(logs["output"]["msgs"][0], "FEEDBACK")
code, out, err = self.t("1 info")
self.assertIn("Description the foo", out)
def test_onadd_builtin_reject(self):
"""on-add-reject - a well-behaved, failing, on-add hook."""
hookname = 'on-add-reject'

View file

@ -0,0 +1,21 @@
#!/usr/bin/env bash
# Input:
# - Line of JSON for proposed new task.
read new_task
if (echo $new_task | grep -qE '[tT]eh');
then
new_task=$(echo $new_task | sed -r 's/([tT])eh/\1he/g')
fi
# Output:
# - JSON, modified
# - Optional feedback/error.
echo $new_task
echo 'FEEDBACK'
# Status:
# - 0: JSON accepted, non-JSON is feedback.
# - non-0: JSON ignored, non-JSON is error.
exit 0