Actions
Feature #14570
openMake File.expand_path/real_path casing consistent on Windows
Description
File.realpath
returns the path with the same upper/lower case characters as the input parameter. But File.expand_path
is different. It adjusts the last part of the path (and only this) to the upper/lower case characters given from the file system.
require "fileutils"
FileUtils.mkdir_p("TestDir/abC/Xyz")
File.expand_path("testdir") # => "C:/Users/lars/TestDir"
File.expand_path("testdir/abc") # => "C:/Users/lars/testdir/abC"
File.expand_path("testdir/abc/XYZ") # => "C:/Users/lars/testdir/abc/Xyz"
File.realpath("testdir") # => "C:/Users/lars/testdir"
File.realpath("testdir/abc") # => "C:/Users/lars/testdir/abc"
File.realpath("testdir/abc/XYZ") # => "C:/Users/lars/testdir/abc/XYZ"
The file system on Windows is case insensitive. So this is not really a bug, but it's inconsistent and unexpected. I would expect that File.expand_path
returns a path with upper/lowercase either entirely retrieved from the input parameter or from the file system, but not a mixture of both. I would also expect that File.realpath
and File.expand_path
have the same semantics in this regard.
Same behavior on ruby 2.2.2p95 (2015-04-13 revision 50295) [x64-mingw32]
Actions
Like0
Like0Like0