Provided by: libtest-mocktime-datecalc-perl_5+ds-1_all
Test::MockTime::DateCalc -- fake time for Date::Calc functions
use Test::MockTime; use Test::MockTime::DateCalc; # before Date::Calc loads # ... use My::Module::Using::Date::Calc;
"Test::MockTime::DateCalc" arranges for the functions in "Date::Calc" to follow the Perl level "time" function (see perlfunc), and in particular any fake date/time set there by "Test::MockTime". The following "Date::Calc" functions are changed System_Clock Today Now Today_and_Now This_Year Gmtime Localtime Timezone Time_to_Date "Gmtime", "Localtime", "Timezone" and "Time_to_Date" are made to default to the Perl-level current "time". When called with an explicit time argument they're unchanged. Module Load Order "Test::MockTime" or similar fakery must be loaded first, before anything with a "time()" call, which includes "Test::MockTime::DateCalc". This is the same as all "CORE::GLOBAL" overrides, see "OVERRIDING CORE FUNCTIONS" in CORE. "Test::MockTime::DateCalc" must be loaded before "Date::Calc". If "Date::Calc" is already loaded then its functions might have been imported into other modules and such imports are not affected by the redefinitions made. For that reason "Test::MockTime::DateCalc" demands it be the one to load "Date::Calc" for the first time. Usually this simply means having "Test::MockTime::DateCalc" at the start of a test script, before the things you're going to test. use strict; use warnings; use Test::MockTime ':all'; use Test::MockTime::DateCalc; use My::Foo::Bar; set_fixed_time('1981-01-01T00:00:00Z'); is (My::Foo::Bar::something(), 1981); restore_time(); In a test script it's often good to have your own modules early to check they correctly load their pre-requisites. You might want a separate test script for that so you don't accidentally rely on "Test::MockTime::DateCalc" loading "Date::Calc" for you. Other Faking Modules "Test::MockTime::DateCalc" can be used with other modules which mangle the Perl-level "time" too. For example "Time::Fake", use Time::Fake; # fakery first use Test::MockTime::DateCalc; Or "Time::Mock", use Time::Mock; # fakery first use Test::MockTime::DateCalc; "Time::Warp" (as of version 0.5) only exports a new "time", it's not a core override and so can't be used with "Test::MockTime::DateCalc".
Date::Calc, Test::MockTime, Time::Fake, Time::Mock faketime(1)
Copyright 2009, 2010 Kevin Ryde Test-MockTime-DateCalc is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation; either version 3, or (at your option) any later version. Test-MockTime-DateCalc is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details. You should have received a copy of the GNU General Public License along with Test- MockTime-DateCalc. If not, see <http://www.gnu.org/licenses/>.