Project

General

Profile

Actions

Bug #18436

closed

Fix Pathname dot directory globbing

Added by bkuhlmann (Brooke Kuhlmann) 6 months ago. Updated 5 months ago.

Status:
Closed
Priority:
Normal
Assignee:
-
Target version:
-
ruby -v:
ruby 3.1.0p0 (2021-12-25 revision fb4df44d16) [arm64-darwin21.2.0]
[ruby-core:106830]

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

  1. Create a new project directory called "demo" and then change directory to "demo".
  2. Create a sub-directory call .config.
  3. Using Ruby 3.0.3, launch IRB.
  4. Run: require "pathname"
  5. Run: Pathname.glob("*", File::FNM_DOTMATCH).select(&:directory?).sort
  6. 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

screenshot.png (48.2 KB) screenshot.png IRB Demonstration bkuhlmann (Brooke Kuhlmann), 12/26/2021 09:59 PM

Related issues 1 (0 open1 closed)

Related to Ruby master - Bug #17280: Dir.glob with FNM_DOTMATCH matches ".." and "." and results in duplicated entriesClosedActions
Actions #1

Updated by znz (Kazuhiro NISHIYAMA) 6 months ago

  • Related to Bug #17280: Dir.glob with FNM_DOTMATCH matches ".." and "." and results in duplicated entries added

Updated by jeremyevans0 (Jeremy Evans) 6 months 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.

Actions #3

Updated by jeremyevans (Jeremy Evans) 6 months 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]

Actions #4

Updated by jeremyevans0 (Jeremy Evans) 6 months 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) 5 months 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) 5 months 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.

Actions

Also available in: Atom PDF