From bf0f3239071a9fa11dc1b9553106eb37c89f384c Mon Sep 17 00:00:00 2001 From: Nobuyoshi Nakada Date: Mon, 16 Dec 2024 18:31:10 +0900 Subject: [PATCH] [ruby/tmpdir] Fix for path-like objects Fix https://github.com/ruby/tmpdir/pull/37 https://github.com/ruby/tmpdir/commit/a8ceafae7d --- lib/tmpdir.rb | 2 +- test/test_tmpdir.rb | 10 ++++++++++ 2 files changed, 11 insertions(+), 1 deletion(-) diff --git a/lib/tmpdir.rb b/lib/tmpdir.rb index a5f10fe9cb..967a011cf3 100644 --- a/lib/tmpdir.rb +++ b/lib/tmpdir.rb @@ -149,8 +149,8 @@ class Dir # Generates and yields random names to create a temporary name def create(basename, tmpdir=nil, max_try: nil, **opts) - origdir = tmpdir if tmpdir + origdir = tmpdir = File.path(tmpdir) raise ArgumentError, "empty parent path" if tmpdir.empty? else tmpdir = tmpdir() diff --git a/test/test_tmpdir.rb b/test/test_tmpdir.rb index eae0610c87..adc29183a8 100644 --- a/test/test_tmpdir.rb +++ b/test/test_tmpdir.rb @@ -108,6 +108,16 @@ class TestTmpdir < Test::Unit::TestCase assert_raise(ArgumentError) do Dir.mktmpdir("foo", "") end + + path = Struct.new(:to_path).new("") + assert_raise(ArgumentError) do + Dir.mktmpdir("foo", path) + end + + Dir.mktmpdir do |d| + path = Struct.new(:to_path).new(d) + assert_operator(Dir.mktmpdir("prefix-", path), :start_with?, d + "/prefix-") + end end def assert_mktmpdir_traversal