From f4bfa1b2fddd79ff4bf57665593d27bf65299072 Mon Sep 17 00:00:00 2001 From: Paul Beckingham Date: Sun, 29 Apr 2012 00:27:56 -0400 Subject: [PATCH] Bug #995 - Fixed bug #995, which mis-parsed UUIDs in filters as other elements (thanks to Bryce Harrington). - Nibbler no longer permits 8-character UUID abbreviations, because too often they resemble other forms, such as '1111111d' which looks like a duration. - Modified unit tests accordingly. --- ChangeLog | 2 ++ src/A3.cpp | 26 +++++++++++++------------- src/Nibbler.cpp | 2 +- test/bug.954.t | 3 --- test/feature.891.t | 2 +- test/nibbler.t.cpp | 15 +++++---------- 6 files changed, 22 insertions(+), 28 deletions(-) diff --git a/ChangeLog b/ChangeLog index 66db3fed5..94debe73f 100644 --- a/ChangeLog +++ b/ChangeLog @@ -28,6 +28,8 @@ Bugs clearly stated (thanks to Louis-Claude Canon). + Applied patch for bug #991, which removes an obsolete consistency check (thanks to Louis-Claude Canon). + + Fixed bug #995, which mis-parsed UUIDs in filters as other elements (thanks + to Bryce Harrington). + Fixed bug #997, so that output is correctly conrolled by the 'affected' verbosity token. + Fixed grammar in feedback string (thanks to Uli Martens). diff --git a/src/A3.cpp b/src/A3.cpp index 6f3889f03..15a7689c4 100644 --- a/src/A3.cpp +++ b/src/A3.cpp @@ -739,6 +739,19 @@ const A3 A3::tokenize (const A3& input) const found_something_after_sequence = true; } + else if (is_uuid (n, s)) + { + if (found_something_after_sequence) + { + output.push_back (Arg (s, Arg::type_string, Arg::cat_literal)); + } + else + { + output.push_back (Arg (s, Arg::type_string, Arg::cat_uuid)); + found_sequence = true; + } + } + // Must be higher than number. // Must be higher than operator. // Note that Nibbler::getDate does not read durations. @@ -809,19 +822,6 @@ const A3 A3::tokenize (const A3& input) const found_something_after_sequence = true; } - else if (is_uuid (n, s)) - { - if (found_something_after_sequence) - { - output.push_back (Arg (s, Arg::type_string, Arg::cat_literal)); - } - else - { - output.push_back (Arg (s, Arg::type_string, Arg::cat_uuid)); - found_sequence = true; - } - } - else if (is_id (n, s)) { if (found_something_after_sequence) diff --git a/src/Nibbler.cpp b/src/Nibbler.cpp index 73d2d47f9..156cf4fbd 100644 --- a/src/Nibbler.cpp +++ b/src/Nibbler.cpp @@ -39,7 +39,7 @@ #endif static const char* _uuid_pattern = "xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx"; -static const unsigned int _uuid_min_length = 8; +static const unsigned int _uuid_min_length = 9; //////////////////////////////////////////////////////////////////////////////// Nibbler::Nibbler () diff --git a/test/bug.954.t b/test/bug.954.t index c4add50c5..a7ec553d4 100755 --- a/test/bug.954.t +++ b/test/bug.954.t @@ -44,7 +44,6 @@ if (open my $fh, '>', 'bug.rc') # - deleting task with UUID 874e146d-07a2-2d2c-7808-a76e74b1a332 # - searching for tasks "foo" and "bar" - qx{../src/task rc:bug.rc add foo}; qx{../src/task rc:bug.rc add bar}; my $output = qx{../src/task rc:bug.rc list}; @@ -56,8 +55,6 @@ $output = qx{../src/task rc:bug.rc list}; like ($output, qr/foo/ms, 'Task foo not deleted'); like ($output, qr/bar/ms, 'Task bar not deleted'); - - # Cleanup. unlink qw(pending.data completed.data undo.data backlog.data synch.key bug.rc); ok (! -r 'pending.data' && diff --git a/test/feature.891.t b/test/feature.891.t index 6e2c1dfd2..ecb7af361 100755 --- a/test/feature.891.t +++ b/test/feature.891.t @@ -157,7 +157,7 @@ like ($output, qr/one/, "Found with $short"); ($short) = $uuid =~ /^(.{8})/; $output = qx{../src/task rc:bug.rc $short list}; -like ($output, qr/one/, "Found with $short"); +unlike ($output, qr/one/, "Not found with $short"); ($short) = $uuid =~ /^(.{7})/; $output = qx{../src/task rc:bug.rc $short list}; diff --git a/test/nibbler.t.cpp b/test/nibbler.t.cpp index 7404cf931..879efa7eb 100644 --- a/test/nibbler.t.cpp +++ b/test/nibbler.t.cpp @@ -39,15 +39,15 @@ int main (int argc, char** argv) { #ifdef NIBBLER_FEATURE_DATE #ifdef NIBBLER_FEATURE_REGEX - UnitTest t (388); + UnitTest t (385); #else - UnitTest t (364); + UnitTest t (361); #endif #else #ifdef NIBBLER_FEATURE_REGEX - UnitTest t (338); + UnitTest t (335); #else - UnitTest t (314); + UnitTest t (311); #endif #endif @@ -490,12 +490,7 @@ int main (int argc, char** argv) t.ok (n.depleted (), "depleted"); n = Nibbler ("a0b1c2d3"); - t.ok (n.getPartialUUID (s), "partial uuid [8] found"); - t.is (s, "a0b1c2d3", "partial uuid [8] -> correct"); - t.ok (n.depleted (), "depleted"); - - n = Nibbler ("a0b1c2d"); - t.notok (n.getPartialUUID (s), "partial uuid [7] not found"); + t.notok (n.getPartialUUID (s), "partial uuid [8] not found"); t.notok (n.depleted (), "not depleted"); // bool getDateISO (time_t&);