From fe549094e31defd027e1edc28e97cecc966795e2 Mon Sep 17 00:00:00 2001 From: Paul Beckingham Date: Sun, 7 Sep 2014 23:24:07 -0400 Subject: [PATCH] Task - Added 'modified' attribute in ::validate, if not already present. This is not strictly necessary, but it is good to be explicit. --- src/Task.cpp | 22 +++++++++++------- test/export.yaml.t | 58 +++++++++++++++++++++++++--------------------- test/urgency.t | 2 +- 3 files changed, 46 insertions(+), 36 deletions(-) diff --git a/src/Task.cpp b/src/Task.cpp index 9d4aa6f0a..5798515cb 100644 --- a/src/Task.cpp +++ b/src/Task.cpp @@ -184,9 +184,9 @@ std::string Task::statusToText (Task::status s) //////////////////////////////////////////////////////////////////////////////// void Task::setEntry () { - char entryTime[16]; - sprintf (entryTime, "%u", (unsigned int) time (NULL)); - set ("entry", entryTime); + char now[16]; + sprintf (now, "%u", (unsigned int) time (NULL)); + set ("entry", now); recalc_urgency = true; } @@ -194,9 +194,9 @@ void Task::setEntry () //////////////////////////////////////////////////////////////////////////////// void Task::setEnd () { - char endTime[16]; - sprintf (endTime, "%u", (unsigned int) time (NULL)); - set ("end", endTime); + char now[16]; + sprintf (now, "%u", (unsigned int) time (NULL)); + set ("end", now); recalc_urgency = true; } @@ -204,9 +204,9 @@ void Task::setEnd () //////////////////////////////////////////////////////////////////////////////// void Task::setStart () { - char startTime[16]; - sprintf (startTime, "%u", (unsigned int) time (NULL)); - set ("start", startTime); + char now[16]; + sprintf (now, "%u", (unsigned int) time (NULL)); + set ("start", now); recalc_urgency = true; } @@ -1492,6 +1492,10 @@ void Task::validate (bool applyDefault /* = true */) (! has ("end") || get ("end") == "")) setEnd (); + // Provide an entry date unless user already specified one. + if (!has ("modified") || get ("modified") == "") + setModified (); + if (applyDefault) { // Override with default.project, if not specified. diff --git a/test/export.yaml.t b/test/export.yaml.t index 1c826374b..e7c2a2dd3 100755 --- a/test/export.yaml.t +++ b/test/export.yaml.t @@ -27,17 +27,21 @@ use strict; use warnings; -use Test::More tests => 20; +use Test::More tests => 22; # Ensure environment has no influence. delete $ENV{'TASKDATA'}; delete $ENV{'TASKRC'}; +use File::Basename; +my $ut = basename ($0); +my $rc = $ut . '.rc'; + my $source_dir = $0; $source_dir =~ s{[^/]+$}{..}; # Create the rc file. -if (open my $fh, '>', 'export.rc') +if (open my $fh, '>', $rc) { print $fh "data.location=.\n", "verbose=no\n"; @@ -46,10 +50,10 @@ if (open my $fh, '>', 'export.rc') # Add two tasks, export, examine result. # TODO Add annotations. -qx{../src/task rc:export.rc add priority:H project:A one 2>&1}; -qx{../src/task rc:export.rc add +tag1 +tag2 two 2>&1}; +qx{../src/task rc:$rc add priority:H project:A one 2>&1}; +qx{../src/task rc:$rc add +tag1 +tag2 two 2>&1}; -my $output = qx{../src/task rc:export.rc export | $source_dir/scripts/add-ons/export-yaml.pl > ./export.txt 2>&1}; +my $output = qx{../src/task rc:$rc export | $source_dir/scripts/add-ons/export-yaml.pl > ./export.txt 2>&1}; my @lines; if (open my $fh, '<', './export.txt') { @@ -57,28 +61,30 @@ if (open my $fh, '<', './export.txt') close $fh; } -like ($lines[0], qr/^\%YAML 1\.1$/, 'export YAML line 1'); -like ($lines[1], qr/^---$/, 'export YAML line 2'); -like ($lines[2], qr/^ task:$/, 'export YAML line 3'); -like ($lines[3], qr/^ description: one$/, 'export YAML line 4'); -like ($lines[4], qr/^ entry: \d{8}T\d{6}Z$/, 'export YAML line 5'); -like ($lines[5], qr/^ id: \d+$/, 'export YAML line 6'); -like ($lines[6], qr/^ priority: H$/, 'export YAML line 7'); -like ($lines[7], qr/^ project: A$/, 'export YAML line 8'); -like ($lines[8], qr/^ status: pending$/, 'export YAML line 9'); -like ($lines[9], qr/^ urgency: .+$/, 'export YAML line 10'); -like ($lines[10], qr/^ uuid: .+$/, 'export YAML line 11'); -like ($lines[11], qr/^ task:$/, 'export YAML line 12'); -like ($lines[12], qr/^ description: two$/, 'export YAML line 13'); -like ($lines[13], qr/^ entry: \d{8}T\d{6}Z$/, 'export YAML line 14'); -like ($lines[14], qr/^ id: \d+$/, 'export YAML line 15'); -like ($lines[15], qr/^ status: pending$/, 'export YAML line 16'); -like ($lines[16], qr/^ tags: tag1,tag2$/, 'export YAML line 17'); -like ($lines[17], qr/^ urgency: .+$/, 'export YAML line 18'); -like ($lines[18], qr/^ uuid: .+$/, 'export YAML line 19'); -like ($lines[19], qr/^\.\.\.$/, 'export YAML line 20'); +like ($lines[0], qr/^\%YAML 1\.1$/, "$ut: export YAML line 1"); +like ($lines[1], qr/^---$/, "$ut: export YAML line 2"); +like ($lines[2], qr/^ task:$/, "$ut: export YAML line 3"); +like ($lines[3], qr/^ description: one$/, "$ut: export YAML line 4"); +like ($lines[4], qr/^ entry: \d{8}T\d{6}Z$/, "$ut: export YAML line 5"); +like ($lines[5], qr/^ id: \d+$/, "$ut: export YAML line 6"); +like ($lines[6], qr/^ modified: \d{8}T\d{6}Z$/, "$ut: export YAML line 7"); +like ($lines[7], qr/^ priority: H$/, "$ut: export YAML line 8"); +like ($lines[8], qr/^ project: A$/, "$ut: export YAML line 9"); +like ($lines[9], qr/^ status: pending$/, "$ut: export YAML line 10"); +like ($lines[10], qr/^ urgency: .+$/, "$ut: export YAML line 11"); +like ($lines[11], qr/^ uuid: .+$/, "$ut: export YAML line 12"); +like ($lines[12], qr/^ task:$/, "$ut: export YAML line 13"); +like ($lines[13], qr/^ description: two$/, "$ut: export YAML line 14"); +like ($lines[14], qr/^ entry: \d{8}T\d{6}Z$/, "$ut: export YAML line 15"); +like ($lines[15], qr/^ id: \d+$/, "$ut: export YAML line 16"); +like ($lines[16], qr/^ modified: \d{8}T\d{6}Z$/, "$ut: export YAML line 17"); +like ($lines[17], qr/^ status: pending$/, "$ut: export YAML line 18"); +like ($lines[18], qr/^ tags: tag1,tag2$/, "$ut: export YAML line 19"); +like ($lines[19], qr/^ urgency: .+$/, "$ut: export YAML line 20"); +like ($lines[20], qr/^ uuid: .+$/, "$ut: export YAML line 21"); +like ($lines[21], qr/^\.\.\.$/, "$ut: export YAML line 22"); # Cleanup. -unlink qw(pending.data completed.data undo.data backlog.data export.rc export.txt); +unlink qw(pending.data completed.data undo.data backlog.data export.txt), $rc; exit 0; diff --git a/test/urgency.t b/test/urgency.t index d2ff27255..f1be968f8 100755 --- a/test/urgency.t +++ b/test/urgency.t @@ -327,7 +327,7 @@ like ($output, qr/urgency 5$/ms, 'scheduled past = 5'); # urgency values between 0 and 1 qx {../src/task rc:urgency.rc add 13 pri:H 2>&1}; $output = qx{../src/task rc:urgency.rc rc.urgency.priority.coefficient:0.01234 46 info 2>&1}; -like ($output, qr/Urgency 0\.01$/ms, 'near-zero urgency is truncated'); +like ($output, qr/Urgency\s+0\.01$/ms, 'near-zero urgency is truncated'); # Cleanup. unlink qw(pending.data completed.data undo.data backlog.data urgency.rc);