Dir.chdir with no arguments is supposed to default to $HOME but JRuby is not doing that:
require "test/unit"
class TC_Dir_Chdir_Class < Test::Unit::TestCase
def setup
@pwd = Dir.pwd
@old_home = ENV["HOME"] || ENV["LOGDIR"]
ENV["HOME"] = @pwd
end
def test_chdir_basic
assert_respond_to(Dir, :chdir)
assert_nothing_raised{ Dir.chdir }
assert_nothing_raised{ Dir.chdir(@pwd) }
assert_nothing_raised{ Dir.chdir(@pwd){} }
end
def test_chdir
assert_equal(0, Dir.chdir(@pwd))
assert_nothing_raised{ Dir.chdir }
assert_equal(@pwd, Dir.pwd)
end
def test_chdir_block
assert_nothing_raised{ Dir.chdir{ @old_home } }
assert_equal(@pwd, Dir.pwd)
end
def test_chdir_expected_errors
assert_raises(ArgumentError){ Dir.chdir(@pwd, @pwd) }
assert_raises(TypeError){ Dir.chdir(1) }
ENV["HOME"] = "bogus"
assert_raises(Errno::ENOENT){ Dir.chdir }
end
def teardown
system("chdir #{@pwd}")
ENV["HOME"] = @old_home
@pwd = nil
end
end
You'll see something like this:
1) Failure:
test_chdir(TC_Dir_Chdir_Class) [test/core/Dir/class/tc_chdir.rb:25]:
<"/export/home/djberge/workspace/ruby_test"> expected but was
<"/export/home/djberge">.
2) Failure:
test_chdir_expected_errors(TC_Dir_Chdir_Class) [test/core/Dir/class/tc_chdir.rb:38]:
<Errno::ENOENT> exception expected but none was thrown.
Regards,
Dan
System.getProperty("user.home")