Comments (4)
10.days
does not actually produce a Fixnum
as it appears to; instead it returns a ActiveSupport::Duration
object that masquerades as a Fixnum
. From Timecop's perspective, the argument appears to be a Fixnum
, so it adds it to Time.now
,as it would any other Fixnum
; what actually happens is dependent on ActiveSupport's monkey-patching of the Time
class, and how it handles durations in a smart-but-darkly-magic maner.
1.9.3 :001 > (10.days).class
=> Fixnum
1.9.3 :002 > # lies.
1.9.3 :003 > Marshal.dump( 10.days )
=> "\004\bo:\034ActiveSupport::Duration\a:\v@valuei\003\000/\r:\v@parts[\006[\a:\tdaysi\017"
from timecop.
@yaauie @levity's issue is independent from the AS support since that was pushed in the time since he made the issue.
from timecop.
The argument is caught here, well before we get to the new ActiveSupport support, because the argument masquerades as a Fixnum
.
Since AS monkey-patches Time#+
to handle ActiveSupport::Duration as an argument, the behavior above is the expected behavior; his 10.days
did span his local DST change (note he's not working in utc, merely displaying the result in utc), and the result reflects that.
from timecop.
Thanks for the explanation, @yaauie. So AS is intentionally advancing one less hour, so that the time in my local time zone will appear to be exactly 10 days ahead. It makes sense to me now.
from timecop.
Related Issues (20)
- Is call to Timecop.travel(some random time) atomic in nature? HOT 1
- Time#travel should be side-effect free and not resume system clock HOT 10
- .
- Timecop.thread_safe = true by default HOT 1
- Timecop handles GMT/UTC Time objects incorrectly HOT 2
- Doesn't work for `Rails.cache` with `expires_in` HOT 2
- ruby 3.1 support
- Date.strptime returns wrong month for %Y HOT 6
- %W is not handled properly HOT 1
- Ruby 2.5 seems to work? HOT 4
- Using timecop with psych 4.0.5, behavior differs between the test environment and other environments HOT 3
- Timecop.scale to mock existing times HOT 2
- Timecop.freeze not working with expect().to receive HOT 3
- Test
- Need a proper test for making sure we don't change timezones inadvertently
- DateTime parse without date not working properly HOT 5
- DateTime.parse("Wednesday 12:00") format is always returning midnight HOT 1
- Time.now sometimes has greater-than-nanosecond precision when called under Timecop.travel HOT 3
- DateTime.parse does not handle CWeek correctly
- Mocking `Process.clock_gettime` causes `Concurrent::IVar` with timeout to wait indefinitely HOT 5
Recommend Projects
-
React
A declarative, efficient, and flexible JavaScript library for building user interfaces.
-
Vue.js
🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
-
Typescript
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
-
TensorFlow
An Open Source Machine Learning Framework for Everyone
-
Django
The Web framework for perfectionists with deadlines.
-
Laravel
A PHP framework for web artisans
-
D3
Bring data to life with SVG, Canvas and HTML. 📊📈🎉
-
Recommend Topics
-
javascript
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
-
web
Some thing interesting about web. New door for the world.
-
server
A server is a program made to process requests and deliver data to clients.
-
Machine learning
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
-
Visualization
Some thing interesting about visualization, use data art
-
Game
Some thing interesting about game, make everyone happy.
Recommend Org
-
Facebook
We are working to build community through open source technology. NB: members must have two-factor auth.
-
Microsoft
Open source projects and samples from Microsoft.
-
Google
Google ❤️ Open Source for everyone.
-
Alibaba
Alibaba Open Source for everyone
-
D3
Data-Driven Documents codes.
-
Tencent
China tencent open source team.
from timecop.