- Added unit tests for the 'import' command, which uses JSON as the
native format. This is the new default import/export format. All
other import/export formats are (to be) implemented as transforms
to JSON.
- Corrected maintenance of the _lines vector during TDB2::add_line.
- Implemented TDB2::modify_task undo maintenance.
- Added unit tests for TDB2. Which fail.
- Added unit tests for bug 819, on behalf of Matt Kraai.
- Created a new, single test for cleanup that replaces 6. It's makes
for shorter unit tests, and adds less test count inflation. Over
time, all tests should be modified in a similar way. This will
probably cut the total number of unit tests in half, but that's not
the important metric.
- Fixed some tests that used old message text.
- Fixed tests that relied on 'log'ed tasks still being written into
pending.data.
- Removed obsolete auto-info tests.
- Removed support for ' 1 wk', namely spaces before and after the ordinal.
This removes (some) ambiguity in more complex command lines.
- Fixed unit tests accordingly.
- Added unit tests for the '<=' and '>=' operators. All tests pass,
which makes a nice treat.
- Added more tests to '<' and '>' operators, so that all three data
types are covered.
- Allowed durations to be specified numerically as seconds, in string form.
This flexibility allows the removal of special-case handling that stores
recurrence periods in raw form ('monthly'), reducing code size. As a
consequence this means that recurrence may now be rendered according to
Duration::formatCompact, which is desirable.
- Added supporting unit tests.
- Arguments are now categorized as either "literal" or a specific
category, with accompanying type. Type is inferred for literals,
and referenced for attributes.
- Addressed bug #804 by allowing rc.hyphenate to control whether hyphens are
inserted when long lines are broken. This may help prevent xterm from
mis-parsing URLs in task annotations, when wrapped (thanks to Yann Davin).
- Added unit tests.
- Duration were parsed as <int><unit> in A3, whereas <number><unit> is
correct.
- Added Nibbler::str method for internal access.
- Nibbler::save, ::restore now return positions. Useful for extracting
substrings.
- Modified countdown.t to use the (now) correct units for durations.
- Change the was performance measurements are taken. This in preparation
to automated daily perf charts, leading to efforts to speed up certain
operations.
- I had forgotten to remove the unit tests for the ~ inversion modifier.
This feature, though well implemented, is removed because enhancements
to filtering are going to be added to the new expressions. Attribute
modifiers will continue to be supported, but not enhanced beyond 1.9.4
functionality..
- Added logic to detect whether the unit tests were being run with output
attached to a TTY or not, and adjust the expected lines of output
accordingly. The !TTY case is the important one.
- The command line construct "tags.none:" is translated into the expression
"tags = ''", but instead of '=' I had entered '=='. Force of C/C++/Perl
habit.
- Removed two unit tests for data file syntax that is no longer
supported, namely unquoted values.
Supported: status:"pending"
Not supported: status:pending
- TDB2::load_lines was splitting the text on \n, but because the last
line contains \n, there was an additional blank line. This is what
split_minimal is for.
- split_minimal contained a copy/paste bug that added the extra line
if the input was non-trivial, instead of if the remainder was non-
trivial.
- Fixed incorrect unit test accordingly.
- Quoting problem. To prevent the shell from stripping quotes, the
command line must include \" ... \", but in a Perl string, that
needs to be \\" ... \\". Silly mistake.
- Annotation timestamps are now incremented until unique. This prevents
rapid, successive annotations colliding. The kind that occur during
unit tests and when using UI wrapper programs.
- Removed 'sleep' commands in unit tests that were added to circumvent
this. This speeds up the test suite somewhat.
- Task is no longer a map of string to Att. Att is itself a name/
value pair, so the name was redundant. Task is now a map of string
to string. This brings the obsoletion of Att much closer.