Issue #16831 has been updated by jnchito (Junichi Ito).


nobu (Nobuyoshi Nakada) wrote in #note-1:
> Actually `.` and `..` entries are kept.
> Just `Pathname("/Users/jnito/dev/..")` is cleaned up as `Pathname("/Users/jnito")`.

That's true, but I feel the following code should have consistent results:

``` ruby
require 'pathname'

pathname = Pathname.pwd

Pathname(Dir.glob(pathname.join('*'), File::FNM_DOTMATCH).sort[0]).basename.to_s
#=> .
Pathname.glob(pathname.join('*'), File::FNM_DOTMATCH).sort[0].basename.to_s
#=> .

# This line doesn't return "."
pathname.glob('*', File::FNM_DOTMATCH).sort[0].basename.to_s
#=> jnito
```


----------------------------------------
Bug #16831: Running `Pathname#glob` with `File::FNM_DOTMATCH` option loses `.` and `..`
https://bugs.ruby-lang.org/issues/16831#change-85402

* Author: jnchito (Junichi Ito)
* Status: Open
* Priority: Normal
* ruby -v: ruby 2.7.1p83 (2020-03-31 revision a0c7c23c9c) [x86_64-darwin19]
* Backport: 2.5: UNKNOWN, 2.6: UNKNOWN, 2.7: UNKNOWN
----------------------------------------
Running `Dir.glob`, `Pathname.glob` with `File::FNM_DOTMATCH` option keeps `.` and `..` as their basename:

``` ruby
require 'pathname'

pathname = Pathname.pwd
#=> #<Pathname:/Users/jnito/dev>

# Dir.glob keeps "." and ".."
Dir.glob(pathname.join('*'), File::FNM_DOTMATCH).sort[0..1]
#=> ["/Users/jnito/dev/.", "/Users/jnito/dev/.."]

# Pathname.glob keeps "." and ".." too
Pathname.glob(pathname.join('*'), File::FNM_DOTMATCH).sort[0..1]
#=> [#<Pathname:/Users/jnito/dev/.>, #<Pathname:/Users/jnito/dev/..>]
```

I expect `Pathname#glob` with `File::FNM_DOTMATCH` option has same behavior, but it loses `.` and `..`:

``` ruby
# Pathname#glob loses "." and ".."
pathname.glob('*', File::FNM_DOTMATCH).sort[0..1]
#=> [#<Pathname:/Users/jnito>, #<Pathname:/Users/jnito/dev>]
```

I wanted to replace my code from `Pathname.glob(pathname.join('*'), File::FNM_DOTMATCH)` to `pathname.glob('*', File::FNM_DOTMATCH)`, but I couldn't do due to their incompatibility. So I want `Pathname#glob` to keep `.` and `..`.




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

Unsubscribe: <mailto:ruby-core-request / ruby-lang.org?subject=unsubscribe>
<http://lists.ruby-lang.org/cgi-bin/mailman/options/ruby-core>