mirror of
https://github.com/GothenburgBitFactory/taskwarrior.git
synced 2025-07-07 20:06:36 +02:00
Bug #1023
- Fixed bug #1023, which applied default.project and default.priority during modification (thanks to Christoph Lange). - Added unit tests. - Added Christoph to the AUTHORS file.
This commit is contained in:
parent
d16f434899
commit
b0b8bfe1d2
6 changed files with 80 additions and 6 deletions
1
AUTHORS
1
AUTHORS
|
@ -144,4 +144,5 @@ suggestions:
|
|||
Bruno Bigras
|
||||
Hyde Stevenson
|
||||
Martin U
|
||||
Christoph Lange
|
||||
|
||||
|
|
|
@ -92,6 +92,8 @@ Bugs
|
|||
that lack description or entry date (thanks to Nicholas Rabenau).
|
||||
+ Fixed bug #1017, which exported invalid JSON when there were no tasks (thanks
|
||||
to Nicholas Rabenau).
|
||||
+ Fixed bug #1023, which applied default.project and default.priority during
|
||||
modification (thanks to Christoph Lange).
|
||||
|
||||
------ old releases ------------------------------
|
||||
|
||||
|
|
|
@ -477,7 +477,7 @@ void TDB2::add (Task& task)
|
|||
void TDB2::modify (Task& task)
|
||||
{
|
||||
// Ensure the task is consistent, and provide defaults if necessary.
|
||||
task.validate ();
|
||||
task.validate (false);
|
||||
|
||||
// Find task, overwrite it.
|
||||
Task original;
|
||||
|
|
|
@ -1066,7 +1066,7 @@ void Task::substitute (
|
|||
// 2) To provide suitable warnings about odd states
|
||||
// 3) To generate errors when the inconsistencies are not fixable
|
||||
//
|
||||
void Task::validate ()
|
||||
void Task::validate (bool applyDefault /* = true */)
|
||||
{
|
||||
Task::status status = getStatus ();
|
||||
|
||||
|
@ -1105,7 +1105,7 @@ void Task::validate ()
|
|||
setEnd ();
|
||||
|
||||
// Override with default.project, if not specified.
|
||||
if (! has ("project"))
|
||||
if (applyDefault && ! has ("project"))
|
||||
{
|
||||
std::string defaultProject = context.config.get ("default.project");
|
||||
if (defaultProject != "" &&
|
||||
|
@ -1114,7 +1114,7 @@ void Task::validate ()
|
|||
}
|
||||
|
||||
// Override with default.priority, if not specified.
|
||||
if (get ("priority") == "")
|
||||
if (applyDefault && get ("priority") == "")
|
||||
{
|
||||
std::string defaultPriority = context.config.get ("default.priority");
|
||||
if (defaultPriority != "" &&
|
||||
|
@ -1123,7 +1123,7 @@ void Task::validate ()
|
|||
}
|
||||
|
||||
// Override with default.due, if not specified.
|
||||
if (get ("due") == "")
|
||||
if (applyDefault && get ("due") == "")
|
||||
{
|
||||
std::string defaultDue = context.config.get ("default.due");
|
||||
if (defaultDue != "" &&
|
||||
|
|
|
@ -102,7 +102,7 @@ public:
|
|||
|
||||
void substitute (const std::string&, const std::string&, bool);
|
||||
|
||||
void validate ();
|
||||
void validate (bool applyDefault = true);
|
||||
|
||||
float urgency_c () const;
|
||||
float urgency ();
|
||||
|
|
71
test/bug.1023.t
Executable file
71
test/bug.1023.t
Executable file
|
@ -0,0 +1,71 @@
|
|||
#! /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 => 7;
|
||||
|
||||
# Create the rc file.
|
||||
if (open my $fh, '>', 'bug.rc')
|
||||
{
|
||||
print $fh "data.location=.\n",
|
||||
"default.project=home\n";
|
||||
close $fh;
|
||||
ok (-r 'bug.rc', 'Created bug.rc');
|
||||
}
|
||||
|
||||
# Bug 1023: rc.default.project gets applied during modify, and should not.
|
||||
qx{../src/task rc:bug.rc add foo project:garden 2>&1};
|
||||
qx{../src/task rc:bug.rc add bar 2>&1};
|
||||
qx{../src/task rc:bug.rc add baz rc.default.project= 2>&1};
|
||||
|
||||
my $output = qx{../src/task rc:bug.rc 1 info 2>&1};
|
||||
like ($output, qr/Project\s*garden/, "default project not applied when otherwise specified.");
|
||||
|
||||
$output = qx{../src/task rc:bug.rc 2 info 2>&1};
|
||||
like ($output, qr/Project\s*home/, "default project applied when blank.");
|
||||
|
||||
$output = qx{../src/task rc:bug.rc 3 modify +tag 2>&1};
|
||||
unlike ($output, qr/Project\s*home/, "default project not applied on modification.");
|
||||
|
||||
qx{../src/task rc:bug.rc 1 modify project: 2>&1};
|
||||
$output = qx{../src/task rc:bug.rc 1 info 2>&1};
|
||||
unlike ($output, qr/Project\s*garden/, "default project not re-applied on attribute removal.");
|
||||
unlike ($output, qr/Project\s*home/, "default project not re-applied on attribute removal.");
|
||||
|
||||
# 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;
|
||||
|
Loading…
Add table
Add a link
Reference in a new issue