Project

General

Profile

Actions

Bug #8006

closed

Dir.glob behaves differently on 1.9.3 and 2.0

Added by gettalong (Thomas Leitner) about 11 years ago. Updated about 10 years ago.

Status:
Closed
Target version:
-
ruby -v:
ruby 2.0.0p0 (2013-02-24 revision 39474) [x86_64-linux]
[ruby-core:53108]

Description

=begin
While testing an application of mine with Ruby 2.0 I came across the following problem with Dir.glob where the pattern FOO/BAR/**/* does not match the directory FOO/BAR anymore because the implicit directories '.' and '..' don't get matched anymore.

Used files:

$ find data/webgen/basic_website_template/
data/webgen/basic_website_template/
data/webgen/basic_website_template/ext
data/webgen/basic_website_template/ext/init.rb
data/webgen/basic_website_template/webgen.config
data/webgen/basic_website_template/src
data/webgen/basic_website_template/src/.gitignore

With Ruby 1.9.3-p327:

1.9.3-p327 :001 > Dir.glob('data/webgen/basic_website_template/**/*', File::FNM_PATHNAME|File::FNM_DOTMATCH|File::FNM_CASEFOLD)
=> ["data/webgen/basic_website_template/.", "data/webgen/basic_website_template/ext", "data/webgen/basic_website_template/ext/.", "data/webgen/basic_website_template/ext/..", "data/webgen/basic_website_template/ext/init.rb", "data/webgen/basic_website_template/..", "data/webgen/basic_website_template/webgen.config", "data/webgen/basic_website_template/src", "data/webgen/basic_website_template/src/.", "data/webgen/basic_website_template/src/..", "data/webgen/basic_website_template/src/.gitignore"]
1.9.3-p327 :003 >

With Ruby 2.0.0-p0:

2.0.0-p0 :001 > Dir.glob('data/webgen/basic_website_template/**/*', File::FNM_PATHNAME|File::FNM_DOTMATCH|File::FNM_CASEFOLD)
=> ["data/webgen/basic_website_template/ext", "data/webgen/basic_website_template/ext/init.rb", "data/webgen/basic_website_template/webgen.config", "data/webgen/basic_website_template/src", "data/webgen/basic_website_template/src/.gitignore"]

=end

Updated by gettalong (Thomas Leitner) about 11 years ago

=begin
After some more experimenting, it seems that the '**' operator doesn't act the same like in 1.9.3:

With Ruby 2.0.0-p0:

2.0.0p0 :017 > Dir.glob('data/webgen/basic_website_template//', File::FNM_DOTMATCH|File::FNM_CASEFOLD)
=> ["data/webgen/basic_website_template/./.", "data/webgen/basic_website_template/./ext", "data/webgen/basic_website_template/./..", "data/webgen/basic_website_template/./webgen.config", "data/webgen/basic_website_template/./src", "data/webgen/basic_website_template/ext/.", "data/webgen/basic_website_template/ext/..", "data/webgen/basic_website_template/ext/init.rb", "data/webgen/basic_website_template/../.", "data/webgen/basic_website_template/../passive_sources", "data/webgen/basic_website_template/../..", "data/webgen/basic_website_template/../bundle_template_files", "data/webgen/basic_website_template/../basic_website_template", "data/webgen/basic_website_template/src/.", "data/webgen/basic_website_template/src/..", "data/webgen/basic_website_template/src/.gitignore"]
2.0.0p0 :018 > Dir.glob('data/webgen/basic_website_template/**/*', File::FNM_DOTMATCH|File::FNM_CASEFOLD)
=> ["data/webgen/basic_website_template/ext", "data/webgen/basic_website_template/ext/init.rb", "data/webgen/basic_website_template/webgen.config", "data/webgen/basic_website_template/src", "data/webgen/basic_website_template/src/.gitignore"]

=end

Updated by nagachika (Tomoyuki Chikanaga) about 11 years ago

  • Assignee set to nobu (Nobuyoshi Nakada)

Hi,

r36903 seems related with this issue.
I'm not sure it is intentional change or not.
nakada san, what do you think?

Updated by gettalong (Thomas Leitner) about 11 years ago

=begin
For your information, I have fixed this problem in my code, see the ((<commit on Github|URL:https://github.com/gettalong/webgen/commit/8c49da9143569c8b68d6172199e12a9b8274e5bd>)).

Would be good, though, to know whether this is intentional or not.

Thanks!
=end

Actions #4

Updated by nobu (Nobuyoshi Nakada) over 10 years ago

  • Status changed from Open to Closed
  • % Done changed from 0 to 100

This issue was solved with changeset r43385.
Thomas, thank you for reporting this issue.
Your contribution to Ruby is greatly appreciated.
May Ruby be with you.


dir.c: DOTMATCH to current directory

Updated by nobu (Nobuyoshi Nakada) over 10 years ago

  • Backport set to 1.9.3: DONTNEED, 2.0.0: REQUIRED

Updated by nagachika (Tomoyuki Chikanaga) about 10 years ago

  • Backport changed from 1.9.3: DONTNEED, 2.0.0: REQUIRED to 1.9.3: DONTNEED, 2.0.0: DONE

r43385 was backported to uby_2_0_0 branch at r44897.

Actions

Also available in: Atom PDF

Like0
Like0Like0Like0Like0Like0Like0