Issue #5994 has been updated by Nobuyoshi Nakada.

Category set to core
Status changed from Open to Feedback
Target version set to 2.0.0

=begin
Dave B wrote:
  p Dir.glob('foO') #=> ["foO"]  not wanted

What do you want, an empty array same as case-sensitive systems?
=end

----------------------------------------
Bug #5994: Dir.glob without wildcards returns pattern, not filename
https://bugs.ruby-lang.org/issues/5994

Author: Dave B
Status: Feedback
Priority: Low
Assignee: 
Category: core
Target version: 2.0.0
ruby -v: ruby 1.9.3p0 (2011-10-30) [i386-mingw32]


This is Windows specific, I guess, as filename case doesn't matter there.
Ruby version is not specific to 1.9.3p0 (ruby 1.8.7p334 gives the same).
The script below produces results that seem inconsistent.
Using special characters (wildcards) in the glob pattern returns the
actual filename on disk but a plain pattern (no wildcards) returns the
pattern itself.  This means I have to use another method for producing
a file with the same name or else override the users case-style
preference (which is not my intention).

daz

#======================
puts 'ruby %sp%d (%s) [%s]' % [RUBY_VERSION, RUBY_PATCHLEVEL, RUBY_RELEASE_DATE, RUBY_PLATFORM]
# ruby 1.9.3p0 (2011-10-30) [i386-mingw32]

Dir.chdir ENV['TEMP']
TMPDIR = Time.now.strftime('%Y%m%d_%H%M%S_delete')
Dir.mkdir(TMPDIR)
Dir.chdir(TMPDIR)

TMPFN  = 'Foo'
File.open(TMPFN, 'w') {}

#----------------------------------------------
p Dir.glob('*')   #=> ["Foo"]  ok
p Dir.glob('f?O') #=> ["Foo"]  ok

# But a glob without special characters returns
#  the glob pattern instead of the filename
p Dir.glob('foO') #=> ["foO"]  not wanted
p Dir['foO']      #=> ["foO"]  same as above
p Dir.glob('foO', File::FNM_CASEFOLD)
                # casefold ignored, as docs say
#----------------------------------------------

File.delete(TMPFN)
Dir.delete(File.join('..', TMPDIR))


#+++++
# Same incorrect results from:
#   ruby 1.8.7p334 (2011-02-18) [i386-mingw32]




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