diff --git a/ChangeLog b/ChangeLog index ba86ab5dd5..a65c66a3ce 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,3 +1,10 @@ +Tue Mar 25 23:32:25 2014 Kazuhiro NISHIYAMA + + * ext/pathname/lib/pathname.rb (Pathname#join): remove unnecessary + unshift. + + * test/pathname/test_pathname.rb (TestPathname#test_join): add tests. + Tue Mar 25 16:47:36 2014 Nobuyoshi Nakada * parse.y (lex_state_e, parser_params, f_arglist, parser_yylex): diff --git a/ext/pathname/lib/pathname.rb b/ext/pathname/lib/pathname.rb index 20c92e23dc..bbcb5e4e2a 100644 --- a/ext/pathname/lib/pathname.rb +++ b/ext/pathname/lib/pathname.rb @@ -384,7 +384,6 @@ class Pathname # #=> true # def join(*args) - args.unshift self result = args.pop result = Pathname.new(result) unless Pathname === result return result if result.absolute? @@ -393,7 +392,7 @@ class Pathname result = arg + result return result if result.absolute? } - result + self + result end # diff --git a/test/pathname/test_pathname.rb b/test/pathname/test_pathname.rb index ed79b5b8f5..94bd8d8872 100644 --- a/test/pathname/test_pathname.rb +++ b/test/pathname/test_pathname.rb @@ -234,6 +234,14 @@ class TestPathname < Test::Unit::TestCase def test_join r = Pathname("a").join(Pathname("b"), Pathname("c")) assert_equal(Pathname("a/b/c"), r) + r = Pathname("/a").join(Pathname("b"), Pathname("c")) + assert_equal(Pathname("/a/b/c"), r) + r = Pathname("/a").join(Pathname("/b"), Pathname("c")) + assert_equal(Pathname("/b/c"), r) + r = Pathname("/a").join(Pathname("/b"), Pathname("/c")) + assert_equal(Pathname("/c"), r) + r = Pathname("/a").join("/b", "/c") + assert_equal(Pathname("/c"), r) end def test_absolute