[#67346] Future of test suites for Ruby — Charles Oliver Nutter <headius@...>

I'll try to be brief so we can discuss all this. tl;dr: RubySpec is

19 messages 2015/01/05

[ruby-core:67684] [ruby-trunk - Bug #10733] Time.httpdate raises ArgumentError when DateTime.now.httpdate is provided as input

From: leif.eriksen.au@...
Date: 2015-01-19 09:35:48 UTC
List: ruby-core #67684
Issue #10733 has been updated by Leif Eriksen.


defintely a regex issue, not related to DateTime or Time at all (other than them being affected the same)

`def local_httpdate(date)
  if /\A\s*
      (?:Mon|Tue|Wed|Thu|Fri|Sat|Sun),\x20
      (\d{2})\x20
      (Jan|Feb|Mar|Apr|May|Jun|Jul|Aug|Sep|Oct|Nov|Dec)\x20
      (\d{4})\x20
      (\d{2}):(\d{2}):(\d{2})\x20
      GMT
      \s*\z/ix =~ date
    puts "regexp ok"
  else
    raise ArgumentError, "not RFC 2616 compliant date: #{date.inspect}"
  end
end

date_UTF      = "Mon, 19 Jan 2015 08:43:19 GMT".encode(Encoding.find('UTF-8'))
date_US_ASCII = "Mon, 19 Jan 2015 08:43:19 GMT".encode(Encoding.find('US-ASCII'))

puts local_httpdate(date_UTF) # Works

begin
  puts local_httpdate(date_US_ASCII) # => ArgumentError
rescue => e
  p e
end
`

----------------------------------------
Bug #10733: Time.httpdate raises ArgumentError when DateTime.now.httpdate is provided as input
https://bugs.ruby-lang.org/issues/10733#change-51103

* Author: Maarten Claes
* Status: Open
* Priority: Normal
* Assignee: 
* ruby -v: ruby 2.2.0p0 (2014-12-25 revision 49005) [x86_64-darwin14]
* Backport: 2.0.0: UNKNOWN, 2.1: UNKNOWN, 2.2: UNKNOWN
----------------------------------------
An irb session demonstrating the bug:

```
irb(main):001:0> require 'time'
=> true
irb(main):002:0> Time.httpdate("Mon, 12 Jan 2015 12:04:15 GMT")
=> 2015-01-12 12:04:15 UTC
irb(main):003:0> DateTime.now.httpdate.to_s
=> "Mon, 12 Jan 2015 12:04:56 GMT"
irb(main):004:0> Time.httpdate(DateTime.now.httpdate.to_s)
ArgumentError: not RFC 2616 compliant date: "Mon, 12 Jan 2015 12:05:08 GMT"
        from /Users/mcls/.rbenv/versions/2.2.0/lib/ruby/2.2.0/time.rb:544:in `httpdate'
        from (irb):4
        from /Users/mcls/.rbenv/versions/2.2.0/bin/irb:11:in `<main>'
```

To reproduce:
```
require 'time'
Time.httpdate("Mon, 12 Jan 2015 12:04:15 GMT") # works
Time.httpdate(DateTime.now.httpdate.to_s) # => ArgumentError
```

It seems that this only occurs on 2.2.0. (Tested on 2.1.5 and it works fine)



-- 
https://bugs.ruby-lang.org/

In This Thread

Prev Next