Skip to content

Commit

Permalink
[ruby/tmpdir] Warn when environment variables skipped (fixes #2)
Browse files Browse the repository at this point in the history
  • Loading branch information
nobu authored and hsbt committed Sep 14, 2020
1 parent df1c035 commit edb5c67
Show file tree
Hide file tree
Showing 2 changed files with 15 additions and 8 deletions.
15 changes: 11 additions & 4 deletions lib/tmpdir.rb
Expand Up @@ -20,14 +20,21 @@ class Dir

def self.tmpdir
tmp = nil
[ENV['TMPDIR'], ENV['TMP'], ENV['TEMP'], @@systmpdir, '/tmp', '.'].each do |dir|
['TMPDIR', 'TMP', 'TEMP', ['system temporary path', @@systmpdir], ['/tmp']*2, ['.']*2].each do |name, dir = ENV[name]|
next if !dir
dir = File.expand_path(dir)
if stat = File.stat(dir) and stat.directory? and stat.writable? and
(!stat.world_writable? or stat.sticky?)
stat = File.stat(dir) rescue next
case
when !stat.directory?
warn "#{name} is not a directory: #{dir}"
when !stat.writable?
warn "#{name} is not writable: #{dir}"
when stat.world_writable? && !stat.sticky?
warn "#{name} is world-writable: #{dir}"
else
tmp = dir
break
end rescue nil
end
end
raise ArgumentError, "could not find a temporary directory" unless tmp
tmp
Expand Down
8 changes: 4 additions & 4 deletions test/test_tmpdir.rb
Expand Up @@ -21,16 +21,16 @@ def test_world_writable
envs.each do |e|
tmpdirx = File.join(tmpdir, e)
ENV[e] = tmpdirx
assert_not_equal(tmpdirx, Dir.tmpdir)
assert_not_equal(tmpdirx, assert_warn('') {Dir.tmpdir})
File.write(tmpdirx, "")
assert_not_equal(tmpdirx, Dir.tmpdir)
assert_not_equal(tmpdirx, assert_warn(/not a directory/) {Dir.tmpdir})
File.unlink(tmpdirx)
ENV[e] = tmpdir
assert_equal(tmpdir, Dir.tmpdir)
File.chmod(0555, tmpdir)
assert_not_equal(tmpdir, Dir.tmpdir)
assert_not_equal(tmpdir, assert_warn(/not writable/) {Dir.tmpdir})
File.chmod(0777, tmpdir)
assert_not_equal(tmpdir, Dir.tmpdir)
assert_not_equal(tmpdir, assert_warn(/world-writable/) {Dir.tmpdir})
newdir = Dir.mktmpdir("d", tmpdir) do |dir|
assert_file.directory? dir
assert_equal(tmpdir, File.dirname(dir))
Expand Down

0 comments on commit edb5c67

Please sign in to comment.