From a69b0c80324b2a26bab6bd36fd941359ddeabf7b Mon Sep 17 00:00:00 2001 From: "Dustin J. Mitchell" Date: Sun, 28 May 2023 21:13:01 +0000 Subject: [PATCH] Remove properties when set to an empty string Fixes #3109. --- src/TDB2.cpp | 7 ++++++- test/tw-3109.t | 11 +++++++++++ 2 files changed, 17 insertions(+), 1 deletion(-) create mode 100644 test/tw-3109.t diff --git a/src/TDB2.cpp b/src/TDB2.cpp index 90e9202ba..4411475f5 100644 --- a/src/TDB2.cpp +++ b/src/TDB2.cpp @@ -169,7 +169,12 @@ void TDB2::modify (Task& task) update = true; } if (update) { - tctask.set_value(k, make_optional (v_new)); + // An empty string indicates the value should be removed. + if (v_new == "") { + tctask.set_value(k, {}); + } else { + tctask.set_value(k, make_optional (v_new)); + } } } diff --git a/test/tw-3109.t b/test/tw-3109.t new file mode 100644 index 000000000..5375c91ba --- /dev/null +++ b/test/tw-3109.t @@ -0,0 +1,11 @@ +#!/usr/bin/env bash +. bash_tap_tw.sh + +task add emptyval +task 1 done +task 1 mod end: status:pending +task_end=`task 1 info | grep ^End | sed -e 's/^End //' || true` +echo "task_end: $task_end" + +# `task mod end:` should have deleted the end. +[[ "$task_end" == "" ]]