* Declare in corresponding header files and dissolve main.h
Apply include-what-you-use
* Remove further unncessary includes
* Incorporate review comment
* Do not declare static functions and variables in header
* Adapt test
* [pre-commit.ci] auto fixes from pre-commit.com hooks
for more information, see https://pre-commit.ci
---------
Co-authored-by: pre-commit-ci[bot] <66853113+pre-commit-ci[bot]@users.noreply.github.com>
* Remove unused include in Variant.h
* Remove unused include in util.h
* Remove unused include directives in util.cpp
* Remove unused include directives in TF2.h
* Remove unused include directives in TF2.cpp
* Remove unused include directive in TDB2.h
* Remove unused include directives in TDB2.cpp
* Remove unused include directives in Task.h
* Remove unused include directive in rules.cpp
* Remove unused include directives in rules.cpp
* Remove unused include directives in nag.cpp
* Remove unused include directive in main.h
* Remove unused include directive in legacy.cpph
* Remove unused include directive in Hooks.cpp
* Remove unused include directive in Filter.h
* Remove unused include directive in Filter.cpp
* Remove unused include directive in feedback.cpp
* Remove unused include directive in Eval.cpp
* Remove unused include directives in dependency.cpp
* Remove unused include directivess in Context.cpp
* Test for unusual task data
A task might have any combination of keys and values, but Taskwarrior
often assumes that only valid values can occur, and crashes otherwise.
This is highly inconvenient, as it's often impossible to do anything
with the invalid task -- Taskwarrior just fails without modifying it.
So, this is the beginning of some testing for such invalid tasks, with
the goal of making Taskwarrior due something reasonable. In general, an
invalid attribute value is treated as if it was not set. This is not
exhaustive, and there are likely still bugs of this sort, but as we find
them we can fix and add regression tests to this script.
This introduces a new test-only binary that creates a "bare" task using
TaskChampion, avoiding Taskwarrior's efforts to not create "unusual"
tasks.
* [pre-commit.ci] auto fixes from pre-commit.com hooks
for more information, see https://pre-commit.ci
---------
Co-authored-by: pre-commit-ci[bot] <66853113+pre-commit-ci[bot]@users.noreply.github.com>
Tasks can be due "today", as `task add foo due:today ..` is a common
form. However, recurrences before that are just not created.
This avoids a lengthy "hang" when recurrences are updated on an old task
database, as many tasks in the past are created.
The feature has been moved to 3.0 milestone. Also, we are now using
feature branches for development of new functionality, in order to make
the development branch more stable.
Specifying a recurrence interval that amounts to a zero, like 'P0M', 0q
or 0m causes task to fall into an infinite loop when trying to determine
next recurrence dates.
Detect scenarios with zero-length recurrence interval and throw an
exception.
Closes#2262.
Due to not accounting for the leading "P", getNextRecurrence would always return the same datetime, breaking all generic "PnM" periods and leading to an infinite loop in generateDueDates.