From ac12877306a6548e0bd6e47f08fc42ee5994017e Mon Sep 17 00:00:00 2001 From: Nobuyoshi Nakada Date: Mon, 13 Jul 2020 19:21:01 +0900 Subject: [PATCH 1/4] Prefer better failure message --- test/test_tmpdir.rb | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/test/test_tmpdir.rb b/test/test_tmpdir.rb index 50583b5..5cd0b5e 100644 --- a/test/test_tmpdir.rb +++ b/test/test_tmpdir.rb @@ -5,7 +5,7 @@ class TestTmpdir < Test::Unit::TestCase def test_tmpdir_modifiable tmpdir = Dir.tmpdir - assert_equal(false, tmpdir.frozen?) + assert_not_predicate(tmpdir, :frozen?) tmpdir_org = tmpdir.dup tmpdir << "foo" assert_equal(tmpdir_org, Dir.tmpdir) From 414c00ebe6ea4102ffb44b4c3c46ed999c84e85b Mon Sep 17 00:00:00 2001 From: Nobuyoshi Nakada Date: Mon, 13 Jul 2020 19:44:52 +0900 Subject: [PATCH 2/4] Test also TMP and TEMP environment variables --- test/test_tmpdir.rb | 29 +++++++++++++++++------------ 1 file changed, 17 insertions(+), 12 deletions(-) diff --git a/test/test_tmpdir.rb b/test/test_tmpdir.rb index 5cd0b5e..039b5be 100644 --- a/test/test_tmpdir.rb +++ b/test/test_tmpdir.rb @@ -15,21 +15,26 @@ def test_world_writable skip "no meaning on this platform" if /mswin|mingw/ =~ RUBY_PLATFORM Dir.mktmpdir do |tmpdir| # ToDo: fix for parallel test - olddir, ENV["TMPDIR"] = ENV["TMPDIR"], tmpdir + envs = %w[TMPDIR TMP TEMP] + oldenv = envs.each_with_object({}) {|v, h| h[v] = ENV.delete(v)} begin - assert_equal(tmpdir, Dir.tmpdir) - File.chmod(0777, tmpdir) - assert_not_equal(tmpdir, Dir.tmpdir) - newdir = Dir.mktmpdir("d", tmpdir) do |dir| - assert_file.directory? dir - assert_equal(tmpdir, File.dirname(dir)) - dir + envs.each do |e| + ENV[e] = tmpdir + assert_equal(tmpdir, Dir.tmpdir) + File.chmod(0777, tmpdir) + assert_not_equal(tmpdir, Dir.tmpdir) + newdir = Dir.mktmpdir("d", tmpdir) do |dir| + assert_file.directory? dir + assert_equal(tmpdir, File.dirname(dir)) + dir + end + assert_file.not_exist?(newdir) + File.chmod(01777, tmpdir) + assert_equal(tmpdir, Dir.tmpdir) + ENV[e] = nil end - assert_file.not_exist?(newdir) - File.chmod(01777, tmpdir) - assert_equal(tmpdir, Dir.tmpdir) ensure - ENV["TMPDIR"] = olddir + ENV.update(oldenv) end end end From f335f2c23ea5cd6f23720fdd74ec81db308dfa49 Mon Sep 17 00:00:00 2001 From: Nobuyoshi Nakada Date: Mon, 13 Jul 2020 21:26:06 +0900 Subject: [PATCH 3/4] Test "not a directory" cases --- test/test_tmpdir.rb | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/test/test_tmpdir.rb b/test/test_tmpdir.rb index 039b5be..45342c4 100644 --- a/test/test_tmpdir.rb +++ b/test/test_tmpdir.rb @@ -19,6 +19,12 @@ def test_world_writable oldenv = envs.each_with_object({}) {|v, h| h[v] = ENV.delete(v)} begin envs.each do |e| + tmpdirx = File.join(tmpdir, e) + ENV[e] = tmpdirx + assert_not_equal(tmpdirx, Dir.tmpdir) + File.write(tmpdirx, "") + assert_not_equal(tmpdirx, Dir.tmpdir) + File.unlink(tmpdirx) ENV[e] = tmpdir assert_equal(tmpdir, Dir.tmpdir) File.chmod(0777, tmpdir) From 84684d80f998f2a93cbeef0e2a11bcd95583dcb8 Mon Sep 17 00:00:00 2001 From: Nobuyoshi Nakada Date: Mon, 13 Jul 2020 21:39:32 +0900 Subject: [PATCH 4/4] Test "not writable" case --- test/test_tmpdir.rb | 2 ++ 1 file changed, 2 insertions(+) diff --git a/test/test_tmpdir.rb b/test/test_tmpdir.rb index 45342c4..7cee2e1 100644 --- a/test/test_tmpdir.rb +++ b/test/test_tmpdir.rb @@ -27,6 +27,8 @@ def test_world_writable File.unlink(tmpdirx) ENV[e] = tmpdir assert_equal(tmpdir, Dir.tmpdir) + File.chmod(0555, tmpdir) + assert_not_equal(tmpdir, Dir.tmpdir) File.chmod(0777, tmpdir) assert_not_equal(tmpdir, Dir.tmpdir) newdir = Dir.mktmpdir("d", tmpdir) do |dir|