Commit graph

2587 commits

Author SHA1 Message Date
Paul Beckingham
1b55a48757 Unit Tests
- Eliminated obsolete benchmark.t.
- Removed the 'quick' mode logic to skip benchmarks in run_all.
- Restored bug.480.t tests that hung earlier.
2011-08-21 01:09:32 -04:00
Paul Beckingham
7aa4efef8d Expression Refactor
- Refactoring complete.  Arg objects now uses enumerations for _type
  and _category, which should help with performance.
2011-08-21 01:06:50 -04:00
Paul Beckingham
9086f51d29 Merge branch '2.0.0' of tasktools.org:task into 2.0.0 2011-08-20 17:09:04 -04:00
Paul Beckingham
215364958e Expressions Refactor - Clarified expansion rules
- Arg now has a _value member that reflects the value in play, rather
  than the input _raw value.  Only _value is used in eval.
- DOM expansion capabilities are now controlled by rc.dom.
2011-08-20 17:06:50 -04:00
Federico Hernandez
556ee1165d Portability
Added a reference to the Darwin 32bit version task to the task-faq
man page as well.
2011-08-20 23:01:47 +02:00
Paul Beckingham
c6229a6ca6 Unit Tests
- Removed benchmark2.t - it is no longer useful, and duplicates benchmark.t,
  which is itself not long for this world.
2011-08-20 14:56:09 -04:00
Paul Beckingham
438e65036b Expression Refactor
- Arguments are now categorized as either "literal" or a specific
  category, with accompanying type.  Type is inferred for literals,
  and referenced for attributes.
2011-08-20 14:02:48 -04:00
Paul Beckingham
a2a9bfc933 Portability - Building on 32-bit Darwin
- Added notes on building for 32-bit hardware running Darwin (thanks
  to John Hammond).
2011-08-20 11:16:30 -04:00
Paul Beckingham
516e368df0 Expression Refactor
- E9 now uses Arg object in place of Term.  This means A3 and E9 are
  now using a common object.
2011-08-20 10:11:24 -04:00
Paul Beckingham
816b07e868 Expressions - Refactor
- The A3::Arg object is very similar to the E9::Term object, so the two are
  being merged.  First step is to separate A3::Arg into it's own space, then
  add a _type member.
- Added more valid stop characters as terminators for various arg types.
- Removed redundant E9 special handling for dates, which is already built in
  to the Date object.
2011-08-19 22:42:19 -04:00
Paul Beckingham
7dd3e081c7 Bug #804 - URL link and break line
- 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.
2011-08-17 22:39:28 -04:00
Paul Beckingham
08fcb5362e Bug - Durations
- 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.
2011-08-17 00:45:09 -04:00
Paul Beckingham
ee2960b9b0 Date/Duration Distinction
- When a date attribute is updated, the expression may have evaluated to
  a duration, which at this point is simply a number.  If it is below a
  certain threshold (5y) then it is considered a duration and added to
  'now', otherwise it is considered a date.
2011-08-16 23:50:26 -04:00
Paul Beckingham
ac9d1f3bfa Performance Timing
- Change the was performance measurements are taken.  This in preparation
  to automated daily perf charts, leading to efforts to speed up certain
  operations.
2011-08-15 21:53:01 -04:00
Paul Beckingham
ad38d5b92e Bug - File open issue
- If a file (pending.data) is open and locked, trying to open it again
  caused an error, whereas is now does nothing and reports success.
- Corrected timing info in Command::filter.
2011-08-14 21:23:01 -04:00
Paul Beckingham
e403574c34 Unit Test - bug.605.t
- Enabled the (failing) unit test, which now stands a chance of being
  fixed.
2011-08-14 21:03:40 -04:00
Paul Beckingham
8af6d70685 TDB2 - Timing
- Added timing information to TDB2 for performance measuring.
2011-08-14 21:02:30 -04:00
Paul Beckingham
49cabc1bfd Unit Tests
- All unit tests now clean up the new backlog.data and synch.key files.
2011-08-14 14:09:12 -04:00
Paul Beckingham
b0c8cff6a2 A3 - attribute modifier syntax
- Restored the <name>.<modifier>[:=]<value> syntax that was reduced
  to just <name>.<modifier>:<value> to make parsing easier.  Now that
  A3 is more sophisticated, we can have our sugar back.
2011-08-14 13:29:06 -04:00
Paul Beckingham
d59cddcc6c Default Command - next
- The new 'next' report is now the default command.  It was 'list', but
  'next' is much better.
2011-08-14 13:14:12 -04:00
Paul Beckingham
ef35a0cc18 TDB2 - Task IDs
- TF2::load_tasks now properly assigns task IDs.
- TDB2::next_id properly determines the next ID.
2011-08-14 13:08:37 -04:00
Paul Beckingham
f1d429cc96 E9 - Date Handling
- Made dateformat a class member, to reduce multiple lookups to one.
- Added operator-specific data handling.
2011-08-14 12:32:37 -04:00
Paul Beckingham
06d54b2e72 Commands - Calendar
- Converted the 'cal' command to TDB2.
- Reinstated command line handling for 'cal' command, but realized there
  is a conflict with filters.  Filtering disabled for 'cal' until a good
  solution is found.
- Converted recur.cpp to use TDB2, which eliminates the file locking
  problems that occur when both TDB and TDB2 are in use at the same time.
  This will cause other issues until all commands are converted to TDB2.
2011-08-14 12:04:34 -04:00
Paul Beckingham
b1ad00313f TDB2 & CmdCustom
- Converted CmdCustom to use TDB2, which means that for the first time,
  2.0 is now optimizing data load based on filter characteristics.  This
  means that "task list" and "task next" etc are now *fast*.
- Improved diagnostics for TDB2, for debugging.
2011-08-14 12:00:10 -04:00
Paul Beckingham
9a862bc75a File - locking
- Made locking an integral part of the File object, so that a client
  may now call File::lock multiple times with no effect beyond the first
  call.  This simplifies situations like the 'cal' command that must scan
  for recurrence changes, modify tasks, then optionally run a second
  report, all without locking issues.
2011-08-14 11:54:53 -04:00
Paul Beckingham
1f58856299 TDB2 - Recurrence
- Re-enabled the recurrence handling code and converted from TDB to
  TDB2.  Time for some difficult TDB2 work.  But first, coffee.
2011-08-14 10:19:59 -04:00
Paul Beckingham
f3f6cd260a E9 - Typo
- In one of the dumbest typos yet, I entered "fasle" instead of "false"
  and the copy/pasted it around.
2011-08-14 10:04:04 -04:00
Paul Beckingham
5a95b96631 A3 Parsing
- Durations now parse at higher precedence than operators, so that durations
  like '-3d' are not parsed as '-' '3d'.
2011-08-14 00:55:53 -04:00
Paul Beckingham
3e58453693 Unit Tests - filter-prefix.t
- 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..
2011-08-14 00:42:39 -04:00
Paul Beckingham
dba950fcf7 A3 Parsing
- Added an 'until whitespace' clause to the attmod parser.  Results are
  better.
- Noted the need for more specific forms to be recognized.
2011-08-14 00:14:48 -04:00
Paul Beckingham
b5053f3711 Unit Tests - view.t
- 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.
2011-08-14 00:08:54 -04:00
Paul Beckingham
0ead416574 Unit Test - bug.495.t
- Modified the test to reflect the new handling of -- on the command
  line with respect to quoted text.
2011-08-13 23:58:28 -04:00
Paul Beckingham
beac5ed7e9 Unit Tests - bug.489.t
- The command line construct "tags.none:" is translated into the expression
  "tags = ''", but instead of '=' I had entered '=='.  Force of C/C++/Perl
  habit.
2011-08-13 23:40:22 -04:00
Paul Beckingham
38959d6446 Unit Tests
- Another broken unit test because a localized string lost the full
  stop.
2011-08-13 23:36:15 -04:00
Paul Beckingham
eec0abd1e7 Unit Tests - t2.t
- Removed two unit tests for data file syntax that is no longer
  supported, namely unquoted values.
    Supported:      status:"pending"
    Not supported:  status:pending
2011-08-13 23:34:14 -04:00
Paul Beckingham
fb9e82ed0e TDB2 parsing
- 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.
2011-08-13 23:19:11 -04:00
Paul Beckingham
587f2a002f A3 Duration
- When parsing duration literals, look-ahead now prevents an ordinal
  such as '31st' (August 31st) from being interpreted as two tokens
  '31s' (duration) and 't' (word).  This is the same fix that was
  applied to A3::is_number.  I'll be there are more that I missed.
2011-08-13 22:29:39 -04:00
Paul Beckingham
a4fc8aee6a Unit Tests - bug.628.t
- 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.
2011-08-13 22:27:59 -04:00
Paul Beckingham
77dc2c47d4 Unit Tests - typo
- Unit test bug.434.t was thwarted by the L10N effort, which left off
  a full stop from a display string.
2011-08-13 22:26:17 -04:00
Paul Beckingham
be0522d567 Annotation Collisions
- 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.
2011-08-13 21:53:10 -04:00
Paul Beckingham
cb366e0270 Unit Tests - rx.t
- Added a \b word-boundary unit test that isn't working.  Documentation
  says it does.  Computer says no.
2011-08-13 21:09:57 -04:00
Paul Beckingham
bfad448f82 TDB2 - id <--> uuid mapping
- Migrated TDB mapping over to TDB2 mapping, which occurs at the TF2 level.
  This should (soon) restore task dependencies.
2011-08-13 17:43:07 -04:00
Paul Beckingham
30034f057b Bug - A3::extract_modifications
- Broadened the list of argument categories that are downgraded to
  'word' for the purpose of task modification.
2011-08-13 16:24:07 -04:00
Paul Beckingham
7ba5e67050 Code Cleanup
- Removed unnecessary debug statements.
2011-08-13 14:31:29 -04:00
Paul Beckingham
7aa7fe083f Parsing
- Added special look-ahead rules to remove cases where '3M' was considered
  a number.
2011-08-13 14:10:24 -04:00
Paul Beckingham
e238b94d1b Urgency
- Urgency recalc was not properly set with the task was modified.
- Corrected urgency formatting.
- Cleaned up some code in A3 and E9.
2011-08-12 23:08:54 -04:00
Paul Beckingham
5a2fba607e Unit Tests
- New 'problems' script to help identify problem areas in the test
  suite.
2011-08-11 18:25:10 -04:00
Paul Beckingham
92ad842ab8 Unit Tests
- Fixed sorting errors, which were in the tests, not the code.
2011-08-11 18:13:46 -04:00
Paul Beckingham
678e08ca0f Portability
- When HAVE_SRANDOM is undefined in 1.9.4, the timeval struct can be omitted
  causing a compile error.  Patch received, but not applied to 2.0.0 branch
  because that code has been rewritten already (thanks to Paolo Almeida).
2011-08-10 01:28:04 -04:00
Paul Beckingham
47ae2ee9f6 Unit Tests
- Added unit tests for Nibbler::getNumber when the input is simply "2.0".
2011-08-10 00:25:03 -04:00