Skip to content
Permalink

Comparing changes

Choose two branches to see what’s changed or to start a new pull request. If you need to, you can also or learn more about diff comparisons.

Open a pull request

Create a new pull request by comparing changes across two branches. If you need to, you can also . Learn more about diff comparisons here.
base repository: jruby/jruby
Failed to load repositories. Confirm that selected base ref is valid, then try again.
Loading
base: fd6c34c6eca2^
Choose a base ref
...
head repository: jruby/jruby
Failed to load repositories. Confirm that selected head ref is valid, then try again.
Loading
compare: e04645977610
Choose a head ref
  • 8 commits
  • 34 files changed
  • 1 contributor

Commits on Aug 21, 2016

  1. Copy the full SHA
    fd6c34c View commit details
  2. Copy the full SHA
    929c2d3 View commit details
  3. Tag spec causing SEGV

    eregon committed Aug 21, 2016
    Copy the full SHA
    5f90022 View commit details
  4. Copy the full SHA
    2c0223c View commit details
  5. Copy the full SHA
    1706918 View commit details
  6. Add tags for library specs

    * The result of
    $ bin/jruby spec/mspec/bin/mspec tag -Gfails --add fails --fail -fs :library
    eregon committed Aug 21, 2016
    Copy the full SHA
    5f0e626 View commit details
  7. Copy the full SHA
    3a5da92 View commit details
  8. Add two core spec tags

    eregon committed Aug 21, 2016
    Copy the full SHA
    e046459 View commit details
Showing with 152 additions and 47 deletions.
  1. +38 −47 spec/jruby.2.3.mspec
  2. +2 −0 spec/tags/ruby/core/process/spawn_tags.txt
  3. +6 −0 spec/tags/ruby/library/continuation/call_tags.txt
  4. +17 −0 spec/tags/ruby/library/continuation/kernel/callcc_tags.txt
  5. +1 −0 spec/tags/ruby/library/etc/getgrgid_tags.txt
  6. +1 −0 spec/tags/ruby/library/net/http/http/started_tags.txt
  7. +1 −0 spec/tags/ruby/library/socket/addrinfo/afamily_tags.txt
  8. +1 −0 spec/tags/ruby/library/socket/addrinfo/canonname_tags.txt
  9. +48 −0 spec/tags/ruby/library/socket/addrinfo/initialize_tags.txt
  10. +2 −0 spec/tags/ruby/library/socket/addrinfo/ip_address_tags.txt
  11. +1 −0 spec/tags/ruby/library/socket/addrinfo/ip_port_tags.txt
  12. +1 −0 spec/tags/ruby/library/socket/addrinfo/ip_tags.txt
  13. +2 −0 spec/tags/ruby/library/socket/addrinfo/ip_unpack_tags.txt
  14. +1 −0 spec/tags/ruby/library/socket/addrinfo/ipv4_loopback_tags.txt
  15. +2 −0 spec/tags/ruby/library/socket/addrinfo/ipv4_multicast_tags.txt
  16. +4 −0 spec/tags/ruby/library/socket/addrinfo/ipv4_private_tags.txt
  17. +1 −0 spec/tags/ruby/library/socket/addrinfo/ipv4_tags.txt
  18. +1 −0 spec/tags/ruby/library/socket/addrinfo/ipv6_loopback_tags.txt
  19. +2 −0 spec/tags/ruby/library/socket/addrinfo/ipv6_multicast_tags.txt
  20. +1 −0 spec/tags/ruby/library/socket/addrinfo/ipv6_tags.txt
  21. +1 −0 spec/tags/ruby/library/socket/addrinfo/pfamily_tags.txt
  22. +1 −0 spec/tags/ruby/library/socket/addrinfo/protocol_tags.txt
  23. +1 −0 spec/tags/ruby/library/socket/addrinfo/socktype_tags.txt
  24. +1 −0 spec/tags/ruby/library/socket/addrinfo/tcp_tags.txt
  25. +1 −0 spec/tags/ruby/library/socket/addrinfo/to_s_tags.txt
  26. +1 −0 spec/tags/ruby/library/socket/addrinfo/to_sockaddr_tags.txt
  27. +1 −0 spec/tags/ruby/library/socket/addrinfo/udp_tags.txt
  28. +3 −0 spec/tags/ruby/library/socket/addrinfo/unix_path_tags.txt
  29. +2 −0 spec/tags/ruby/library/socket/addrinfo/unix_tags.txt
  30. +1 −0 spec/tags/ruby/library/socket/option/bool_tags.txt
  31. +1 −0 spec/tags/ruby/library/socket/option/inspect_tags.txt
  32. +2 −0 spec/tags/ruby/library/socket/tcpserver/accept_nonblock_tags.txt
  33. +2 −0 spec/tags/ruby/library/socket/tcpserver/sysaccept_tags.txt
  34. +1 −0 spec/tags/ruby/library/time/to_date_tags.txt
85 changes: 38 additions & 47 deletions spec/jruby.2.3.mspec
Original file line number Diff line number Diff line change
@@ -1,10 +1,8 @@
# Default RubySpec/CI settings for JRuby in 2.1 mode.
# Default RubySpec/CI settings for JRuby.

# detect windows platform:
require 'rbconfig'
require 'java'
require 'jruby'
require 'mspec/runner/formatters'

IKVM = java.lang.System.get_property('java.vm.name') =~ /IKVM\.NET/
WINDOWS = RbConfig::CONFIG['host_os'] =~ /mswin/
@@ -13,6 +11,15 @@ SPEC_DIR = File.join(File.dirname(__FILE__), 'ruby') unless defined?(SPEC_DIR)
TAGS_DIR = File.join(File.dirname(__FILE__), 'tags') unless defined?(TAGS_DIR)

class MSpecScript
jruby = RbConfig::CONFIG['ruby_install_name'] + RbConfig::CONFIG['EXEEXT']
jruby = File.expand_path("../../bin/#{jruby}", __FILE__)
set :target, jruby

# Command Line specs
set :command_line, [
SPEC_DIR + '/command_line',
]

# Language features specs
set :language, [
SPEC_DIR + '/language',
@@ -23,9 +30,15 @@ class MSpecScript
SPEC_DIR + '/core',
]

# Standard library specs
set :library, [
SPEC_DIR + '/library',
]

set :fast, [
*get(:language),
*get(:core),
*get(:library),

# These all spawn sub-rubies, making them very slow to run
'^' + SPEC_DIR + '/core/process',
@@ -44,6 +57,14 @@ class MSpecScript
'^' + SPEC_DIR + '/language/predefined/data_spec.rb',
]

# Enable features
MSpec.enable_feature :fiber
MSpec.enable_feature :fiber_library
MSpec.enable_feature :continuation_library
MSpec.disable_feature :fork
MSpec.enable_feature :encoding
MSpec.enable_feature :readline

# Filter out ObjectSpace specs if ObjectSpace is disabled
unless JRuby.objectspace
get(:core) << '^' + SPEC_DIR + '/core/objectspace/_id2ref'
@@ -52,44 +73,19 @@ class MSpecScript

if IKVM
# ftype_spec freezes for some reason under IKVM
set(:core, get(:core) + ['^' + SPEC_DIR + '/core/file'])
get(:core) << '^' + SPEC_DIR + '/core/file'
# Process.kill spec hangs
set(:core, get(:core) + ['^' + SPEC_DIR + '/core/process'])
get(:core) << '^' + SPEC_DIR + '/core/process'
end

# An ordered list of the directories containing specs to run
# as the CI process.
set :library, [
SPEC_DIR + '/library',

# excluded for some reason, see JRUBY-4020
'^' + SPEC_DIR + '/library/drb',
'^' + SPEC_DIR + '/library/net',
'^' + SPEC_DIR + '/library/openssl',

# unstable
'^' + SPEC_DIR + '/library/syslog',

# masked out because of load-time errors that can't be tagged
'^' + SPEC_DIR + '/library/net/http',
# prepare exclusion tags
set(:xtags, get(:xtags) || [])
set(:ci_xtags, get(:ci_xtags) || [])

# Module not available
'^' + SPEC_DIR + '/library/digest/bubblebabble'
]

# Command Line specs
set :command_line, [ SPEC_DIR + '/command_line' ]

# Enable features
MSpec.enable_feature :continuation
MSpec.enable_feature :fiber
MSpec.enable_feature :fiber_library
MSpec.enable_feature :encoding
MSpec.enable_feature :encoding_transition
MSpec.enable_feature :readline
get(:xtags) << 'critical'
get(:ci_xtags) << 'critical'

# prepare additional tags for CI
set(:ci_xtags, ["java#{ENV_JAVA['java.specification.version']}"]) # Java version
get(:ci_xtags) << "java#{ENV_JAVA['java.specification.version']}" # Java version

if WINDOWS
# Some specs on Windows will fail in we launch JRuby via
@@ -102,14 +98,15 @@ class MSpecScript
get(:ci_xtags) << 'windows'
end

# If running specs with jit threshold = 1 or force (AOT) compile, additional tags
if JRuby.runtime.instance_config.compile_mode.to_s == "FORCE" ||
JRuby.runtime.instance_config.jit_threshold == 1
get(:ci_xtags) << 'compiler'
end

# This set of files is run by mspec ci
set :ci_files, get(:language) + get(:core) + get(:command_line) + get(:library)

# A list of _all_ optional library specs
set :optional, [get(:ffi)]

set :target, File.dirname(__FILE__) + '/../bin/' + RbConfig::CONFIG['ruby_install_name'] + RbConfig::CONFIG['EXEEXT']

set :backtrace_filter, /mspec\//

set :tags_patterns, [
@@ -119,10 +116,4 @@ class MSpecScript
[%r(^.*/library/), TAGS_DIR + '/ruby/library/'],
[/_spec.rb$/, '_tags.txt']
]

# If running specs with jit threshold = 1 or force (AOT) compile, additional tags
if JRuby.runtime.instance_config.compile_mode.to_s == "FORCE" ||
JRuby.runtime.instance_config.jit_threshold == 1
set(:ci_xtags, (get(:ci_xtags) || []) + ['compiler'])
end
end
2 changes: 2 additions & 0 deletions spec/tags/ruby/core/process/spawn_tags.txt
Original file line number Diff line number Diff line change
@@ -71,3 +71,5 @@ windows:Process.spawn when passed close_others: false does not close STDIN
windows:Process.spawn when passed close_others: false does not close STDOUT
windows:Process.spawn when passed close_others: false does not close STDERR
windows:Process.spawn with Integer option keys maps the key to a file descriptor in the child that inherits the file descriptor from the parent specified by the value
fails:Process.spawn unsets other environment variables when given a true :unsetenv_others option
fails:Process.spawn unsets other environment variables when given a non-false :unsetenv_others option
6 changes: 6 additions & 0 deletions spec/tags/ruby/library/continuation/call_tags.txt
Original file line number Diff line number Diff line change
@@ -0,0 +1,6 @@
fails:Continuation#call using #call transfers execution to right after the Kernel.callcc block
fails:Continuation#call arguments given to #call (or nil) are returned by the Kernel.callcc block (as Array unless only one object)
fails:Continuation#call #[] is an alias for #call
fails:Continuation#call closes over lexical environments
fails:Continuation#call escapes an inner ensure block
fails:Continuation#call executes an outer ensure block
17 changes: 17 additions & 0 deletions spec/tags/ruby/library/continuation/kernel/callcc_tags.txt
Original file line number Diff line number Diff line change
@@ -0,0 +1,17 @@
fails:Kernel#callcc is a private method
fails:Kernel#callcc is possible to exit a loop like a break
fails:Kernel#callcc is possible to call a continuation multiple times
fails:Kernel#callcc returns the results of a block if continuation is not called
fails:Kernel#callcc returns the results of continuation once called
fails:Kernel#callcc returns the arguments to call
fails:Kernel#callcc preserves changes to block-local scope
fails:Kernel#callcc preserves changes to method-local scope
fails:Kernel#callcc raises a LocalJumpError if callcc is not given a block
fails:Kernel.callcc is possible to exit a loop like a break
fails:Kernel.callcc is possible to call a continuation multiple times
fails:Kernel.callcc returns the results of a block if continuation is not called
fails:Kernel.callcc returns the results of continuation once called
fails:Kernel.callcc returns the arguments to call
fails:Kernel.callcc preserves changes to block-local scope
fails:Kernel.callcc preserves changes to method-local scope
fails:Kernel.callcc raises a LocalJumpError if callcc is not given a block
1 change: 1 addition & 0 deletions spec/tags/ruby/library/etc/getgrgid_tags.txt
Original file line number Diff line number Diff line change
@@ -1 +1,2 @@
windows:Etc.getgrgid returns nil
critical:Etc.getgrgid can be called safely by multiple threads
1 change: 1 addition & 0 deletions spec/tags/ruby/library/net/http/http/started_tags.txt
Original file line number Diff line number Diff line change
@@ -0,0 +1 @@
fails:Net::HTTP#started? returns false when self has been stopped again
1 change: 1 addition & 0 deletions spec/tags/ruby/library/socket/addrinfo/afamily_tags.txt
Original file line number Diff line number Diff line change
@@ -0,0 +1 @@
fails:Addrinfo#afamily for a unix socket returns Socket::AF_UNIX
1 change: 1 addition & 0 deletions spec/tags/ruby/library/socket/addrinfo/canonname_tags.txt
Original file line number Diff line number Diff line change
@@ -0,0 +1 @@
fails:Addrinfo#canonname returns the canonical name for a host
48 changes: 48 additions & 0 deletions spec/tags/ruby/library/socket/addrinfo/initialize_tags.txt
Original file line number Diff line number Diff line change
@@ -0,0 +1,48 @@
fails:Addrinfo#initialize with a sockaddr string without a family stores the ip address from the sockaddr
fails:Addrinfo#initialize with a sockaddr string without a family stores the port number from the sockaddr
fails:Addrinfo#initialize with a sockaddr string without a family returns the Socket::UNSPEC pfamily
fails:Addrinfo#initialize with a sockaddr string without a family returns the INET6 afamily
fails:Addrinfo#initialize with a sockaddr string without a family returns the 0 socket type
fails:Addrinfo#initialize with a sockaddr string without a family returns the 0 protocol
fails:Addrinfo#initialize with a sockaddr string with a family given stores the ip address from the sockaddr
fails:Addrinfo#initialize with a sockaddr string with a family given stores the port number from the sockaddr
fails:Addrinfo#initialize with a sockaddr string with a family given returns the Socket::UNSPEC pfamily
fails:Addrinfo#initialize with a sockaddr string with a family given returns the INET6 afamily
fails:Addrinfo#initialize with a sockaddr string with a family given returns the 0 socket type
fails:Addrinfo#initialize with a sockaddr string with a family given returns the 0 protocol
fails:Addrinfo#initialize with a sockaddr string with a family and socket type stores the ip address from the sockaddr
fails:Addrinfo#initialize with a sockaddr string with a family and socket type stores the port number from the sockaddr
fails:Addrinfo#initialize with a sockaddr string with a family and socket type returns the Socket::UNSPEC pfamily
fails:Addrinfo#initialize with a sockaddr string with a family and socket type returns the INET6 afamily
fails:Addrinfo#initialize with a sockaddr string with a family and socket type returns the 0 socket type
fails:Addrinfo#initialize with a sockaddr string with a family and socket type returns the 0 protocol
fails:Addrinfo#initialize with a sockaddr string with a family, socket type and protocol stores the ip address from the sockaddr
fails:Addrinfo#initialize with a sockaddr string with a family, socket type and protocol stores the port number from the sockaddr
fails:Addrinfo#initialize with a sockaddr string with a family, socket type and protocol returns the Socket::UNSPEC pfamily
fails:Addrinfo#initialize with a sockaddr string with a family, socket type and protocol returns the INET6 afamily
fails:Addrinfo#initialize with a sockaddr string with a family, socket type and protocol returns the specified socket type
fails:Addrinfo#initialize with a sockaddr string with a family, socket type and protocol returns the specified protocol
fails:Addrinfo#initialize with a sockaddr array without a family stores the ip address from the sockaddr
fails:Addrinfo#initialize with a sockaddr array without a family stores the port number from the sockaddr
fails:Addrinfo#initialize with a sockaddr array without a family returns the Socket::UNSPEC pfamily
fails:Addrinfo#initialize with a sockaddr array without a family returns the INET6 afamily
fails:Addrinfo#initialize with a sockaddr array without a family returns the 0 socket type
fails:Addrinfo#initialize with a sockaddr array without a family returns the 0 protocol
fails:Addrinfo#initialize with a sockaddr array with a family given stores the ip address from the sockaddr
fails:Addrinfo#initialize with a sockaddr array with a family given stores the port number from the sockaddr
fails:Addrinfo#initialize with a sockaddr array with a family given returns the Socket::UNSPEC pfamily
fails:Addrinfo#initialize with a sockaddr array with a family given returns the INET6 afamily
fails:Addrinfo#initialize with a sockaddr array with a family given returns the 0 socket type
fails:Addrinfo#initialize with a sockaddr array with a family given returns the 0 protocol
fails:Addrinfo#initialize with a sockaddr array with a family and socket type stores the ip address from the sockaddr
fails:Addrinfo#initialize with a sockaddr array with a family and socket type stores the port number from the sockaddr
fails:Addrinfo#initialize with a sockaddr array with a family and socket type returns the Socket::UNSPEC pfamily
fails:Addrinfo#initialize with a sockaddr array with a family and socket type returns the INET6 afamily
fails:Addrinfo#initialize with a sockaddr array with a family and socket type returns the 0 socket type
fails:Addrinfo#initialize with a sockaddr array with a family and socket type returns the 0 protocol
fails:Addrinfo#initialize with a sockaddr array with a family, socket type and protocol stores the ip address from the sockaddr
fails:Addrinfo#initialize with a sockaddr array with a family, socket type and protocol stores the port number from the sockaddr
fails:Addrinfo#initialize with a sockaddr array with a family, socket type and protocol returns the Socket::UNSPEC pfamily
fails:Addrinfo#initialize with a sockaddr array with a family, socket type and protocol returns the INET6 afamily
fails:Addrinfo#initialize with a sockaddr array with a family, socket type and protocol returns the 0 socket type
fails:Addrinfo#initialize with a sockaddr array with a family, socket type and protocol returns the specified protocol
2 changes: 2 additions & 0 deletions spec/tags/ruby/library/socket/addrinfo/ip_address_tags.txt
Original file line number Diff line number Diff line change
@@ -0,0 +1,2 @@
fails:Addrinfo#ip_address for an ipv6 socket returns the ip address
fails:Addrinfo#ip_address for a unix socket raises an exception
1 change: 1 addition & 0 deletions spec/tags/ruby/library/socket/addrinfo/ip_port_tags.txt
Original file line number Diff line number Diff line change
@@ -0,0 +1 @@
fails:Addrinfo#ip_port for a unix socket raises an exception
1 change: 1 addition & 0 deletions spec/tags/ruby/library/socket/addrinfo/ip_tags.txt
Original file line number Diff line number Diff line change
@@ -0,0 +1 @@
fails:Addrinfo#ip? for a unix socket returns Socket::AF_INET6
2 changes: 2 additions & 0 deletions spec/tags/ruby/library/socket/addrinfo/ip_unpack_tags.txt
Original file line number Diff line number Diff line change
@@ -0,0 +1,2 @@
fails:Addrinfo#ip_unpack for an ipv6 socket returns the ip address and port pair
fails:Addrinfo#ip_unpack for a unix socket raises an exception
Original file line number Diff line number Diff line change
@@ -0,0 +1 @@
fails:Addrinfo#ipv4_loopback? for a unix socket returns false
Original file line number Diff line number Diff line change
@@ -0,0 +1,2 @@
fails:Addrinfo#ipv4_multicast? for an ipv6 socket returns false for the loopback address
fails:Addrinfo#ipv4_multicast? for a unix socket returns false
4 changes: 4 additions & 0 deletions spec/tags/ruby/library/socket/addrinfo/ipv4_private_tags.txt
Original file line number Diff line number Diff line change
@@ -0,0 +1,4 @@
fails:Addrinfo#ipv4_private? for an ipv4 socket returns true for a private address
fails:Addrinfo#ipv4_private? for an ipv4 socket returns false for a public address
fails:Addrinfo#ipv4_private? for an ipv6 socket returns false
fails:Addrinfo#ipv4_private? for a unix socket returns false
1 change: 1 addition & 0 deletions spec/tags/ruby/library/socket/addrinfo/ipv4_tags.txt
Original file line number Diff line number Diff line change
@@ -0,0 +1 @@
fails:Addrinfo#ipv4? for a unix socket returns false
Original file line number Diff line number Diff line change
@@ -0,0 +1 @@
fails:Addrinfo#ipv6_loopback? for a unix socket returns false
Original file line number Diff line number Diff line change
@@ -0,0 +1,2 @@
fails:Addrinfo#ipv6_multicast? for an ipv4 socket returns true for the loopback address
fails:Addrinfo#ipv6_multicast? for a unix socket returns false
1 change: 1 addition & 0 deletions spec/tags/ruby/library/socket/addrinfo/ipv6_tags.txt
Original file line number Diff line number Diff line change
@@ -0,0 +1 @@
fails:Addrinfo#ipv6? for a unix socket returns false
1 change: 1 addition & 0 deletions spec/tags/ruby/library/socket/addrinfo/pfamily_tags.txt
Original file line number Diff line number Diff line change
@@ -0,0 +1 @@
fails:Addrinfo#pfamily for a unix socket returns Socket::PF_UNIX
1 change: 1 addition & 0 deletions spec/tags/ruby/library/socket/addrinfo/protocol_tags.txt
Original file line number Diff line number Diff line change
@@ -0,0 +1 @@
fails:Addrinfo#protocol for a unix socket returns 0
1 change: 1 addition & 0 deletions spec/tags/ruby/library/socket/addrinfo/socktype_tags.txt
Original file line number Diff line number Diff line change
@@ -0,0 +1 @@
fails:Addrinfo#socktype for a unix socket returns Socket::SOCK_STREAM
1 change: 1 addition & 0 deletions spec/tags/ruby/library/socket/addrinfo/tcp_tags.txt
Original file line number Diff line number Diff line change
@@ -0,0 +1 @@
fails:Addrinfo.tcp creates a addrinfo for a tcp socket
1 change: 1 addition & 0 deletions spec/tags/ruby/library/socket/addrinfo/to_s_tags.txt
Original file line number Diff line number Diff line change
@@ -0,0 +1 @@
fails:Addrinfo#to_s for a unix socket returns a sockaddr packed structure
Original file line number Diff line number Diff line change
@@ -0,0 +1 @@
fails:Addrinfo#to_sockaddr for a unix socket returns a sockaddr packed structure
1 change: 1 addition & 0 deletions spec/tags/ruby/library/socket/addrinfo/udp_tags.txt
Original file line number Diff line number Diff line change
@@ -0,0 +1 @@
fails:Addrinfo.udp creates a addrinfo for a tcp socket
3 changes: 3 additions & 0 deletions spec/tags/ruby/library/socket/addrinfo/unix_path_tags.txt
Original file line number Diff line number Diff line change
@@ -0,0 +1,3 @@
fails:Addrinfo#unix_path for an ipv4 socket raises an exception
fails:Addrinfo#unix_path for an ipv6 socket raises an exception
fails:Addrinfo#unix_path for a unix socket returns the socket path
2 changes: 2 additions & 0 deletions spec/tags/ruby/library/socket/addrinfo/unix_tags.txt
Original file line number Diff line number Diff line change
@@ -0,0 +1,2 @@
fails:Addrinfo.unix creates a addrinfo for a unix socket
fails:Addrinfo#unix? for a unix socket returns true
1 change: 1 addition & 0 deletions spec/tags/ruby/library/socket/option/bool_tags.txt
Original file line number Diff line number Diff line change
@@ -0,0 +1 @@
fails:Socket::Option#bool raises TypeError if option has not good size
1 change: 1 addition & 0 deletions spec/tags/ruby/library/socket/option/inspect_tags.txt
Original file line number Diff line number Diff line change
@@ -0,0 +1 @@
fails:Socket::Option#inspect correctly returns SO_LINGER value
Original file line number Diff line number Diff line change
@@ -1 +1,3 @@
fails:Socket::TCPServer.accept_nonblock accepts non blocking connections
fails:Socket::TCPServer.accept_nonblock without a connected client raises error
fails:Socket::TCPServer.accept_nonblock without a connected client returns :wait_readable in exceptionless mode
2 changes: 2 additions & 0 deletions spec/tags/ruby/library/socket/tcpserver/sysaccept_tags.txt
Original file line number Diff line number Diff line change
@@ -0,0 +1,2 @@
fails:TCPServer#sysaccept blocks if no connections
fails:TCPServer#sysaccept returns file descriptor of an accepted connection
1 change: 1 addition & 0 deletions spec/tags/ruby/library/time/to_date_tags.txt
Original file line number Diff line number Diff line change
@@ -0,0 +1 @@
fails:Time#to_date yields date with default Calendar reform day