Bug #3882

REGRESSION: File.extname() broken (at least >= 1.8.7)

Added by AndiM (Andreas Mohr) over 9 years ago. Updated 9 months ago.

Target version:




require 'pathname'

mytest_filename = ARGV.shift

#mytest_filename_cleaned =
mytest_filename_cleaned = mytest_filename

puts "mytest_filename #{mytest_filename} mytest_filename_cleaned #{mytest_filename_cleaned}"

myext = File.extname(mytest_filename_cleaned)
puts "mytest_filename_cleaned #{mytest_filename_cleaned} myext #{myext}"

Try .//test.out
Won't do what it should, at least on u10.04 ruby1.8 and ruby1.9.1,
as opposed to correct behaviour on ruby-1.8.5-5.el5_4.8.

Since doesn't really specify extname() argument composition constraints
(other than it being a path), it should accept duplicate slashes since this syntax is treated as a valid path pretty much everywhere.

Do you happen to have a test suite for these core API things? Since extname() also had some other issues (spaces before extension etc.),
this would be useful.

Other than this rather disturbing behaviour, I'm VERY impressed with Ruby.


Andreas Mohr


Updated by usa (Usaku NAKAMURA) over 9 years ago

  • Status changed from Open to Assigned
  • Assignee set to wyhaines (Kirk Haines)
  • Priority changed from 5 to Normal

It's already fixed at 1.8.7-p302.

BTW, ruby_1_8_6 branch has this problem yet.


Updated by nobu (Nobuyoshi Nakada) over 9 years ago

Backport r27404.


Updated by nobu (Nobuyoshi Nakada) over 9 years ago

  • Category set to core




Updated by jeremyevans0 (Jeremy Evans) 9 months ago

  • Backport set to 2.5: UNKNOWN, 2.6: UNKNOWN
  • Status changed from Assigned to Closed
  • Description updated (diff)
  • Project changed from Backport186 to Ruby master
  • Tracker changed from Backport to Bug

Also available in: Atom PDF