mirror of
https://github.com/GothenburgBitFactory/taskwarrior.git
synced 2025-06-26 10:54:26 +02:00
Bug #1091
- Fixed bug #1091, allowing filters to use 'urgency.over:4.5'.
This commit is contained in:
parent
76468f3ddd
commit
dd1f154376
7 changed files with 134 additions and 5 deletions
|
@ -57,6 +57,7 @@ Bugs
|
||||||
+ Fixed bug #1065, where CmdShow issued messages in incorrect situations.
|
+ Fixed bug #1065, where CmdShow issued messages in incorrect situations.
|
||||||
+ Partially fixed #1083, which showed 'task 0 ...' when modifying a non-
|
+ Partially fixed #1083, which showed 'task 0 ...' when modifying a non-
|
||||||
pending task (thanks to Aikido Guy).
|
pending task (thanks to Aikido Guy).
|
||||||
|
+ Fixed bug #1091, allowing filters to use 'urgency.over:4.5'.
|
||||||
+ Fixed bug #1110, which did not treat 'status:Completed' the same
|
+ Fixed bug #1110, which did not treat 'status:Completed' the same
|
||||||
as 'status:completed' (thanks to Aikido Guy).
|
as 'status:completed' (thanks to Aikido Guy).
|
||||||
+ Fixed bug #1123, which caused the undo of a 'log' command to corrupt the data
|
+ Fixed bug #1123, which caused the undo of a 'log' command to corrupt the data
|
||||||
|
|
|
@ -97,7 +97,7 @@ static struct
|
||||||
{ "_hastag_", 9, 'b', 0, 'l'}, // +tag [Pseudo-op]
|
{ "_hastag_", 9, 'b', 0, 'l'}, // +tag [Pseudo-op]
|
||||||
{ "_notag_", 9, 'b', 0, 'l'}, // -tag [Pseudo-op]
|
{ "_notag_", 9, 'b', 0, 'l'}, // -tag [Pseudo-op]
|
||||||
|
|
||||||
// { "-", 15, 'u', 1, 'r' }, // Unary minus
|
{ "-", 15, 'u', 1, 'r' }, // Unary minus
|
||||||
{ "*", 13, 'b', 1, 'l' }, // Multiplication
|
{ "*", 13, 'b', 1, 'l' }, // Multiplication
|
||||||
{ "/", 13, 'b', 1, 'l' }, // Division
|
{ "/", 13, 'b', 1, 'l' }, // Division
|
||||||
// { "%", 13, 'b', 1, 'l' }, // Modulus
|
// { "%", 13, 'b', 1, 'l' }, // Modulus
|
||||||
|
|
104
src/E9.cpp
104
src/E9.cpp
|
@ -337,6 +337,32 @@ void E9::operator_lt (Arg& result, Arg& left, Arg& right)
|
||||||
: "false";
|
: "false";
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
else if (left._type == Arg::type_duration ||
|
||||||
|
right._type == Arg::type_duration)
|
||||||
|
{
|
||||||
|
if (left._value == "" ||
|
||||||
|
right._value == "")
|
||||||
|
result._value = "false";
|
||||||
|
else
|
||||||
|
{
|
||||||
|
Duration left_duration (left._value);
|
||||||
|
Duration right_duration (right._value);
|
||||||
|
|
||||||
|
result._value = (left_duration < right_duration)
|
||||||
|
? "true"
|
||||||
|
: "false";
|
||||||
|
}
|
||||||
|
}
|
||||||
|
else if (left._type == Arg::type_number ||
|
||||||
|
right._type == Arg::type_number)
|
||||||
|
{
|
||||||
|
float left_number = strtof (left._value.c_str (), NULL);
|
||||||
|
float right_number = strtof (right._value.c_str (), NULL);
|
||||||
|
|
||||||
|
result._value = (left_number < right_number)
|
||||||
|
? "true"
|
||||||
|
: "false";
|
||||||
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
result._value = (left._value < right._value)
|
result._value = (left._value < right._value)
|
||||||
|
@ -376,6 +402,32 @@ void E9::operator_lte (Arg& result, Arg& left, Arg& right)
|
||||||
: "false";
|
: "false";
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
else if (left._type == Arg::type_duration ||
|
||||||
|
right._type == Arg::type_duration)
|
||||||
|
{
|
||||||
|
if (left._value == "" ||
|
||||||
|
right._value == "")
|
||||||
|
result._value = "false";
|
||||||
|
else
|
||||||
|
{
|
||||||
|
Duration left_duration (left._value);
|
||||||
|
Duration right_duration (right._value);
|
||||||
|
|
||||||
|
result._value = (left_duration <= right_duration)
|
||||||
|
? "true"
|
||||||
|
: "false";
|
||||||
|
}
|
||||||
|
}
|
||||||
|
else if (left._type == Arg::type_number ||
|
||||||
|
right._type == Arg::type_number)
|
||||||
|
{
|
||||||
|
float left_number = strtof (left._value.c_str (), NULL);
|
||||||
|
float right_number = strtof (right._value.c_str (), NULL);
|
||||||
|
|
||||||
|
result._value = (left_number <= right_number)
|
||||||
|
? "true"
|
||||||
|
: "false";
|
||||||
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
result._value = (left._value <= right._value)
|
result._value = (left._value <= right._value)
|
||||||
|
@ -415,6 +467,32 @@ void E9::operator_gte (Arg& result, Arg& left, Arg& right)
|
||||||
: "false";
|
: "false";
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
else if (left._type == Arg::type_duration ||
|
||||||
|
right._type == Arg::type_duration)
|
||||||
|
{
|
||||||
|
if (left._value == "" ||
|
||||||
|
right._value == "")
|
||||||
|
result._value = "false";
|
||||||
|
else
|
||||||
|
{
|
||||||
|
Duration left_duration (left._value);
|
||||||
|
Duration right_duration (right._value);
|
||||||
|
|
||||||
|
result._value = (left_duration >= right_duration)
|
||||||
|
? "true"
|
||||||
|
: "false";
|
||||||
|
}
|
||||||
|
}
|
||||||
|
else if (left._type == Arg::type_number ||
|
||||||
|
right._type == Arg::type_number)
|
||||||
|
{
|
||||||
|
float left_number = strtof (left._value.c_str (), NULL);
|
||||||
|
float right_number = strtof (right._value.c_str (), NULL);
|
||||||
|
|
||||||
|
result._value = (left_number >= right_number)
|
||||||
|
? "true"
|
||||||
|
: "false";
|
||||||
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
result._value = (left._value >= right._value)
|
result._value = (left._value >= right._value)
|
||||||
|
@ -453,6 +531,32 @@ void E9::operator_gt (Arg& result, Arg& left, Arg& right)
|
||||||
: "false";
|
: "false";
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
else if (left._type == Arg::type_duration ||
|
||||||
|
right._type == Arg::type_duration)
|
||||||
|
{
|
||||||
|
if (left._value == "" ||
|
||||||
|
right._value == "")
|
||||||
|
result._value = "false";
|
||||||
|
else
|
||||||
|
{
|
||||||
|
Duration left_duration (left._value);
|
||||||
|
Duration right_duration (right._value);
|
||||||
|
|
||||||
|
result._value = result._value = (left_duration > right_duration)
|
||||||
|
? "true"
|
||||||
|
: "false";
|
||||||
|
}
|
||||||
|
}
|
||||||
|
else if (left._type == Arg::type_number ||
|
||||||
|
right._type == Arg::type_number)
|
||||||
|
{
|
||||||
|
float left_number = strtof (left._value.c_str (), NULL);
|
||||||
|
float right_number = strtof (right._value.c_str (), NULL);
|
||||||
|
|
||||||
|
result._value = (left_number > right_number)
|
||||||
|
? "true"
|
||||||
|
: "false";
|
||||||
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
result._value = (left._value > right._value)
|
result._value = (left._value > right._value)
|
||||||
|
|
|
@ -28,7 +28,7 @@
|
||||||
|
|
||||||
use strict;
|
use strict;
|
||||||
use warnings;
|
use warnings;
|
||||||
use Test::More tests => 22;
|
use Test::More tests => 26;
|
||||||
|
|
||||||
# Create the rc file.
|
# Create the rc file.
|
||||||
if (open my $fh, '>', 'op.rc')
|
if (open my $fh, '>', 'op.rc')
|
||||||
|
@ -76,6 +76,12 @@ like ($output, qr/two/, 'ls description > t --> two');
|
||||||
like ($output, qr/three/, 'ls description > t --> three');
|
like ($output, qr/three/, 'ls description > t --> three');
|
||||||
unlike ($output, qr/four/, 'ls description > t --> !four');
|
unlike ($output, qr/four/, 'ls description > t --> !four');
|
||||||
|
|
||||||
|
$output = qx{../src/task rc:op.rc 'urgency > 10.0' ls 2>&1};
|
||||||
|
like ($output, qr/one/, 'ls urgency > 10 --> one');
|
||||||
|
like ($output, qr/two/, 'ls urgency > 10 --> two');
|
||||||
|
unlike ($output, qr/three/, 'ls urgency > 10 --> !three');
|
||||||
|
unlike ($output, qr/four/, 'ls urgency > 10 --> !four');
|
||||||
|
|
||||||
# Cleanup.
|
# Cleanup.
|
||||||
unlink qw(pending.data completed.data undo.data backlog.data synch.key op.rc);
|
unlink qw(pending.data completed.data undo.data backlog.data synch.key op.rc);
|
||||||
ok (! -r 'pending.data' &&
|
ok (! -r 'pending.data' &&
|
||||||
|
|
|
@ -28,7 +28,7 @@
|
||||||
|
|
||||||
use strict;
|
use strict;
|
||||||
use warnings;
|
use warnings;
|
||||||
use Test::More tests => 10;
|
use Test::More tests => 14;
|
||||||
|
|
||||||
# Create the rc file.
|
# Create the rc file.
|
||||||
if (open my $fh, '>', 'op.rc')
|
if (open my $fh, '>', 'op.rc')
|
||||||
|
@ -58,6 +58,12 @@ like ($output, qr/two/, 'ls description >= t --> two');
|
||||||
like ($output, qr/three/, 'ls description >= t --> three');
|
like ($output, qr/three/, 'ls description >= t --> three');
|
||||||
unlike ($output, qr/four/, 'ls description >= t --> !four');
|
unlike ($output, qr/four/, 'ls description >= t --> !four');
|
||||||
|
|
||||||
|
$output = qx{../src/task rc:op.rc 'urgency >= 2.0' ls 2>&1};
|
||||||
|
like ($output, qr/one/, 'ls urgency >= 2.0 --> one');
|
||||||
|
like ($output, qr/two/, 'ls urgency >= 2.0 --> two');
|
||||||
|
unlike ($output, qr/three/, 'ls urgency >= 2.0 --> !three');
|
||||||
|
unlike ($output, qr/four/, 'ls urgency >= 2.0 --> !four');
|
||||||
|
|
||||||
# Cleanup.
|
# Cleanup.
|
||||||
unlink qw(pending.data completed.data undo.data backlog.data synch.key op.rc);
|
unlink qw(pending.data completed.data undo.data backlog.data synch.key op.rc);
|
||||||
ok (! -r 'pending.data' &&
|
ok (! -r 'pending.data' &&
|
||||||
|
|
|
@ -28,7 +28,7 @@
|
||||||
|
|
||||||
use strict;
|
use strict;
|
||||||
use warnings;
|
use warnings;
|
||||||
use Test::More tests => 22;
|
use Test::More tests => 26;
|
||||||
|
|
||||||
# Create the rc file.
|
# Create the rc file.
|
||||||
if (open my $fh, '>', 'op.rc')
|
if (open my $fh, '>', 'op.rc')
|
||||||
|
@ -76,6 +76,12 @@ unlike ($output, qr/two/, 'ls description < t --> !two');
|
||||||
unlike ($output, qr/three/, 'ls description < t --> !three');
|
unlike ($output, qr/three/, 'ls description < t --> !three');
|
||||||
like ($output, qr/four/, 'ls description < t --> four');
|
like ($output, qr/four/, 'ls description < t --> four');
|
||||||
|
|
||||||
|
$output = qx{../src/task rc:op.rc 'urgency < 10.0' ls 2>&1};
|
||||||
|
unlike ($output, qr/one/, 'ls description < 10 --> !one');
|
||||||
|
unlike ($output, qr/two/, 'ls description < 10 --> !two');
|
||||||
|
like ($output, qr/three/, 'ls description < 10 --> three');
|
||||||
|
like ($output, qr/four/, 'ls description < 10 --> four');
|
||||||
|
|
||||||
# Cleanup.
|
# Cleanup.
|
||||||
unlink qw(pending.data completed.data undo.data backlog.data synch.key op.rc);
|
unlink qw(pending.data completed.data undo.data backlog.data synch.key op.rc);
|
||||||
ok (! -r 'pending.data' &&
|
ok (! -r 'pending.data' &&
|
||||||
|
|
|
@ -28,7 +28,7 @@
|
||||||
|
|
||||||
use strict;
|
use strict;
|
||||||
use warnings;
|
use warnings;
|
||||||
use Test::More tests => 10;
|
use Test::More tests => 14;
|
||||||
|
|
||||||
# Create the rc file.
|
# Create the rc file.
|
||||||
if (open my $fh, '>', 'op.rc')
|
if (open my $fh, '>', 'op.rc')
|
||||||
|
@ -58,6 +58,12 @@ unlike ($output, qr/two/, 'ls description <= t --> !two');
|
||||||
unlike ($output, qr/three/, 'ls description <= t --> !three');
|
unlike ($output, qr/three/, 'ls description <= t --> !three');
|
||||||
like ($output, qr/four/, 'ls description <= t --> four');
|
like ($output, qr/four/, 'ls description <= t --> four');
|
||||||
|
|
||||||
|
$output = qx{../src/task rc:op.rc 'urgency <= 2.0' ls 2>&1};
|
||||||
|
unlike ($output, qr/one/, 'ls urgency <= 2.0 --> !one');
|
||||||
|
unlike ($output, qr/two/, 'ls urgency <= 2.0 --> !two');
|
||||||
|
like ($output, qr/three/, 'ls urgency <= 2.0 --> three');
|
||||||
|
like ($output, qr/four/, 'ls urgency <= 2.0 --> four');
|
||||||
|
|
||||||
# Cleanup.
|
# Cleanup.
|
||||||
unlink qw(pending.data completed.data undo.data backlog.data synch.key op.rc);
|
unlink qw(pending.data completed.data undo.data backlog.data synch.key op.rc);
|
||||||
ok (! -r 'pending.data' &&
|
ok (! -r 'pending.data' &&
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue