Blank Durations

- Instead of dispalying '-' for a zero-length duration, nothing is ('') is
  displayed instead.  This allows a completely empty duration column to be
  culled by the rc.print.empty.columns=no feature.
- Unit tests updated accordingly.
This commit is contained in:
Paul Beckingham 2013-02-24 14:26:52 -05:00
parent 089b3e7d66
commit 330761e997
4 changed files with 27 additions and 26 deletions

3
NEWS
View file

@ -19,7 +19,8 @@ New commands in taskwarrior 2.2.0
New configuration options in taskwarrior 2.2.0 New configuration options in taskwarrior 2.2.0
- New color rule 'color.uda.<uda-name>'. - New color rule 'color.uda.<uda-name>'.
- Added the configuration variable 'print.empty.columns'. - Added the configuration variable 'print.empty.columns', which defaults to
'no'. This allows more efficient use of horizontal space.
- Any ~ characters in a default .taskrc file are preserved. - Any ~ characters in a default .taskrc file are preserved.
Newly deprecated features in taskwarrior 2.2.0 Newly deprecated features in taskwarrior 2.2.0

View file

@ -282,7 +282,7 @@ std::string Duration::formatCompact () const
else if (_secs >= 3600) sprintf (formatted, "%s%dh", (_negative ? "-" : ""), (int) (_secs / 3600)); else if (_secs >= 3600) sprintf (formatted, "%s%dh", (_negative ? "-" : ""), (int) (_secs / 3600));
else if (_secs >= 60) sprintf (formatted, "%s%dm", (_negative ? "-" : ""), (int) (_secs / 60)); else if (_secs >= 60) sprintf (formatted, "%s%dm", (_negative ? "-" : ""), (int) (_secs / 60));
else if (_secs >= 1) sprintf (formatted, "%s%ds", (_negative ? "-" : ""), (int) _secs); else if (_secs >= 1) sprintf (formatted, "%s%ds", (_negative ? "-" : ""), (int) _secs);
else strcpy (formatted, "-"); else formatted[0] = '\0';
return std::string (formatted); return std::string (formatted);
} }

View file

@ -41,32 +41,32 @@ if (open my $fh, '>', 'annual.rc')
# If a task is added with a due date ten years ago, with an annual recurrence, # If a task is added with a due date ten years ago, with an annual recurrence,
# then the synthetic tasks in between then and now have a due date that creeps. # then the synthetic tasks in between then and now have a due date that creeps.
# #
# ID Project Pri Due Active Age Description # ID Project Pri Due Active Description
# -- ------- --- ---------- ------ --- ----------- # -- ------- --- ---------- ------ -----------
# 2 1/1/2000 - foo # 2 1/1/2000 foo
# 3 12/31/2000 - foo # 3 12/31/2000 foo
# 4 12/31/2001 - foo # 4 12/31/2001 foo
# 5 12/31/2002 - foo # 5 12/31/2002 foo
# 6 12/31/2003 - foo # 6 12/31/2003 foo
# 7 12/30/2004 - foo # 7 12/30/2004 foo
# 8 12/30/2005 - foo # 8 12/30/2005 foo
# 9 12/30/2006 - foo # 9 12/30/2006 foo
# 10 12/30/2007 - foo # 10 12/30/2007 foo
# 11 13/29/2008 - foo # 11 13/29/2008 foo
# 12 12/29/2009 - foo # 12 12/29/2009 foo
qx{../src/task rc:annual.rc add foo due:1/1/2000 recur:annual until:1/1/2009 2>&1}; qx{../src/task rc:annual.rc add foo due:1/1/2000 recur:annual until:1/1/2009 2>&1};
my $output = qx{../src/task rc:annual.rc list 2>&1}; my $output = qx{../src/task rc:annual.rc list 2>&1};
like ($output, qr/2\s+1\/1\/2000\s+(?:-|\d+\ssecs?)\s+foo/, 'synthetic 2 no creep'); like ($output, qr/2\s+1\/1\/2000\s+(?:\d+\ssecs?\s+)?foo/, 'synthetic 2 no creep');
like ($output, qr/3\s+1\/1\/2001\s+(?:-|\d+\ssecs?)\s+foo/, 'synthetic 3 no creep'); like ($output, qr/3\s+1\/1\/2001\s+(?:\d+\ssecs?\s+)?foo/, 'synthetic 3 no creep');
like ($output, qr/4\s+1\/1\/2002\s+(?:-|\d+\ssecs?)\s+foo/, 'synthetic 4 no creep'); like ($output, qr/4\s+1\/1\/2002\s+(?:\d+\ssecs?\s+)?foo/, 'synthetic 4 no creep');
like ($output, qr/5\s+1\/1\/2003\s+(?:-|\d+\ssecs?)\s+foo/, 'synthetic 5 no creep'); like ($output, qr/5\s+1\/1\/2003\s+(?:\d+\ssecs?\s+)?foo/, 'synthetic 5 no creep');
like ($output, qr/6\s+1\/1\/2004\s+(?:-|\d+\ssecs?)\s+foo/, 'synthetic 6 no creep'); like ($output, qr/6\s+1\/1\/2004\s+(?:\d+\ssecs?\s+)?foo/, 'synthetic 6 no creep');
like ($output, qr/7\s+1\/1\/2005\s+(?:-|\d+\ssecs?)\s+foo/, 'synthetic 7 no creep'); like ($output, qr/7\s+1\/1\/2005\s+(?:\d+\ssecs?\s+)?foo/, 'synthetic 7 no creep');
like ($output, qr/8\s+1\/1\/2006\s+(?:-|\d+\ssecs?)\s+foo/, 'synthetic 8 no creep'); like ($output, qr/8\s+1\/1\/2006\s+(?:\d+\ssecs?\s+)?foo/, 'synthetic 8 no creep');
like ($output, qr/9\s+1\/1\/2007\s+(?:-|\d+\ssecs?)\s+foo/, 'synthetic 9 no creep'); like ($output, qr/9\s+1\/1\/2007\s+(?:\d+\ssecs?\s+)?foo/, 'synthetic 9 no creep');
like ($output, qr/10\s+1\/1\/2008\s+(?:-|\d+\ssecs?)\s+foo/, 'synthetic 10 no creep'); like ($output, qr/10\s+1\/1\/2008\s+(?:\d+\ssecs?\s+)?foo/, 'synthetic 10 no creep');
like ($output, qr/11\s+1\/1\/2009\s+(?:-|\d+\ssecs?)\s+foo/, 'synthetic 11 no creep'); like ($output, qr/11\s+1\/1\/2009\s+(?:\d+\ssecs?\s+)?foo/, 'synthetic 11 no creep');
$output = qx{../src/task rc:annual.rc diag 2>&1}; $output = qx{../src/task rc:annual.rc diag 2>&1};
like ($output, qr/No duplicates found/, 'No duplicate UUIDs detected'); like ($output, qr/No duplicates found/, 'No duplicate UUIDs detected');

View file

@ -79,7 +79,7 @@ int main (int argc, char** argv)
d = Duration (365 * 86400 + 1); t.is (d.format (), "1.0 yrs", "365 days + 1 sec -> 1.0 yrs"); d = Duration (365 * 86400 + 1); t.is (d.format (), "1.0 yrs", "365 days + 1 sec -> 1.0 yrs");
// std::string formatCompact (); // std::string formatCompact ();
d = Duration (0), t.is (d.formatCompact (), "-", "0 -> -"); d = Duration (0), t.is (d.formatCompact (), "", "0 ->");
d = Duration (1), t.is (d.formatCompact (), "1s", "1 -> 1s"); d = Duration (1), t.is (d.formatCompact (), "1s", "1 -> 1s");
d = Duration (2), t.is (d.formatCompact (), "2s", "2 -> 2s"); d = Duration (2), t.is (d.formatCompact (), "2s", "2 -> 2s");
d = Duration (59), t.is (d.formatCompact (), "59s", "59 -> 59s"); d = Duration (59), t.is (d.formatCompact (), "59s", "59 -> 59s");