Issue #10700 has been updated by Hiro Asari.


Nobuyoshi Nakada wrote:
> Can you try https://github.com/nobu/ruby/compare/Bug%2310700-OSX-case-folding ?

Confirmed that it works.

~~~
$ touch foo.txt foo.TXT FOO.txt FOO.TXT          
$ ls -l foo* FOO*                                
-rw-r--r--  1 asari  staff  0 Jan  7 22:09 FOO.TXT
-rw-r--r--  1 asari  staff  0 Jan  7 22:09 FOO.txt
-rw-r--r--  1 asari  staff  0 Jan  7 22:09 foo.TXT
-rw-r--r--  1 asari  staff  0 Jan  7 22:09 foo.txt
$ ./ruby --disable-gems -v -e 'p Dir.glob("*.TxT")'
ruby 2.3.0dev (2015-01-07 trunk 49171) [x86_64-darwin13]
[]
~~~

----------------------------------------
Bug #10700: On case-sensitive filesystem on OS X, Dir.glob("*.TXT") matches case-insensitively
https://bugs.ruby-lang.org/issues/10700#change-50850

* Author: Hiro Asari
* Status: Feedback
* Priority: Normal
* Assignee: 
* Category: platform/darwin
* Target version: 
* ruby -v: ruby 2.2.0p0 (2014-12-25 revision 49005) [x86_64-darwin13]
* Backport: 2.0.0: UNKNOWN, 2.1: UNKNOWN, 2.2: REQUIRED
----------------------------------------
My Mac has the disk reformatted so that it is case-sensitive (HFS+):

~~~
$ touch foo.txt foo.TXT FOO.txt FOO.TXT
$ ls -li foo.* FOO.*                          
286444732 -rw-r--r--  1 asari  staff  0 Jan  6 08:00 FOO.TXT
286444731 -rw-r--r--  1 asari  staff  0 Jan  6 08:00 FOO.txt
286444729 -rw-r--r--  1 asari  staff  0 Jan  6 08:00 foo.TXT
286444728 -rw-r--r--  1 asari  staff  0 Jan  6 08:00 foo.txt
~~~

You notice that they are all different files.

In Ruby 2.1.5, Dir.glob("*.TxT") returns an empty array, but in 2.2.0, all of these files are returned:

~~~
$ rvm 2.1.5 do ruby -v -e 'p Dir.glob("*.TxT")'
ruby 2.1.5p273 (2014-11-13 revision 48405) [x86_64-darwin14.0]
[]
$ rvm 2.2.0 do ruby -v -e 'p Dir.glob("*.TxT")'
ruby 2.2.0p0 (2014-12-25 revision 49005) [x86_64-darwin13]
["FOO.TXT", "FOO.txt", "foo.TXT", "foo.txt"]
~~~

This is unexpected and incorrect. This does not happen on Linux.



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