Bug #18436
closedFix Pathname dot directory globbing
Description
Overview¶
With 3.1.0, I'm seeing different behavior when trying to obtain directories which have a dot (.) prefix. With 3.0.x, ..
would be answered but with 3.1.0, ..
is missing. Is this to be expected because the documentation states that Dir.glob
should include ..
since Pathname.glob
wraps Dir.glob
.
If this is desired behavior feel free to close this issue but it caught me by surprise so wanted to ask in case it's a concern. Thanks!
Screenshots/Screencasts¶
(see attached screenshot where I demonstration behavior between 3.0.3 and 3.1.0.)
Steps to Recreate¶
- Create a new project directory called "demo" and then change directory to "demo".
- Create a sub-directory call
.config
. - Using Ruby 3.0.3, launch IRB.
- Run:
require "pathname"
- Run:
Pathname.glob("*", File::FNM_DOTMATCH).select(&:directory?).sort
- Repeat Steps #4 - #5 using 3.1.0 this time and notice the difference in behavior.
Environment¶
Ruby 3.0.3 and 3.1.0.
Files
Updated by znz (Kazuhiro NISHIYAMA) almost 3 years ago
- Related to Bug #17280: Dir.glob with FNM_DOTMATCH matches ".." and "." and results in duplicated entries added
Updated by jeremyevans0 (Jeremy Evans) almost 3 years ago
The glob difference between Ruby 3.0 and 3.1 is expected, as the change was made to fix bug #17280. Looks like the documentation needs to be updated to reflect the change. I'll take care of that shortly.
Updated by jeremyevans (Jeremy Evans) almost 3 years ago
- Status changed from Open to Closed
Applied in changeset git|5917f49ad03cd3b2c13d3eea85c969a113b83bf8.
Fix documentation for Dir.glob
Dir.glob("*", File::FNM_DOTMATCH) no longer includes ".." in the
returned array as of Ruby 3.1.
Fixes [Bug #18436]
Updated by jeremyevans0 (Jeremy Evans) almost 3 years ago
- Backport changed from 2.6: UNKNOWN, 2.7: UNKNOWN, 3.0: UNKNOWN, 3.1: UNKNOWN to 2.6: DONTNEED, 2.7: DONTNEED, 3.0: DONTNEED, 3.1: REQUIRED
Updated by naruse (Yui NARUSE) almost 3 years ago
- Backport changed from 2.6: DONTNEED, 2.7: DONTNEED, 3.0: DONTNEED, 3.1: REQUIRED to 2.6: DONTNEED, 2.7: DONTNEED, 3.0: DONTNEED, 3.1: DONE
ruby_3_1 e75246c287436621658bc2b8a5f999d8991e7d1d merged revision(s) 5917f49ad03cd3b2c13d3eea85c969a113b83bf8.
Updated by jnchito (Junichi Ito) almost 3 years ago
I noticed this change just now. We have some programs which depended on the previous behavior. It loses backward compatibility, so I think it should have been noted in NEWS.md in Ruby 3.1.0. I understand it's too late to say that, though.