aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--ChangeLog7
-rw-r--r--ext/pathname/lib/pathname.rb3
-rw-r--r--test/pathname/test_pathname.rb8
3 files changed, 16 insertions, 2 deletions
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 <zn@mbf.nifty.com>
+
+ * 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 <nobu@ruby-lang.org>
* 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