Bug - A3::extract_modifications

- Broadened the list of argument categories that are downgraded to
  'word' for the purpose of task modification.
This commit is contained in:
Paul Beckingham 2011-08-13 16:24:07 -04:00
parent 7ba5e67050
commit 30034f057b
3 changed files with 64 additions and 47 deletions

View file

@ -605,7 +605,7 @@ const A3 A3::extract_modifications () const
// lines that do not otherwise include an id, such as:
//
// task add Read the article on page 2
else if (arg->_category == "id" ||
else if (arg->_category == "id" ||
arg->_category == "uuid")
{
Arg downgrade (*arg);

View file

@ -418,8 +418,8 @@ void Command::modify_task (
std::string result = e.evalExpression (task);
context.debug (std::string ("Eval '") + value + "' --> '" + result + "'");
fragment.dump ("pre modify_task attr");
std::cout << "# modify_task result='" << result << "'\n";
//fragment.dump ("pre modify_task attr");
//std::cout << "# modify_task result='" << result << "'\n";
// Dependencies must be resolved to UUIDs.
if (name == "depends")
@ -463,6 +463,7 @@ std::cout << "# modify_task result='" << result << "'\n";
task.removeTag (value);
}
/*
// Words and operators are aggregated into a description.
else if (arg->_category == "word" ||
arg->_category == "op")
@ -472,6 +473,7 @@ std::cout << "# modify_task result='" << result << "'\n";
description += arg->_raw;
}
*/
// Substitutions.
else if (arg->_category == "subst")
@ -483,10 +485,22 @@ std::cout << "# modify_task result='" << result << "'\n";
task.substitute (from, to, global);
}
/*
// Any additional argument types are indicative of a failure in
// A3::extract_modifications.
else
throw format (STRING_CMD_MOD_UNEXPECTED, arg->_raw);
*/
// Anything else is essentially downgraded to 'word' and considered part of
// the description.
else
{
if (description.length ())
description += " ";
description += arg->_raw;
}
}
}

View file

@ -28,7 +28,7 @@
use strict;
use warnings;
use Test::More tests => 49;
use Test::More tests => 50;
# Create the rc file.
if (open my $fh, '>', 'urgency.rc')
@ -56,10 +56,10 @@ if (open my $fh, '>', 'urgency.rc')
# calculated.
# priority
qx{../src/task rc:urgency.rc add control}; # 1
qx{../src/task rc:urgency.rc add 1a pri:H}; # 2
qx{../src/task rc:urgency.rc add 1b pri:M}; # 3
qx{../src/task rc:urgency.rc add 1c pri:L}; # 4
qx{../src/task rc:urgency.rc add control}; # task 1
qx{../src/task rc:urgency.rc add 1a pri:H}; # task 2
qx{../src/task rc:urgency.rc add 1b pri:M}; # task 3
qx{../src/task rc:urgency.rc add 1c pri:L}; # task 4
# priority: 10 (pending)
my $output = qx{../src/task rc:urgency.rc 1 _urgency};
@ -78,26 +78,26 @@ $output = qx{../src/task rc:urgency.rc 4 _urgency};
like ($output, qr/urgency 13$/ms, 'pri:L = 13');
# project: 10 (project) + 10 (pending)
qx{../src/task rc:urgency.rc add 2a project:P}; # 5
qx{../src/task rc:urgency.rc add 2a project:P}; # task 5
$output = qx{../src/task rc:urgency.rc 5 _urgency};
like ($output, qr/urgency 20$/ms, 'pro:P = 20');
# active: 10 (active) + 10 (pending)
qx{../src/task rc:urgency.rc add 3a}; # 6
qx{../src/task rc:urgency.rc add 3a}; # task 6
qx{../src/task rc:urgency.rc 6 start};
$output = qx{../src/task rc:urgency.rc 6 _urgency};
like ($output, qr/urgency 20$/ms, 'active = 20');
# next: 10 (+next) + 8 (1 tag) + 10 (pending)
qx{../src/task rc:urgency.rc add 4a +next}; # 7
qx{../src/task rc:urgency.rc add 4a +next}; # task 7
$output = qx{../src/task rc:urgency.rc 7 _urgency};
like ($output, qr/urgency 28$/ms, '+next = 28');
# tags
qx{../src/task rc:urgency.rc add 5a +one}; # 8
qx{../src/task rc:urgency.rc add 5b +one +two}; # 9
qx{../src/task rc:urgency.rc add 5c +one +two +three}; # 10
qx{../src/task rc:urgency.rc add 5d +one +two +three +four}; # 11
qx{../src/task rc:urgency.rc add 5a +one}; # task 8
qx{../src/task rc:urgency.rc add 5b +one +two}; # task 9
qx{../src/task rc:urgency.rc add 5c +one +two +three}; # task 10
qx{../src/task rc:urgency.rc add 5d +one +two +three +four}; # task 11
# tags: 8 (1 tag) + 10 (pending)
$output = qx{../src/task rc:urgency.rc 8 _urgency};
@ -116,20 +116,20 @@ $output = qx{../src/task rc:urgency.rc 10 _urgency};
like ($output, qr/urgency 20$/ms, '+one +two +three +four = 20');
# annotations
qx{../src/task rc:urgency.rc add 6a}; # 12
qx{../src/task rc:urgency.rc add 6a}; # task 12
qx{../src/task rc:urgency.rc 12 annotate A};
qx{../src/task rc:urgency.rc add 6b}; # 13
qx{../src/task rc:urgency.rc add 6b}; # task 13
qx{../src/task rc:urgency.rc 13 annotate A};
diag ("6 second delay");
sleep 1;
qx{../src/task rc:urgency.rc 13 annotate B};
qx{../src/task rc:urgency.rc add 6c}; # 14
qx{../src/task rc:urgency.rc add 6c}; # task 14
qx{../src/task rc:urgency.rc 14 annotate A};
sleep 1;
qx{../src/task rc:urgency.rc 14 annotate B};
sleep 1;
qx{../src/task rc:urgency.rc 14 annotate C};
qx{../src/task rc:urgency.rc add 6d}; # 15
qx{../src/task rc:urgency.rc add 6d}; # task 15
qx{../src/task rc:urgency.rc 15 annotate A};
sleep 1;
qx{../src/task rc:urgency.rc 15 annotate B};
@ -155,12 +155,12 @@ $output = qx{../src/task rc:urgency.rc 15 _urgency};
like ($output, qr/urgency 20$/ms, '4 annotations = 20');
# waiting: 10
qx{../src/task rc:urgency.rc add 7a wait:10s}; # 16
qx{../src/task rc:urgency.rc add 7a wait:10s}; # task 16
$output = qx{../src/task rc:urgency.rc 16 _urgency};
like ($output, qr/urgency 0$/ms, 'waiting = 0');
# blocked: 10 (pending) + 10 (blocked)
qx{../src/task rc:urgency.rc add 8a depends:1}; # 17
qx{../src/task rc:urgency.rc add 8a depends:1}; # task 17
$output = qx{../src/task rc:urgency.rc 17 _urgency};
like ($output, qr/urgency 20$/ms, 'blocked = 20');
@ -176,30 +176,30 @@ like ($output, qr/urgency 20$/ms, 'blocking = 20');
# has due date -> 0.3
# no due date -> 0.0
qx{../src/task rc:urgency.rc add 9a due:-10d}; # 18
qx{../src/task rc:urgency.rc add 9b due:-7d}; # 19
qx{../src/task rc:urgency.rc add 9c due:-6d}; # 20
qx{../src/task rc:urgency.rc add 9d due:-5d}; # 21
qx{../src/task rc:urgency.rc add 9e due:-4d}; # 22
qx{../src/task rc:urgency.rc add 9f due:-3d}; # 23
qx{../src/task rc:urgency.rc add 9g due:-2d}; # 24
qx{../src/task rc:urgency.rc add 9h due:-1d}; # 25
qx{../src/task rc:urgency.rc add 9i due:now}; # 26
qx{../src/task rc:urgency.rc add 9j due:25h}; # 27
qx{../src/task rc:urgency.rc add 9k due:49h}; # 28
qx{../src/task rc:urgency.rc add 9l due:73h}; # 29
qx{../src/task rc:urgency.rc add 9m due:97h}; # 30
qx{../src/task rc:urgency.rc add 9n due:121h}; # 31
qx{../src/task rc:urgency.rc add 9o due:145h}; # 32
qx{../src/task rc:urgency.rc add 9p due:169h}; # 33
qx{../src/task rc:urgency.rc add 9q due:193h}; # 34
qx{../src/task rc:urgency.rc add 9r due:217h}; # 35
qx{../src/task rc:urgency.rc add 9s due:241h}; # 36
qx{../src/task rc:urgency.rc add 9t due:265h}; # 37
qx{../src/task rc:urgency.rc add 9u due:289h}; # 38
qx{../src/task rc:urgency.rc add 9v due:313h}; # 39
qx{../src/task rc:urgency.rc add 9w due:337h}; # 40
qx{../src/task rc:urgency.rc add 9x due:361h}; # 41
qx{../src/task rc:urgency.rc add 9a due:-10d}; # task 18
qx{../src/task rc:urgency.rc add 9b due:-7d}; # task 19
qx{../src/task rc:urgency.rc add 9c due:-6d}; # task 20
qx{../src/task rc:urgency.rc add 9d due:-5d}; # task 21
qx{../src/task rc:urgency.rc add 9e due:-4d}; # task 22
qx{../src/task rc:urgency.rc add 9f due:-3d}; # task 23
qx{../src/task rc:urgency.rc add 9g due:-2d}; # task 24
qx{../src/task rc:urgency.rc add 9h due:-1d}; # task 25
qx{../src/task rc:urgency.rc add 9i due:now}; # task 26
qx{../src/task rc:urgency.rc add 9j due:25h}; # task 27
qx{../src/task rc:urgency.rc add 9k due:49h}; # task 28
qx{../src/task rc:urgency.rc add 9l due:73h}; # task 29
qx{../src/task rc:urgency.rc add 9m due:97h}; # task 30
qx{../src/task rc:urgency.rc add 9n due:121h}; # task 31
qx{../src/task rc:urgency.rc add 9o due:145h}; # task 32
qx{../src/task rc:urgency.rc add 9p due:169h}; # task 33
qx{../src/task rc:urgency.rc add 9q due:193h}; # task 34
qx{../src/task rc:urgency.rc add 9r due:217h}; # task 35
qx{../src/task rc:urgency.rc add 9s due:241h}; # task 36
qx{../src/task rc:urgency.rc add 9t due:265h}; # task 37
qx{../src/task rc:urgency.rc add 9u due:289h}; # task 38
qx{../src/task rc:urgency.rc add 9v due:313h}; # task 39
qx{../src/task rc:urgency.rc add 9w due:337h}; # task 40
qx{../src/task rc:urgency.rc add 9x due:361h}; # task 41
# due: 10 (due:-10d) + 10 (pending)
$output = qx{../src/task rc:urgency.rc 18 _urgency};
@ -298,12 +298,12 @@ $output = qx{../src/task rc:urgency.rc 41 _urgency};
like ($output, qr/urgency 11.6$/ms, 'due:20d = 11.6');
# user.project: 10 (pro:PROJECT) + 10 (project) + 10 (pending)
qx{../src/task rc:urgency.rc add 10a project:PROJECT}; # 42
qx{../src/task rc:urgency.rc add 10a project:PROJECT}; # task 42
$output = qx{../src/task rc:urgency.rc 42 _urgency};
like ($output, qr/urgency 30$/ms, 'pro:PROJECT = 30');
# user.tag: 10 (+TAG) + 8 (1 tag) + 10 (pending)
qx{../src/task rc:urgency.rc add 11a +TAG}; # 43
qx{../src/task rc:urgency.rc add 11a +TAG}; # task 43
$output = qx{../src/task rc:urgency.rc 43 _urgency};
like ($output, qr/urgency 28$/ms, '+TAG = 28');
@ -317,6 +317,9 @@ ok (!-r 'completed.data', 'Removed completed.data');
unlink 'undo.data';
ok (!-r 'undo.data', 'Removed undo.data');
unlink 'backlog.data';
ok (!-r 'backlog.data', 'Removed backlog.data');
unlink 'urgency.rc';
ok (!-r 'urgency.rc', 'Removed urgency.rc');