Skip to content

Commit af7b020

Browse files
committed
Warn when environment variables skipped (fixes #2)
1 parent fc39e3b commit af7b020

File tree

2 files changed

+15
-8
lines changed

2 files changed

+15
-8
lines changed

lib/tmpdir.rb

Lines changed: 11 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -20,14 +20,21 @@ class Dir
2020

2121
def self.tmpdir
2222
tmp = nil
23-
[ENV['TMPDIR'], ENV['TMP'], ENV['TEMP'], @@systmpdir, '/tmp', '.'].each do |dir|
23+
['TMPDIR', 'TMP', 'TEMP', ['system temporary path', @@systmpdir], ['/tmp']*2, ['.']*2].each do |name, dir = ENV[name]|
2424
next if !dir
2525
dir = File.expand_path(dir)
26-
if stat = File.stat(dir) and stat.directory? and stat.writable? and
27-
(!stat.world_writable? or stat.sticky?)
26+
stat = File.stat(dir) rescue next
27+
case
28+
when !stat.directory?
29+
warn "#{name} is not a directory: #{dir}"
30+
when !stat.writable?
31+
warn "#{name} is not writable: #{dir}"
32+
when stat.world_writable? && !stat.sticky?
33+
warn "#{name} is world-writable: #{dir}"
34+
else
2835
tmp = dir
2936
break
30-
end rescue nil
37+
end
3138
end
3239
raise ArgumentError, "could not find a temporary directory" unless tmp
3340
tmp

test/test_tmpdir.rb

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -21,16 +21,16 @@ def test_world_writable
2121
envs.each do |e|
2222
tmpdirx = File.join(tmpdir, e)
2323
ENV[e] = tmpdirx
24-
assert_not_equal(tmpdirx, Dir.tmpdir)
24+
assert_not_equal(tmpdirx, assert_warn('') {Dir.tmpdir})
2525
File.write(tmpdirx, "")
26-
assert_not_equal(tmpdirx, Dir.tmpdir)
26+
assert_not_equal(tmpdirx, assert_warn(/not a directory/) {Dir.tmpdir})
2727
File.unlink(tmpdirx)
2828
ENV[e] = tmpdir
2929
assert_equal(tmpdir, Dir.tmpdir)
3030
File.chmod(0555, tmpdir)
31-
assert_not_equal(tmpdir, Dir.tmpdir)
31+
assert_not_equal(tmpdir, assert_warn(/not writable/) {Dir.tmpdir})
3232
File.chmod(0777, tmpdir)
33-
assert_not_equal(tmpdir, Dir.tmpdir)
33+
assert_not_equal(tmpdir, assert_warn(/world-writable/) {Dir.tmpdir})
3434
newdir = Dir.mktmpdir("d", tmpdir) do |dir|
3535
assert_file.directory? dir
3636
assert_equal(tmpdir, File.dirname(dir))

0 commit comments

Comments
 (0)
pFad - Phonifier reborn

Pfad - The Proxy pFad of © 2024 Garber Painting. All rights reserved.

Note: This service is not intended for secure transactions such as banking, social media, email, or purchasing. Use at your own risk. We assume no liability whatsoever for broken pages.


Alternative Proxies:

Alternative Proxy

pFad Proxy

pFad v3 Proxy

pFad v4 Proxy