Check if end date is being set to a pending task (#3622)

check if end date is being set to a pending task

-throw error if end date is being set to a pending task
- add test for the bug
This commit is contained in:
Gagan Nagaraj 2024-09-13 09:16:20 -07:00 committed by GitHub
parent c00c0e941b
commit d75ef7f197
No known key found for this signature in database
GPG key ID: B5690EEEBB952194
2 changed files with 19 additions and 0 deletions

View file

@ -116,6 +116,11 @@ void CmdModify::checkConsistency(Task &before, Task &after) {
if (before.has("recur") && (!after.has("recur") || after.get("recur") == ""))
throw std::string("You cannot remove the recurrence from a recurring task.");
if ((before.getStatus() == Task::pending) && (after.getStatus() == Task::pending) &&
(after.get("end") != ""))
throw format("Could not modify task {1}. You cannot set an end date on a pending task.",
before.identifier(true));
}
////////////////////////////////////////////////////////////////////////////////

View file

@ -56,6 +56,20 @@ class TestBug1763(TestCase):
self.assertIn("Modified 0 tasks.", out)
class TestBug3584(TestCase):
def setUp(self):
self.t = Task()
def test_mod_pending_task_end_date(self):
"""Adding end date for a pending task throws an error"""
self.t("add foo")
code, out, err = self.t.runError("1 modify end:1d")
self.assertIn(
"Could not modify task 1. You cannot set an end date on a pending task.",
err,
)
if __name__ == "__main__":
from simpletap import TAPTestRunner