diff --git a/test/tag.t b/test/tag.t index 72baa5faa..29f2e4baa 100755 --- a/test/tag.t +++ b/test/tag.t @@ -27,44 +27,123 @@ use strict; use warnings; -use Test::More tests => 6; +use Test::More tests => 30; # Ensure environment has no influence. delete $ENV{'TASKDATA'}; delete $ENV{'TASKRC'}; +use File::Basename; +my $ut = basename ($0); +my $rc = $ut . '.rc'; + # Create the rc file. -if (open my $fh, '>', 'tag.rc') +if (open my $fh, '>', $rc) { - print $fh "data.location=.\n"; + print $fh "data.location=.\n", + "confirmation=off\n", + "verbose=nothing\n"; close $fh; } # Add task with tags. -my $output = qx{../src/task rc:tag.rc add +one This +two is a test +three 2>&1; ../src/task rc:tag.rc info 1 2>&1}; -like ($output, qr/^Tags\s+one two three\n/m, 'tags found'); +my $output = qx{../src/task rc:$rc add +one This +two is a test +three 2>&1; ../src/task rc:$rc info 1 2>&1}; +like ($output, qr/^Tags\s+one two three\n/m, "$ut: tags found"); # Remove tags. -$output = qx{../src/task rc:tag.rc 1 modify -three -two -one 2>&1; ../src/task rc:tag.rc info 1 2>&1}; -unlike ($output, qr/^Tags/m, '-three -two -one tag removed'); +$output = qx{../src/task rc:$rc 1 modify -three -two -one 2>&1; ../src/task rc:$rc info 1 2>&1}; +unlike ($output, qr/^Tags/m, "$ut: -three -two -one tag removed"); # Add tags. -$output = qx{../src/task rc:tag.rc 1 modify +four +five +six 2>&1; ../src/task rc:tag.rc info 1 2>&1}; -like ($output, qr/^Tags\s+four five six\n/m, 'tags found'); +$output = qx{../src/task rc:$rc 1 modify +four +five +six 2>&1; ../src/task rc:$rc info 1 2>&1}; +like ($output, qr/^Tags\s+four five six\n/m, "$ut: tags found"); # Remove tags. -$output = qx{../src/task rc:tag.rc 1 modify -four -five -six 2>&1; ../src/task rc:tag.rc info 1 2>&1}; -unlike ($output, qr/^Tags/m, '-four -five -six tag removed'); +$output = qx{../src/task rc:$rc 1 modify -four -five -six 2>&1; ../src/task rc:$rc info 1 2>&1}; +unlike ($output, qr/^Tags/m, "$ut: -four -five -six tag removed"); # Add and remove tags. -$output = qx{../src/task rc:tag.rc 1 modify +duplicate -duplicate 2>&1; ../src/task rc:tag.rc info 1 2>&1}; -unlike ($output, qr/^Tags/m, '+duplicate -duplicate NOP'); +$output = qx{../src/task rc:$rc 1 modify +duplicate -duplicate 2>&1; ../src/task rc:$rc info 1 2>&1}; +unlike ($output, qr/^Tags/m, "$ut: +duplicate -duplicate NOP"); # Remove missing tag. -$output = qx{../src/task rc:tag.rc 1 modify -missing 2>&1; ../src/task rc:tag.rc info 1 2>&1}; -unlike ($output, qr/^Tags/m, '-missing NOP'); +$output = qx{../src/task rc:$rc 1 modify -missing 2>&1; ../src/task rc:$rc info 1 2>&1}; +unlike ($output, qr/^Tags/m, "$ut: -missing NOP"); + +# Virtual tag testing. +qx{../src/task rc:$rc log completed 2>&1}; +qx{../src/task rc:$rc add deleted 2>&1; ../src/task rc:$rc 2 delete 2>&1}; +qx{../src/task rc:$rc add minimal 2>&1}; +qx{../src/task rc:$rc add maximal +tag pro:PRO pri:H due:yesterday 2>&1}; +qx{../src/task rc:$rc 4 start 2>&1}; +qx{../src/task rc:$rc add blocked depends:1 2>&1}; +qx{../src/task rc:$rc add due_eom due:eom 2>&1}; +qx{../src/task rc:$rc add due_eow due:eow 2>&1}; +diag ('---'); +diag (qx{../src/task rc:$rc all 2>&1}); +diag ('---'); + +$output = qx{../src/task rc:$rc +COMPLETED all}; +like ($output, qr/completed/, "$ut: +COMPLETED"); +$output = qx{../src/task rc:$rc -COMPLETED all}; +unlike ($output, qr/completed/, "$ut: -COMPLETED"); + +$output = qx{../src/task rc:$rc +DELETED all}; +like ($output, qr/deleted/, "$ut: +DELETED"); +$output = qx{../src/task rc:$rc -DELETED all}; +unlike ($output, qr/deleted/, "$ut: -DELETED"); + +$output = qx{../src/task rc:$rc +PENDING all}; +like ($output, qr/minimal/, "$ut: +PENDING"); +$output = qx{../src/task rc:$rc -PENDING all}; +unlike ($output, qr/minimal/, "$ut: -PENDING"); + +$output = qx{../src/task rc:$rc +TAGGED list}; +like ($output, qr/maximal/, "$ut: +TAGGED"); +$output = qx{../src/task rc:$rc -TAGGED list}; +unlike ($output, qr/maximal/, "$ut: -TAGGED"); + +$output = qx{../src/task rc:$rc +OVERDUE list}; +like ($output, qr/maximal/, "$ut: +OVERDUE"); +$output = qx{../src/task rc:$rc -OVERDUE list}; +unlike ($output, qr/maximal/, "$ut: -OVERDUE"); + +$output = qx{../src/task rc:$rc +BLOCKED list}; +like ($output, qr/blocked/, "$ut: +BLOCKED"); +$output = qx{../src/task rc:$rc -BLOCKED list}; +unlike ($output, qr/blocked/, "$ut: -BLOCKED"); + +$output = qx{../src/task rc:$rc +BLOCKING list}; +like ($output, qr/This is a test/, "$ut: +BLOCKING"); +$output = qx{../src/task rc:$rc -BLOCKING list}; +unlike ($output, qr/This is a test/, "$ut: -BLOCKING"); + +$output = qx{../src/task rc:$rc +UNBLOCKED list}; +like ($output, qr/minimal/, "$ut: +UNBLOCKED"); +$output = qx{../src/task rc:$rc -UNBLOCKED list}; +unlike ($output, qr/minimal/, "$ut: -UNBLOCKED"); + +$output = qx{../src/task rc:$rc +YEAR list}; +like ($output, qr/due_eom/, "$ut: +YEAR"); +$output = qx{../src/task rc:$rc -YEAR list}; +unlike ($output, qr/due_eom/, "$ut: -YEAR"); + +$output = qx{../src/task rc:$rc +MONTH list}; +like ($output, qr/due_eom/, "$ut: +MONTH"); +$output = qx{../src/task rc:$rc -MONTH list}; +unlike ($output, qr/due_eom/, "$ut: -MONTH"); + +$output = qx{../src/task rc:$rc +WEEK list}; +like ($output, qr/due_eow/, "$ut: +WEEK"); +$output = qx{../src/task rc:$rc -WEEK list}; +unlike ($output, qr/due_eow/, "$ut: -WEEK"); + +$output = qx{../src/task rc:$rc +ACTIVE list}; +like ($output, qr/maximal/, "$ut: +ACTIVE"); +$output = qx{../src/task rc:$rc -ACTIVE list}; +unlike ($output, qr/maximal/, "$ut: -ACTIVE"); # Cleanup. -unlink qw(pending.data completed.data undo.data backlog.data tag.rc); +unlink qw(pending.data completed.data undo.data backlog.data), $rc; exit 0;