From 30034f057b61b0f5b91cb58fe1ff469e4cbf59cd Mon Sep 17 00:00:00 2001 From: Paul Beckingham Date: Sat, 13 Aug 2011 16:24:07 -0400 Subject: [PATCH] Bug - A3::extract_modifications - Broadened the list of argument categories that are downgraded to 'word' for the purpose of task modification. --- src/A3.cpp | 2 +- src/commands/Command.cpp | 18 +++++++- test/urgency.t | 91 +++++++++++++++++++++------------------- 3 files changed, 64 insertions(+), 47 deletions(-) diff --git a/src/A3.cpp b/src/A3.cpp index 435e0d7d2..910b7584d 100644 --- a/src/A3.cpp +++ b/src/A3.cpp @@ -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); diff --git a/src/commands/Command.cpp b/src/commands/Command.cpp index f8bbf3db5..882e03ba3 100644 --- a/src/commands/Command.cpp +++ b/src/commands/Command.cpp @@ -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; + } } } diff --git a/test/urgency.t b/test/urgency.t index 74ca69091..4e95d45ec 100755 --- a/test/urgency.t +++ b/test/urgency.t @@ -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');