Bug #986
- Complete the previous fix: dates in the journal entries are also formatted according to the correct configuration variable. - Add unit tests. Signed-off-by: Paul Beckingham <paul@beckingham.net>
This commit is contained in:
committed by
Paul Beckingham
parent
8b18ee6f50
commit
3440eb0c10
@@ -392,7 +392,7 @@ int CmdInfo::execute (std::string& output)
|
|||||||
|
|
||||||
Task before (previous.substr (4));
|
Task before (previous.substr (4));
|
||||||
Task after (current.substr (4));
|
Task after (current.substr (4));
|
||||||
journal.set (row, 1, taskInfoDifferences (before, after));
|
journal.set (row, 1, taskInfoDifferences (before, after, dateformat));
|
||||||
|
|
||||||
// calculate the total active time
|
// calculate the total active time
|
||||||
if (before.get ("start") == ""
|
if (before.get ("start") == ""
|
||||||
|
|||||||
@@ -168,7 +168,7 @@ std::string taskDifferences (const Task& before, const Task& after)
|
|||||||
}
|
}
|
||||||
|
|
||||||
////////////////////////////////////////////////////////////////////////////////
|
////////////////////////////////////////////////////////////////////////////////
|
||||||
std::string taskInfoDifferences (const Task& before, const Task& after)
|
std::string taskInfoDifferences (const Task& before, const Task& after, const std::string& dateformat)
|
||||||
{
|
{
|
||||||
// Attributes are all there is, so figure the different attribute names
|
// Attributes are all there is, so figure the different attribute names
|
||||||
// between before and after.
|
// between before and after.
|
||||||
@@ -232,7 +232,7 @@ std::string taskInfoDifferences (const Task& before, const Task& after)
|
|||||||
else
|
else
|
||||||
out << format (STRING_FEEDBACK_ATT_WAS_SET,
|
out << format (STRING_FEEDBACK_ATT_WAS_SET,
|
||||||
ucFirst (*name),
|
ucFirst (*name),
|
||||||
renderAttribute (*name, after.get (*name)))
|
renderAttribute (*name, after.get (*name), dateformat))
|
||||||
<< "\n";
|
<< "\n";
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -264,8 +264,8 @@ std::string taskInfoDifferences (const Task& before, const Task& after)
|
|||||||
else
|
else
|
||||||
out << format (STRING_FEEDBACK_ATT_WAS_MOD,
|
out << format (STRING_FEEDBACK_ATT_WAS_MOD,
|
||||||
ucFirst (*name),
|
ucFirst (*name),
|
||||||
renderAttribute (*name, before.get (*name)),
|
renderAttribute (*name, before.get (*name), dateformat),
|
||||||
renderAttribute (*name, after.get (*name)))
|
renderAttribute (*name, after.get (*name), dateformat))
|
||||||
<< "\n";
|
<< "\n";
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -278,7 +278,7 @@ std::string taskInfoDifferences (const Task& before, const Task& after)
|
|||||||
}
|
}
|
||||||
|
|
||||||
////////////////////////////////////////////////////////////////////////////////
|
////////////////////////////////////////////////////////////////////////////////
|
||||||
std::string renderAttribute (const std::string& name, const std::string& value)
|
std::string renderAttribute (const std::string& name, const std::string& value, const std::string& format /* = "" */)
|
||||||
{
|
{
|
||||||
Column* col = context.columns[name];
|
Column* col = context.columns[name];
|
||||||
if (col &&
|
if (col &&
|
||||||
@@ -286,7 +286,14 @@ std::string renderAttribute (const std::string& name, const std::string& value)
|
|||||||
value != "")
|
value != "")
|
||||||
{
|
{
|
||||||
Date d ((time_t)strtol (value.c_str (), NULL, 10));
|
Date d ((time_t)strtol (value.c_str (), NULL, 10));
|
||||||
return d.toString (context.config.get ("dateformat"));
|
if (format == "")
|
||||||
|
{
|
||||||
|
return d.toString (context.config.get ("dateformat"));
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
return d.toString (format);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
return value;
|
return value;
|
||||||
|
|||||||
@@ -69,8 +69,8 @@ void dependencyChainOnModify (Task&, Task&);
|
|||||||
// feedback.cpp
|
// feedback.cpp
|
||||||
bool taskDiff (const Task&, const Task&);
|
bool taskDiff (const Task&, const Task&);
|
||||||
std::string taskDifferences (const Task&, const Task&);
|
std::string taskDifferences (const Task&, const Task&);
|
||||||
std::string taskInfoDifferences (const Task&, const Task&);
|
std::string taskInfoDifferences (const Task&, const Task&, const std::string&);
|
||||||
std::string renderAttribute (const std::string&, const std::string&);
|
std::string renderAttribute (const std::string&, const std::string&, const std::string& format = "");
|
||||||
void feedback_affected (const std::string&);
|
void feedback_affected (const std::string&);
|
||||||
void feedback_affected (const std::string&, int);
|
void feedback_affected (const std::string&, int);
|
||||||
void feedback_affected (const std::string&, const Task&);
|
void feedback_affected (const std::string&, const Task&);
|
||||||
|
|||||||
73
test/bug.986.t
Executable file
73
test/bug.986.t
Executable file
@@ -0,0 +1,73 @@
|
|||||||
|
#! /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 => 6;
|
||||||
|
|
||||||
|
# Create the rc file.
|
||||||
|
if (open my $fh, '>', 'bug.rc')
|
||||||
|
{
|
||||||
|
print $fh "data.location=.\n",
|
||||||
|
"verbose=nothing\n";
|
||||||
|
close $fh;
|
||||||
|
ok (-r 'bug.rc', 'Created bug.rc');
|
||||||
|
}
|
||||||
|
|
||||||
|
# Bug 986 - 'task info' does not format date using dateformat.report
|
||||||
|
# Rely on the assumption that the default date format is 'm/d/Y'
|
||||||
|
|
||||||
|
# Create one task (with a creation date) and one journal entry (with a
|
||||||
|
# timestamp and a date inside the entry)
|
||||||
|
qx{../src/task rc:bug.rc add test};
|
||||||
|
qx{../src/task rc:bug.rc test start};
|
||||||
|
|
||||||
|
# Test that report.info.dateformat has precedence over dateformat.report and
|
||||||
|
# dateformat and that no other format is applied
|
||||||
|
my $output = qx{../src/task rc:bug.rc test info rc.dateformat:m/d/Y rc.dateformat.report:m/d/Y rc.report.info.dateformat:__};
|
||||||
|
like ($output, qr/__/ms, 'Date formatted according to report.info.dateformat');
|
||||||
|
unlike ($output, qr/[0-9]*\/[0-9]*\/20[0-9]*/ms, 'No date is incorrectly formatted');
|
||||||
|
|
||||||
|
# Similar for dateformat.report (no need to check that another format is applied again)
|
||||||
|
$output = qx{../src/task rc:bug.rc test info rc.dateformat:m/d/Y rc.dateformat.report:__ rc.report.info.dateformat:};
|
||||||
|
like ($output, qr/__/ms, 'Date formatted according to dateformat.report');
|
||||||
|
|
||||||
|
# Similar for dateformat
|
||||||
|
$output = qx{../src/task rc:bug.rc test info rc.dateformat:__ rc.dateformat.report: rc.report.info.dateformat:};
|
||||||
|
like ($output, qr/__/ms, 'Date formatted according to dateformat');
|
||||||
|
|
||||||
|
### 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;
|
||||||
Reference in New Issue
Block a user