summaryrefslogtreecommitdiff
path: root/test/ruby
diff options
context:
space:
mode:
authorJeremy Evans <code@jeremyevans.net>2023-02-09 13:34:37 -0800
committerJeremy Evans <code@jeremyevans.net>2023-03-24 11:18:57 -0700
commit836e9a192ba4fdc56a2d3d94f5840869f77fd3bf (patch)
treefe69ae558f9f382ca7f8826f8349405eed9055d1 /test/ruby
parent3be65f63c79492908e898d8d7281035445a2b9a1 (diff)
downloadruby-836e9a192ba4fdc56a2d3d94f5840869f77fd3bf.tar.gz
Add Dir.for_fd
This returns a Dir instance for the given directory file descriptor. If fdopendir is not supported, this raises NotImplementedError. Implements [Feature #19347]
Diffstat (limited to 'test/ruby')
-rw-r--r--test/ruby/test_dir.rb15
1 files changed, 15 insertions, 0 deletions
diff --git a/test/ruby/test_dir.rb b/test/ruby/test_dir.rb
index 36480023fb..65803d0bc5 100644
--- a/test/ruby/test_dir.rb
+++ b/test/ruby/test_dir.rb
@@ -639,6 +639,21 @@ class TestDir < Test::Unit::TestCase
}
end
+ def test_for_fd
+ if Dir.respond_to? :for_fd
+ begin
+ new_dir = Dir.new('..')
+ for_fd_dir = Dir.for_fd(new_dir.fileno)
+ assert_equal(new_dir.chdir{Dir.pwd}, for_fd_dir.chdir{Dir.pwd})
+ ensure
+ new_dir&.close
+ for_fd_dir&.close
+ end
+ else
+ assert_raise(NotImplementedError) { Dir.for_fd(0) }
+ end
+ end
+
def test_empty?
assert_not_send([Dir, :empty?, @root])
a = File.join(@root, "a")