From de5bee43534b10cec6ec3efc2a3a4da8a85d85db Mon Sep 17 00:00:00 2001 From: Paul Beckingham Date: Sun, 28 Aug 2011 17:21:49 -0400 Subject: [PATCH] Bug - Import was not properly handling tags as a JSON array. It assumed it was a string. - Modified roundtrip.t tests so they work. --- src/commands/CmdImport.cpp | 29 +++++++++++++++++++++++++++++ test/roundtrip.t | 37 +++++++++++++------------------------ 2 files changed, 42 insertions(+), 24 deletions(-) diff --git a/src/commands/CmdImport.cpp b/src/commands/CmdImport.cpp index 49158b7ba..c67a6da46 100644 --- a/src/commands/CmdImport.cpp +++ b/src/commands/CmdImport.cpp @@ -123,6 +123,20 @@ int CmdImport::execute (std::string& output) task.set (i->first, d.toEpochString ()); } + // Tags are an array of JSON strings. + else if (i->first == "tags") + { + json::array* tags = (json::array*)i->second; + json_array_iter t; + for (t = tags->_data.begin (); + t != tags->_data.end (); + ++t) + { + json::string* tag = (json::string*)*t; + task.addTag (tag->_data); + } + } + // Other types are simply added. else task.set (i->first, unquoteText (i->second->dump ())); @@ -158,6 +172,21 @@ int CmdImport::execute (std::string& output) task.setAnnotations (annos); } + // TODO Implement + else if (i->first == "parent") + { + } + + // TODO Implement + else if (i->first == "mask") + { + } + + // TODO Implement + else if (i->first == "imask") + { + } + else throw std::string ("Unrecognized attribute '") + i->first + "'"; } diff --git a/test/roundtrip.t b/test/roundtrip.t index 8aaf993f9..51e8caf4f 100755 --- a/test/roundtrip.t +++ b/test/roundtrip.t @@ -28,12 +28,13 @@ use strict; use warnings; -use Test::More tests => 10; +use Test::More tests => 4; # Create the rc file. if (open my $fh, '>', 'roundtrip.rc') { print $fh "data.location=.\n", + "verbose=off\n", "confirmation=no\n", "defaultwidth=100\n"; close $fh; @@ -45,12 +46,12 @@ qx{../src/task rc:roundtrip.rc add priority:H project:A one}; qx{../src/task rc:roundtrip.rc add +tag1 +tag2 two}; # trip 1. -qx{../src/task rc:roundtrip.rc export.yaml > ./roundtrip.txt}; +qx{../src/task rc:roundtrip.rc export > ./roundtrip.txt}; unlink 'pending.data', 'completed.data', 'undo.data'; -qx{../src/task rc:roundtrip.rc import ./roundtrip.txt}; +qx{../src/task rc:roundtrip.rc rc.debug:1 import ./roundtrip.txt}; # trip 2. -qx{../src/task rc:roundtrip.rc export.yaml > ./roundtrip.txt}; +qx{../src/task rc:roundtrip.rc export > ./roundtrip.txt}; unlink 'pending.data', 'completed.data', 'undo.data'; qx{../src/task rc:roundtrip.rc import ./roundtrip.txt}; @@ -65,26 +66,14 @@ like ($output, qr/1.+A.+H.+\d+\/\d+\/\d+.+(?:-|\d+).+one/, '2 round trips like ($output, qr/2.+\d+\/\d+\/\d+.+(?:-|\d+).+tag1\stag2\stwo/, '2 round trips task 2 identical'); # Cleanup. -unlink 'roundtrip.txt'; -ok (!-r 'roundtrip.txt', 'Removed roundtrip.txt'); - -unlink 'pending.data'; -ok (!-r 'pending.data', 'Removed pending.data'); - -unlink 'completed.data'; -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 'synch.key'; -ok (!-r 'synch.key', 'Removed synch.key'); - -unlink 'roundtrip.rc'; -ok (!-r 'roundtrip.rc', 'Removed roundtrip.rc'); +unlink qw(roundtrip.txt pending.data completed.data undo.data backlog.data synch.key roundtrip.rc); +ok (! -r 'roundtrip.txt' && + ! -r 'pending.data' && + ! -r 'completed.data' && + ! -r 'undo.data' && + ! -r 'backlog.data' && + ! -r 'synch_key.data' && + ! -r 'roundtrip.rc', 'Cleanup'); exit 0;