From: nobu@... Date: 2015-01-08T03:54:01+00:00 Subject: [ruby-core:67422] [ruby-trunk - Bug #10700] [Closed] On case-sensitive filesystem on OS X, Dir.glob("*.TXT") matches case-insensitively Issue #10700 has been updated by Nobuyoshi Nakada. Status changed from Feedback to Closed % Done changed from 0 to 100 Applied in changeset r49178. ---------- dir.c: OSX case-folding * dir.c (glob_helper): match in case-folding only if the directory resides on a case-insensitve file system, on OSX. [ruby-core:67364] [Bug #10700] ---------------------------------------- Bug #10700: On case-sensitive filesystem on OS X, Dir.glob("*.TXT") matches case-insensitively https://bugs.ruby-lang.org/issues/10700#change-50852 * Author: Hiro Asari * Status: Closed * 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/