- Added 'modified' attribute in ::validate, if not already present. This is not
  strictly necessary, but it is good to be explicit.
This commit is contained in:
Paul Beckingham 2014-09-07 23:24:07 -04:00
parent 5ce317bb48
commit fe549094e3
3 changed files with 46 additions and 36 deletions

View file

@ -184,9 +184,9 @@ std::string Task::statusToText (Task::status s)
//////////////////////////////////////////////////////////////////////////////// ////////////////////////////////////////////////////////////////////////////////
void Task::setEntry () void Task::setEntry ()
{ {
char entryTime[16]; char now[16];
sprintf (entryTime, "%u", (unsigned int) time (NULL)); sprintf (now, "%u", (unsigned int) time (NULL));
set ("entry", entryTime); set ("entry", now);
recalc_urgency = true; recalc_urgency = true;
} }
@ -194,9 +194,9 @@ void Task::setEntry ()
//////////////////////////////////////////////////////////////////////////////// ////////////////////////////////////////////////////////////////////////////////
void Task::setEnd () void Task::setEnd ()
{ {
char endTime[16]; char now[16];
sprintf (endTime, "%u", (unsigned int) time (NULL)); sprintf (now, "%u", (unsigned int) time (NULL));
set ("end", endTime); set ("end", now);
recalc_urgency = true; recalc_urgency = true;
} }
@ -204,9 +204,9 @@ void Task::setEnd ()
//////////////////////////////////////////////////////////////////////////////// ////////////////////////////////////////////////////////////////////////////////
void Task::setStart () void Task::setStart ()
{ {
char startTime[16]; char now[16];
sprintf (startTime, "%u", (unsigned int) time (NULL)); sprintf (now, "%u", (unsigned int) time (NULL));
set ("start", startTime); set ("start", now);
recalc_urgency = true; recalc_urgency = true;
} }
@ -1492,6 +1492,10 @@ void Task::validate (bool applyDefault /* = true */)
(! has ("end") || get ("end") == "")) (! has ("end") || get ("end") == ""))
setEnd (); setEnd ();
// Provide an entry date unless user already specified one.
if (!has ("modified") || get ("modified") == "")
setModified ();
if (applyDefault) if (applyDefault)
{ {
// Override with default.project, if not specified. // Override with default.project, if not specified.

View file

@ -27,17 +27,21 @@
use strict; use strict;
use warnings; use warnings;
use Test::More tests => 20; use Test::More tests => 22;
# Ensure environment has no influence. # Ensure environment has no influence.
delete $ENV{'TASKDATA'}; delete $ENV{'TASKDATA'};
delete $ENV{'TASKRC'}; delete $ENV{'TASKRC'};
use File::Basename;
my $ut = basename ($0);
my $rc = $ut . '.rc';
my $source_dir = $0; my $source_dir = $0;
$source_dir =~ s{[^/]+$}{..}; $source_dir =~ s{[^/]+$}{..};
# Create the rc file. # Create the rc file.
if (open my $fh, '>', 'export.rc') if (open my $fh, '>', $rc)
{ {
print $fh "data.location=.\n", print $fh "data.location=.\n",
"verbose=no\n"; "verbose=no\n";
@ -46,10 +50,10 @@ if (open my $fh, '>', 'export.rc')
# Add two tasks, export, examine result. # Add two tasks, export, examine result.
# TODO Add annotations. # TODO Add annotations.
qx{../src/task rc:export.rc add priority:H project:A one 2>&1}; qx{../src/task rc:$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 +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; my @lines;
if (open my $fh, '<', './export.txt') if (open my $fh, '<', './export.txt')
{ {
@ -57,28 +61,30 @@ if (open my $fh, '<', './export.txt')
close $fh; close $fh;
} }
like ($lines[0], qr/^\%YAML 1\.1$/, 'export YAML line 1'); like ($lines[0], qr/^\%YAML 1\.1$/, "$ut: export YAML line 1");
like ($lines[1], qr/^---$/, 'export YAML line 2'); like ($lines[1], qr/^---$/, "$ut: export YAML line 2");
like ($lines[2], qr/^ task:$/, 'export YAML line 3'); like ($lines[2], qr/^ task:$/, "$ut: export YAML line 3");
like ($lines[3], qr/^ description: one$/, 'export YAML line 4'); like ($lines[3], qr/^ description: one$/, "$ut: export YAML line 4");
like ($lines[4], qr/^ entry: \d{8}T\d{6}Z$/, 'export YAML line 5'); like ($lines[4], qr/^ entry: \d{8}T\d{6}Z$/, "$ut: export YAML line 5");
like ($lines[5], qr/^ id: \d+$/, 'export YAML line 6'); like ($lines[5], qr/^ id: \d+$/, "$ut: export YAML line 6");
like ($lines[6], qr/^ priority: H$/, 'export YAML line 7'); like ($lines[6], qr/^ modified: \d{8}T\d{6}Z$/, "$ut: export YAML line 7");
like ($lines[7], qr/^ project: A$/, 'export YAML line 8'); like ($lines[7], qr/^ priority: H$/, "$ut: export YAML line 8");
like ($lines[8], qr/^ status: pending$/, 'export YAML line 9'); like ($lines[8], qr/^ project: A$/, "$ut: export YAML line 9");
like ($lines[9], qr/^ urgency: .+$/, 'export YAML line 10'); like ($lines[9], qr/^ status: pending$/, "$ut: export YAML line 10");
like ($lines[10], qr/^ uuid: .+$/, 'export YAML line 11'); like ($lines[10], qr/^ urgency: .+$/, "$ut: export YAML line 11");
like ($lines[11], qr/^ task:$/, 'export YAML line 12'); like ($lines[11], qr/^ uuid: .+$/, "$ut: export YAML line 12");
like ($lines[12], qr/^ description: two$/, 'export YAML line 13'); like ($lines[12], qr/^ task:$/, "$ut: export YAML line 13");
like ($lines[13], qr/^ entry: \d{8}T\d{6}Z$/, 'export YAML line 14'); like ($lines[13], qr/^ description: two$/, "$ut: export YAML line 14");
like ($lines[14], qr/^ id: \d+$/, 'export YAML line 15'); like ($lines[14], qr/^ entry: \d{8}T\d{6}Z$/, "$ut: export YAML line 15");
like ($lines[15], qr/^ status: pending$/, 'export YAML line 16'); like ($lines[15], qr/^ id: \d+$/, "$ut: export YAML line 16");
like ($lines[16], qr/^ tags: tag1,tag2$/, 'export YAML line 17'); like ($lines[16], qr/^ modified: \d{8}T\d{6}Z$/, "$ut: export YAML line 17");
like ($lines[17], qr/^ urgency: .+$/, 'export YAML line 18'); like ($lines[17], qr/^ status: pending$/, "$ut: export YAML line 18");
like ($lines[18], qr/^ uuid: .+$/, 'export YAML line 19'); like ($lines[18], qr/^ tags: tag1,tag2$/, "$ut: export YAML line 19");
like ($lines[19], qr/^\.\.\.$/, 'export YAML line 20'); 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. # 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; exit 0;

View file

@ -327,7 +327,7 @@ like ($output, qr/urgency 5$/ms, 'scheduled past = 5');
# urgency values between 0 and 1 # urgency values between 0 and 1
qx {../src/task rc:urgency.rc add 13 pri:H 2>&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}; $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. # Cleanup.
unlink qw(pending.data completed.data undo.data backlog.data urgency.rc); unlink qw(pending.data completed.data undo.data backlog.data urgency.rc);