- 'task projects' discard now newly deleted tasks and it includes only filtered
  tasks for its summary.
This commit is contained in:
Louis-Claude Canon 2012-07-27 11:30:24 +02:00 committed by Paul Beckingham
parent 154d99385a
commit 0857b451d6
3 changed files with 73 additions and 2 deletions

View file

@ -12,6 +12,8 @@ Bugs
each changes also. each changes also.
+ Fixed bug #1042, where the 'diagnostics' command failed to detect missing + Fixed bug #1042, where the 'diagnostics' command failed to detect missing
external utilities on Solaris and NetBSD external utilities on Solaris and NetBSD
+ Fixed bug #1044, where 'task projects' considers newly deleted tasks and
provides an incorrect summary.
------ old releases ------------------------------ ------ old releases ------------------------------

View file

@ -65,14 +65,14 @@ int CmdProjects::execute (std::string& output)
tasks.push_back (*task); tasks.push_back (*task);
} }
int quantity = tasks.size ();
context.tdb2.commit (); context.tdb2.commit ();
// Apply filter. // Apply filter.
std::vector <Task> filtered; std::vector <Task> filtered;
filter (tasks, filtered); filter (tasks, filtered);
int quantity = filtered.size ();
std::stringstream out; std::stringstream out;
// Scan all the tasks for their project name, building a map using project // Scan all the tasks for their project name, building a map using project
@ -88,6 +88,12 @@ int CmdProjects::execute (std::string& output)
std::vector <Task>::iterator task; std::vector <Task>::iterator task;
for (task = filtered.begin (); task != filtered.end (); ++task) for (task = filtered.begin (); task != filtered.end (); ++task)
{ {
if (task->getStatus () == Task::deleted)
{
--quantity;
continue;
}
project = task->get ("project"); project = task->get ("project");
priority = task->get ("priority"); priority = task->get ("priority");

63
test/bug.1044.t Executable file
View file

@ -0,0 +1,63 @@
#! /usr/bin/perl
################################################################################
## taskwarrior - a command line task list manager.
##
## Copyright 2006-2012, Paul Beckingham, Federico Hernandez.
##
## Permission is hereby granted, free of charge, to any person obtaining a copy
## of this software and associated documentation files (the "Software"), to deal
## in the Software without restriction, including without limitation the rights
## to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
## copies of the Software, and to permit persons to whom the Software is
## furnished to do so, subject to the following conditions:
##
## The above copyright notice and this permission notice shall be included
## in all copies or substantial portions of the Software.
##
## THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS
## OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
## FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL
## THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
## LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
## OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
## SOFTWARE.
##
## http://www.opensource.org/licenses/mit-license.php
##
################################################################################
use strict;
use warnings;
use Test::More tests => 3;
# Create the rc file.
if (open my $fh, '>', 'bug.rc')
{
print $fh "data.location=.\n",
"confirmation=off\n";
close $fh;
ok (-r 'bug.rc', 'Created bug.rc');
}
# Bug #1044: 'task projects' considers newly deleted tasks and provides an
# incorrect summary
# Check that until attribute may be modified
qx{../src/task rc:bug.rc add project:A 1 2>&1};
qx{../src/task rc:bug.rc add project:B 2 2>&1};
qx{../src/task rc:bug.rc add project:B 3 2>&1};
qx{../src/task rc:bug.rc 3 delete 2>&1};
my $output = qx{../src/task rc:bug.rc project:B projects 2>&1};
like ($output, qr/^1 project \(1 task\)$/ms, 'Summary filtered new deleted task 3 and project A');
# Cleanup.
unlink qw(pending.data completed.data undo.data backlog.data synch.key bug.rc);
ok (! -r 'pending.data' &&
! -r 'completed.data' &&
! -r 'undo.data' &&
! -r 'backlog.data' &&
! -r 'synch.key' &&
! -r 'bug.rc', 'Cleanup');
exit 0;