- Restores behaviour which got lost when switching to the new interval filtering in 9968b9e9
- Add test for each command
Signed-off-by: Thomas Lauf <thomas.lauf@tngtech.com>
With 179a6153, all 'end of' named dates point to the last second of the respective interval.
(see GothenburgBitFactory/taskwarrior#2519)
Redefine hint intervals in Timewarrior by 'start of' named dates, such that their ranges comprise the full interval as expected.
Signed-off-by: Thomas Lauf <thomas.lauf@tngtech.com>
- add config `reports.summary.ids` to toggle display of IDs
- add config `reports.summary.annotations` to toggle display of annotations
- add hints `:no-ids` and `:no-annotations` to override positive configs
Closes#474
Signed-off-by: Thomas Lauf <thomas.lauf@tngtech.com>
This eliminates the use of the naked "new" so that when the filters object is
destroyed, the filters are also freed.
This also eliminates a potential issue with binding an r-value reference to a
Range as a reference in IntervalFilterAllInRange.
Signed-off-by: Shaun Ruffell <sruffell@sruffell.net>
Replace in commands CmdAnnotate, CmdDefault, CmdContinue, CmdTag, and CmdUntag
Also in function domGet
Relates to #468
Signed-off-by: Thomas Lauf <thomas.lauf@tngtech.com>
A first-of interval filter is done when the first matching interval has been found.
Relates to #468
Signed-off-by: Thomas Lauf <thomas.lauf@tngtech.com>
An and-group interval filter accepts all intervals which are accepted by all filters in its group.
It is done, if one of the filters in its group is done.
Relates to #468
Signed-off-by: Thomas Lauf <thomas.lauf@tngtech.com>
Replace getTracked in commands CmdSummary, CmdChart, CmdExport, CmdFill,
CmdReport, CmdTags, and CmdContinue. Also in functions domGet and autoFill
Relates to #468
Signed-off-by: Thomas Lauf <thomas.lauf@tngtech.com>
An id-set interval filter accepts all intervals, which contain all ids of the given id set.
This filter is done when all ids have been found.
Relates to #468
Signed-off-by: Thomas Lauf <thomas.lauf@tngtech.com>
An all-in-range interval filter accepts all intervals which intersect with the given range.
This filter is done if it encounters an interval with an end datetime before its range's start datetime.
Relates to #468
Signed-off-by: Thomas Lauf <thomas.lauf@tngtech.com>
An all-with-tags interval filter accepts all intervals which contain all tags of the given tag set.
This filter is never done, i.e. it will consume all intervals from the stream.
Relates to #468
Signed-off-by: Thomas Lauf <thomas.lauf@tngtech.com>
- Fix `--fail-at-end` option
- Collect errors and print report at end
- Make variable `tests` an array, add safeguards
- Combine cases
- Make variables `dates`, `hours`, `minutes` an array, add `pad_with_zero` function
- Execute test with specific 'runtime', so it picks up fake time
- Python scripts are then executed as `faketime <date> python3 <test>`
- Shell scripts as `faketime <date> bash <test>`
- Everything else as `faketime <date> <test>`
Signed-off-by: Thomas Lauf <thomas.lauf@tngtech.com>
1) Remove AtomicFile::impl::find and use std::find_if directly.
2) Remove static functions that take a string for path. Allow the compiler to
construct the Path object as necessary.
Signed-off-by: Shaun Ruffell <sruffell@sruffell.net>