I am working through some File.dirname issues on JRuby and I saw a ruby/spec covering this behavior on windows:
File.dirname('/////').should == '//'
Same result if backslashes are used. Is there a reason for this result? It does not seem useful to me but I am not much of a windows user. I would think in this case it would be '/' since I don't see how this is useful for UNC paths in Ruby? If someone could explain it then I will document this at least in JRuby source code :)
So far all versions of MRI seem to have this behavior.
I'm not sure whether this behavior was originally expected, but I think changing it at this point isn't worth the backwards compatibility breakage. For example, consider the following:
dir=File.dirname(string)# string could be '/////'File.read(File.join(dir,'server','share'))
If you change the behavior of File.dirname from returning // to returning /, you change which file is read. In general, that's probably going to result an an Errno::ENOENT exception, but in the pathological case, it results in an unintended file being read.