[Rt-commit] r14395 - in rt/3.8/trunk: lib/RT sbin

ruz at bestpractical.com ruz at bestpractical.com
Tue Jul 22 15:29:19 EDT 2008


Author: ruz
Date: Tue Jul 22 15:29:06 2008
New Revision: 14395

Modified:
   rt/3.8/trunk/lib/RT/Date.pm
   rt/3.8/trunk/sbin/rt-test-dependencies.in
   rt/3.8/trunk/t/api/date.t

Log:
* fix handling of relative dates entered by user
* add tests using Test::MockTime

Modified: rt/3.8/trunk/lib/RT/Date.pm
==============================================================================
--- rt/3.8/trunk/lib/RT/Date.pm	(original)
+++ rt/3.8/trunk/lib/RT/Date.pm	Tue Jul 22 15:29:06 2008
@@ -191,10 +191,14 @@
     elsif ( $args{'Format'} =~ /^unknown$/i ) {
         require Time::ParseDate;
         # the module supports only legacy timezones like PDT or EST...
-        # so we parse date as GMT and later apply offset
+        # so we parse date as GMT and later apply offset, this only
+        # should be applied to absolute times, so compensate shift in NOW
+        my $now = time;
+        $now += ($self->Localtime( $args{Timezone}, $now ))[9];
         my $date = Time::ParseDate::parsedate(
             $args{'Value'},
             GMT           => 1,
+            NOW           => $now,
             UK            => RT->Config->Get('DateDayBeforeMonth'),
             PREFER_PAST   => RT->Config->Get('AmbiguousDayInPast'),
             PREFER_FUTURE => RT->Config->Get('AmbiguousDayInFuture'),

Modified: rt/3.8/trunk/sbin/rt-test-dependencies.in
==============================================================================
--- rt/3.8/trunk/sbin/rt-test-dependencies.in	(original)
+++ rt/3.8/trunk/sbin/rt-test-dependencies.in	Tue Jul 22 15:29:06 2008
@@ -294,6 +294,7 @@
 Test::Warn
 Test::Builder 0.77 # needed to fix TODO test
 IPC::Run3
+Test::MockTime
 .
 
 $deps{'FASTCGI'} = [ text_to_hash( << '.') ];

Modified: rt/3.8/trunk/t/api/date.t
==============================================================================
--- rt/3.8/trunk/t/api/date.t	(original)
+++ rt/3.8/trunk/t/api/date.t	Tue Jul 22 15:29:06 2008
@@ -1,6 +1,8 @@
 #!/usr/bin/perl
 
-use Test::More tests => 165;
+use Test::MockTime qw(set_fixed_time restore_time);
+
+use Test::More tests => 167;
 
 use warnings; use strict;
 use RT::Test;
@@ -316,6 +318,17 @@
     $date->Set(Format => 'unknown', Value => '2005-11-28 15:10:00', Timezone => 'utc' );
     is($date->ISO, '2005-11-28 15:10:00', "YYYY-DD-MM hh:mm:ss");
 
+    # test relative dates
+    {
+        set_fixed_time("2005-11-28T15:10:00Z");
+        $date->Set(Format => 'unknown', Value => 'now');
+        is($date->ISO, '2005-11-28 15:10:00', "YYYY-DD-MM hh:mm:ss");
+
+        $date->Set(Format => 'unknown', Value => '1 day ago');
+        is($date->ISO, '2005-11-27 15:10:00', "YYYY-DD-MM hh:mm:ss");
+        restore_time();
+    }
+
     RT->Config->Set( Timezone => 'UTC' );
     $date->Set(Format => 'unknown', Value => '2005-11-28 15:10:00');
     is($date->ISO, '2005-11-28 15:10:00', "YYYY-DD-MM hh:mm:ss");


More information about the Rt-commit mailing list