Skip to content

Dir['**/*'] resolves symlinks, but MRI does not #1036

@denisdefreyne

Description

@denisdefreyne

Overview

In JRuby, Dir['**/*'] resolves symlinks and returns files in symlinked directories, but in MRI it does not.

Steps to reproduce

Run the test case below, or manually recreate the problem:

  1. mkdir foo
  2. touch foo/blah
  3. ln -s foo foolink

Run Dir['**/*'].sort and observe the return value.

Expected result

[ 'foo', 'foo/blah', 'foolink' ]

Actual result

[ 'foo', 'foo/blah', 'foolink', 'foolink/blah' ]

Versions affected

  • jruby 1.7.4 (1.9.3p392)

Test case

require 'minitest'
require 'minitest/autorun'
require 'tmpdir'
require 'fileutils'

class SymlinksNotResolvedTest < Minitest::Test

  def test_symlinks_not_resolved
    Dir.mktmpdir do |dirname|
      FileUtils.cd(dirname) do
        FileUtils.mkdir_p('some-dir')
        File.write('some-dir/foo', 'some content')
        File.symlink('some-dir', 'dir-symlink')

        assert_equal [ 'dir-symlink', 'some-dir' ], Dir['*'].sort
        assert_equal [ 'dir-symlink', 'some-dir', 'some-dir/foo' ], Dir['**/*'].sort
      end
    end
  end

end

Metadata

Metadata

Assignees

No one assigned

    Labels

    Type

    No type

    Projects

    No projects

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions