Respect mock instance in createFromFormat with partial format #1281
Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
Let's say current time is:
We set the mock instance to:
One would expect that when using
Carbon::createFromFormat
with a partial format, the missing part will be filled from the mock:However as of now it is filled from the actual time instead:
This PR fixes that issue, by prepending mocked time to the input. It works with many fancy formats, including unix epoch reset flags
!
,|
. See new tests for more details.Changes are not backwards compatible, however that's often the case when fixing bugs, which I would assume the old behavior to be. Worst case scenario would be that we break some odd monkey-fixed tests that circumvented the problem by comparing against the real time. We don't need to worry about someone using
setTestNow
in the business code, right?The PR includes two additional changes to preserve current behaviors:
Carbon::create
method are explicitly set to 0 by using format!Y-n-j G:i:s
instead of previousY-n-j G:i:s
.Bonus:
Fixes #1280.