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
|
Bruno Bigras
|
||||||
Hyde Stevenson
|
Hyde Stevenson
|
||||||
Martin U
|
Martin U
|
||||||
|
Christoph Lange
|
||||||
|
|
||||||
|
|
|
@ -92,6 +92,8 @@ Bugs
|
||||||
that lack description or entry date (thanks to Nicholas Rabenau).
|
that lack description or entry date (thanks to Nicholas Rabenau).
|
||||||
+ Fixed bug #1017, which exported invalid JSON when there were no tasks (thanks
|
+ Fixed bug #1017, which exported invalid JSON when there were no tasks (thanks
|
||||||
to Nicholas Rabenau).
|
to Nicholas Rabenau).
|
||||||
|
+ Fixed bug #1023, which applied default.project and default.priority during
|
||||||
|
modification (thanks to Christoph Lange).
|
||||||
|
|
||||||
------ old releases ------------------------------
|
------ old releases ------------------------------
|
||||||
|
|
||||||
|
|
|
@ -477,7 +477,7 @@ void TDB2::add (Task& task)
|
||||||
void TDB2::modify (Task& task)
|
void TDB2::modify (Task& task)
|
||||||
{
|
{
|
||||||
// Ensure the task is consistent, and provide defaults if necessary.
|
// Ensure the task is consistent, and provide defaults if necessary.
|
||||||
task.validate ();
|
task.validate (false);
|
||||||
|
|
||||||
// Find task, overwrite it.
|
// Find task, overwrite it.
|
||||||
Task original;
|
Task original;
|
||||||
|
|
|
@ -1066,7 +1066,7 @@ void Task::substitute (
|
||||||
// 2) To provide suitable warnings about odd states
|
// 2) To provide suitable warnings about odd states
|
||||||
// 3) To generate errors when the inconsistencies are not fixable
|
// 3) To generate errors when the inconsistencies are not fixable
|
||||||
//
|
//
|
||||||
void Task::validate ()
|
void Task::validate (bool applyDefault /* = true */)
|
||||||
{
|
{
|
||||||
Task::status status = getStatus ();
|
Task::status status = getStatus ();
|
||||||
|
|
||||||
|
@ -1105,7 +1105,7 @@ void Task::validate ()
|
||||||
setEnd ();
|
setEnd ();
|
||||||
|
|
||||||
// Override with default.project, if not specified.
|
// Override with default.project, if not specified.
|
||||||
if (! has ("project"))
|
if (applyDefault && ! has ("project"))
|
||||||
{
|
{
|
||||||
std::string defaultProject = context.config.get ("default.project");
|
std::string defaultProject = context.config.get ("default.project");
|
||||||
if (defaultProject != "" &&
|
if (defaultProject != "" &&
|
||||||
|
@ -1114,7 +1114,7 @@ void Task::validate ()
|
||||||
}
|
}
|
||||||
|
|
||||||
// Override with default.priority, if not specified.
|
// Override with default.priority, if not specified.
|
||||||
if (get ("priority") == "")
|
if (applyDefault && get ("priority") == "")
|
||||||
{
|
{
|
||||||
std::string defaultPriority = context.config.get ("default.priority");
|
std::string defaultPriority = context.config.get ("default.priority");
|
||||||
if (defaultPriority != "" &&
|
if (defaultPriority != "" &&
|
||||||
|
@ -1123,7 +1123,7 @@ void Task::validate ()
|
||||||
}
|
}
|
||||||
|
|
||||||
// Override with default.due, if not specified.
|
// Override with default.due, if not specified.
|
||||||
if (get ("due") == "")
|
if (applyDefault && get ("due") == "")
|
||||||
{
|
{
|
||||||
std::string defaultDue = context.config.get ("default.due");
|
std::string defaultDue = context.config.get ("default.due");
|
||||||
if (defaultDue != "" &&
|
if (defaultDue != "" &&
|
||||||
|
|
|
@ -102,7 +102,7 @@ public:
|
||||||
|
|
||||||
void substitute (const std::string&, const std::string&, bool);
|
void substitute (const std::string&, const std::string&, bool);
|
||||||
|
|
||||||
void validate ();
|
void validate (bool applyDefault = true);
|
||||||
|
|
||||||
float urgency_c () const;
|
float urgency_c () const;
|
||||||
float urgency ();
|
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