summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorNobuyoshi Nakada <[email protected]>2024-12-16 18:31:10 +0900
committergit <[email protected]>2024-12-16 09:40:01 +0000
commitbf0f3239071a9fa11dc1b9553106eb37c89f384c (patch)
tree972e8f727f066ce5efe229a6b468bb6ae64fa2e0
parenteef4e8a2c89f6c15096a43ea6783aa7994f1d0ca (diff)
[ruby/tmpdir] Fix for path-like objects
Fix https://github.com/ruby/tmpdir/pull/37 https://github.com/ruby/tmpdir/commit/a8ceafae7d
-rw-r--r--lib/tmpdir.rb2
-rw-r--r--test/test_tmpdir.rb10
2 files changed, 11 insertions, 1 deletions
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