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