mirror of
https://github.com/GothenburgBitFactory/taskwarrior.git
synced 2025-06-26 10:54:26 +02:00
Bug #461 - due:today doesn't work as a filter - due.is:today does
- Fixed bug #461, in which the filter 'due:today' failed, but 'due.is:today' worked. This is because while iterating over tasks, not every task has a due date, in which case Date::Date ("") was called, which fails. - Moved 'wait' up to second position in the Att::type method, for efficiency.
This commit is contained in:
parent
f2a5dde3a6
commit
69ac9a4296
4 changed files with 20 additions and 10 deletions
|
@ -61,6 +61,8 @@
|
||||||
and overdue.
|
and overdue.
|
||||||
+ Fixed bug #459, which showed a confusing message when 'limit:page' was
|
+ Fixed bug #459, which showed a confusing message when 'limit:page' was
|
||||||
used, with few tasks.
|
used, with few tasks.
|
||||||
|
+ Fixed bug #461, in which the filter 'due:today' failed, but 'due.is:today'
|
||||||
|
worked.
|
||||||
+ Fixed bug #466, which gave the wrong error message when a custom report
|
+ Fixed bug #466, which gave the wrong error message when a custom report
|
||||||
was missing a direction indicator for the sort order.
|
was missing a direction indicator for the sort order.
|
||||||
+ Fixed bug #470, which caused task to not support the color 'none'.
|
+ Fixed bug #470, which caused task to not support the color 'none'.
|
||||||
|
|
15
src/Att.cpp
15
src/Att.cpp
|
@ -415,7 +415,7 @@ bool Att::validNameValue (
|
||||||
"\" is not a valid status. Use 'pending', 'completed', 'deleted', 'recurring' or 'waiting'.";
|
"\" is not a valid status. Use 'pending', 'completed', 'deleted', 'recurring' or 'waiting'.";
|
||||||
}
|
}
|
||||||
|
|
||||||
else if (! validInternalName (name) &&
|
else if (! validInternalName (name) &&
|
||||||
! validModifiableName (name))
|
! validModifiableName (name))
|
||||||
throw std::string ("'") + name + "' is not a recognized attribute.";
|
throw std::string ("'") + name + "' is not a recognized attribute.";
|
||||||
|
|
||||||
|
@ -438,11 +438,11 @@ bool Att::validMod (const std::string& mod)
|
||||||
std::string Att::type (const std::string& name) const
|
std::string Att::type (const std::string& name) const
|
||||||
{
|
{
|
||||||
if (name == "due" ||
|
if (name == "due" ||
|
||||||
|
name == "wait" ||
|
||||||
name == "until" ||
|
name == "until" ||
|
||||||
name == "start" ||
|
name == "start" ||
|
||||||
name == "entry" ||
|
name == "entry" ||
|
||||||
name == "end" ||
|
name == "end")
|
||||||
name == "wait")
|
|
||||||
return "date";
|
return "date";
|
||||||
|
|
||||||
else if (name == "recur")
|
else if (name == "recur")
|
||||||
|
@ -542,16 +542,17 @@ bool Att::match (const Att& other) const
|
||||||
if (mMod == "")
|
if (mMod == "")
|
||||||
{
|
{
|
||||||
// Exact matches on dates should only compare m/d/y, not h:m:s. This allows
|
// Exact matches on dates should only compare m/d/y, not h:m:s. This allows
|
||||||
// Comapisons like "task list due:today" (bug #405).
|
// comparisons like "task list due:today" (bug #405).
|
||||||
std::string which = type (mName);
|
std::string which = type (mName);
|
||||||
if (which == "date")
|
if (which == "date")
|
||||||
{
|
{
|
||||||
|
if (other.mValue == "")
|
||||||
|
return false;
|
||||||
|
|
||||||
Date left (mValue);
|
Date left (mValue);
|
||||||
Date right (other.mValue);
|
Date right (other.mValue);
|
||||||
|
|
||||||
if (left.year () != right.year () ||
|
if (! left.sameDay (right))
|
||||||
left.month () != right.month () ||
|
|
||||||
left.day () != right.day ())
|
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
|
|
|
@ -28,7 +28,7 @@
|
||||||
|
|
||||||
use strict;
|
use strict;
|
||||||
use warnings;
|
use warnings;
|
||||||
use Test::More tests => 7;
|
use Test::More tests => 9;
|
||||||
|
|
||||||
# Create the rc file.
|
# Create the rc file.
|
||||||
if (open my $fh, '>', 'due.rc')
|
if (open my $fh, '>', 'due.rc')
|
||||||
|
@ -57,6 +57,13 @@ my $output = qx{../task rc:due.rc list};
|
||||||
like ($output, qr/\[31m.+$just.+\[0m/, 'one marked due');
|
like ($output, qr/\[31m.+$just.+\[0m/, 'one marked due');
|
||||||
like ($output, qr/\s+$almost\s+/, 'two not marked due');
|
like ($output, qr/\s+$almost\s+/, 'two not marked due');
|
||||||
|
|
||||||
|
qx{../task rc:due.rc add three due:today};
|
||||||
|
$output = qx{../task rc:due.rc list due:today};
|
||||||
|
like ($output, qr/three/, 'due:today works as a filter');
|
||||||
|
|
||||||
|
$output = qx{../task rc:due.rc list due.is:today};
|
||||||
|
like ($output, qr/three/, 'due.is:today works as a filter');
|
||||||
|
|
||||||
# Cleanup.
|
# Cleanup.
|
||||||
unlink 'pending.data';
|
unlink 'pending.data';
|
||||||
ok (!-r 'pending.data', 'Removed pending.data');
|
ok (!-r 'pending.data', 'Removed pending.data');
|
||||||
|
|
|
@ -71,8 +71,8 @@ qx{../task rc:wait.rc add wait:tomorrow tomorrow};
|
||||||
$output = qx{../task rc:wait.rc ls};
|
$output = qx{../task rc:wait.rc ls};
|
||||||
unlike ($output, qr/tomorrow/ms, 'waiting task invisible');
|
unlike ($output, qr/tomorrow/ms, 'waiting task invisible');
|
||||||
|
|
||||||
$output = qx{../task rc:wait.rc ls wait:tomorrow};
|
$output = qx{../task rc:wait.rc all status:waiting wait:tomorrow};
|
||||||
like ($output, qr/tomorrow/ms, 'waiting task visible when specifically asked for it');
|
like ($output, qr/tomorrow/ms, 'waiting task visible when specifically queried');
|
||||||
|
|
||||||
# Cleanup.
|
# Cleanup.
|
||||||
unlink 'pending.data';
|
unlink 'pending.data';
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue