diff options
Diffstat (limited to 'test/test_tmpdir.rb')
-rw-r--r-- | test/test_tmpdir.rb | 42 |
1 files changed, 38 insertions, 4 deletions
diff --git a/test/test_tmpdir.rb b/test/test_tmpdir.rb index 7ef9f59b54..eae0610c87 100644 --- a/test/test_tmpdir.rb +++ b/test/test_tmpdir.rb @@ -12,7 +12,7 @@ class TestTmpdir < Test::Unit::TestCase end def test_world_writable - skip "no meaning on this platform" if /mswin|mingw/ =~ RUBY_PLATFORM + omit "no meaning on this platform" if /mswin|mingw/ =~ RUBY_PLATFORM Dir.mktmpdir do |tmpdir| # ToDo: fix for parallel test envs = %w[TMPDIR TMP TEMP] @@ -23,14 +23,14 @@ class TestTmpdir < Test::Unit::TestCase ENV[e] = tmpdirx assert_not_equal(tmpdirx, assert_warn('') {Dir.tmpdir}) File.write(tmpdirx, "") - assert_not_equal(tmpdirx, assert_warn(/not a directory/) {Dir.tmpdir}) + assert_not_equal(tmpdirx, assert_warn(/\A#{e} is not a directory/) {Dir.tmpdir}) File.unlink(tmpdirx) ENV[e] = tmpdir assert_equal(tmpdir, Dir.tmpdir) File.chmod(0555, tmpdir) - assert_not_equal(tmpdir, assert_warn(/not writable/) {Dir.tmpdir}) + assert_not_equal(tmpdir, assert_warn(/\A#{e} is not writable/) {Dir.tmpdir}) File.chmod(0777, tmpdir) - assert_not_equal(tmpdir, assert_warn(/world-writable/) {Dir.tmpdir}) + assert_not_equal(tmpdir, assert_warn(/\A#{e} is world-writable/) {Dir.tmpdir}) newdir = Dir.mktmpdir("d", tmpdir) do |dir| assert_file.directory? dir assert_equal(tmpdir, File.dirname(dir)) @@ -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 @@ -92,6 +104,12 @@ class TestTmpdir < Test::Unit::TestCase end end + def test_mktmpdir_not_empty_parent + assert_raise(ArgumentError) do + Dir.mktmpdir("foo", "") + end + end + def assert_mktmpdir_traversal Dir.mktmpdir do |target| target = target.chomp('/') + '/' @@ -103,4 +121,20 @@ class TestTmpdir < Test::Unit::TestCase end end end + + def test_ractor + assert_ractor(<<~'end;', require: "tmpdir") + r = Ractor.new do + Dir.mktmpdir() do |d| + Ractor.yield d + Ractor.receive + end + end + dir = r.take + assert_file.directory? dir + r.send true + r.take + assert_file.not_exist? dir + end; + end end |