[ruby/tmpdir] Ignore empty environment variables

Fixes https://github.com/ruby/tmpdir/pull/17

https://github.com/ruby/tmpdir/commit/a79c727a5d
This commit is contained in:
Nobuyoshi Nakada 2022-10-25 16:39:12 +09:00 committed by git
parent 883d9c305f
commit 114e71d062
2 changed files with 16 additions and 2 deletions

View File

@ -19,8 +19,10 @@ class Dir
# Returns the operating system's temporary file path.
def self.tmpdir
['TMPDIR', 'TMP', 'TEMP', ['system temporary path', @@systmpdir], ['/tmp']*2, ['.']*2].find do |name, dir = ENV[name]|
next if !dir
['TMPDIR', 'TMP', 'TEMP', ['system temporary path', @@systmpdir], ['/tmp']*2, ['.']*2].find do |name, dir|
unless dir
next if !(dir = ENV[name]) or dir.empty?
end
dir = File.expand_path(dir)
stat = File.stat(dir) rescue next
case

View File

@ -47,6 +47,18 @@ class TestTmpdir < Test::Unit::TestCase
end
end
def test_tmpdir_not_empty_parent
Dir.mktmpdir do |tmpdir|
envs = %w[TMPDIR TMP TEMP]
oldenv = envs.each_with_object({}) {|v, h| h[v] = ENV.delete(v)}
ENV[envs[0]] = ""
ENV[envs[1]] = tmpdir
assert_equal(tmpdir, Dir.tmpdir)
ensure
ENV.update(oldenv)
end
end
def test_no_homedir
bug7547 = '[ruby-core:50793]'
home, ENV["HOME"] = ENV["HOME"], nil