Skip to content

Commit

Permalink
Test modification of a task by an on-add hook (test case for #3416) (#…
Browse files Browse the repository at this point in the history
…3443)

* Add test case to cover #3416

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

* TDB2::add() move hook invocation before save (#3416)
  • Loading branch information
maertsen committed May 15, 2024
1 parent e4c33d1 commit fb16dbf
Show file tree
Hide file tree
Showing 3 changed files with 41 additions and 3 deletions.
6 changes: 3 additions & 3 deletions src/TDB2.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -81,6 +81,9 @@ void TDB2::add (Task& task)
std::string uuid = task.get ("uuid");
changes[uuid] = task;

// run hooks for this new task
Context::getContext ().hooks.onAdd (task);

auto innertask = replica.import_task_with_uuid (uuid);

{
Expand Down Expand Up @@ -121,9 +124,6 @@ void TDB2::add (Task& task)
// update the cached working set with the new information
_working_set = std::make_optional (std::move (ws));

// run hooks for this new task
Context::getContext ().hooks.onAdd (task);

if (id.has_value ()) {
task.id = id.value();
}
Expand Down
17 changes: 17 additions & 0 deletions test/hooks.on-add.test.py
Original file line number Diff line number Diff line change
Expand Up @@ -58,6 +58,23 @@ def test_onadd_builtin_accept(self):
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'
Expand Down
21 changes: 21 additions & 0 deletions test/test_hooks/on-add-modify
Original file line number Diff line number Diff line change
@@ -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

0 comments on commit fb16dbf

Please sign in to comment.