From ed353ff1bb6df83138ba33b083bc2d258ad75cfe Mon Sep 17 00:00:00 2001 From: akr Date: Sat, 3 Sep 2005 05:02:13 +0000 Subject: [PATCH] * lib/pathname.rb (Pathname#descend): Pathname.new("./a/b/c").descend didn't yield "." (Pathname#ascend): ditto. git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@9073 b2dd03c8-39d4-4d8f-98ff-823fe69b080e --- ChangeLog | 6 ++++++ lib/pathname.rb | 47 +++++++++++++++++++++++++++++------------------ 2 files changed, 35 insertions(+), 18 deletions(-) diff --git a/ChangeLog b/ChangeLog index 1c04c79698..ff72fc4005 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,3 +1,9 @@ +Sat Sep 3 13:59:31 2005 Tanaka Akira + + * lib/pathname.rb (Pathname#descend): Pathname.new("./a/b/c").descend + didn't yield "." + (Pathname#ascend): ditto. + Fri Sep 2 23:51:54 2005 Nobuyoshi Nakada * parse.y (f_arg): f_norm_arg is a VALUE in ripper, not an ID. diff --git a/lib/pathname.rb b/lib/pathname.rb index d9dabd0ca0..7b371def2b 100644 --- a/lib/pathname.rb +++ b/lib/pathname.rb @@ -448,10 +448,11 @@ class Pathname end paths << v else - until v.to_s == '.' + until v.basename == v paths << v v = v.dirname end + paths << v end paths.reverse_each {|path| yield path } end @@ -482,10 +483,11 @@ class Pathname end paths << v else - until v.to_s == '.' + until v.basename == v paths << v v = v.dirname end + paths << v end paths.each {|path| yield path } end @@ -1273,31 +1275,40 @@ if $0 == __FILE__ end def test_descend_abs - rs = %w[/ /a /a/b /a/b/c] - Pathname.new("/a/b/c").descend {|v| - assert_equal(Pathname.new(rs.shift), v) - } + rs = %w[/ /a /a/b /a/b/c].map {|s| Pathname.new(s) } + Pathname.new("/a/b/c").descend {|v| assert_equal(rs.shift, v) } + assert_equal([], rs) end def test_descend_rel - rs = %w[a a/b a/b/c] - Pathname.new("a/b/c").descend {|v| - assert_equal(Pathname.new(rs.shift), v) - } + rs = %w[a a/b a/b/c].map {|s| Pathname.new(s) } + Pathname.new("a/b/c").descend {|v| assert_equal(rs.shift, v) } + assert_equal([], rs) + end + + def test_descend_rel_with_current_dir + rs = %w[. ./a ./a/b ./a/b/c].map {|s| Pathname.new(s) } + Pathname.new("./a/b/c").descend {|v| assert_equal(rs.shift, v) } + assert_equal([], rs) end def test_ascend_abs - rs = %w[/a/b/c /a/b /a /] - Pathname.new("/a/b/c").ascend {|v| - assert_equal(Pathname.new(rs.shift), v) - } + rs = %w[/a/b/c /a/b /a /].map {|s| Pathname.new(s) } + Pathname.new("/a/b/c").ascend {|v| assert_equal(rs.shift, v) } + assert_equal([], rs) end def test_ascend_rel - rs = %w[a/b/c a/b a] - Pathname.new("a/b/c").ascend {|v| - assert_equal(Pathname.new(rs.shift), v) - } + rs = %w[a/b/c a/b a].map {|s| Pathname.new(s) } + Pathname.new("a/b/c").ascend {|v| assert_equal(rs.shift, v) } + assert_equal([], rs) end + + def test_ascend_rel_with_current_dir + rs = %w[./a/b/c ./a/b ./a .].map {|s| Pathname.new(s) } + Pathname.new("./a/b/c").ascend {|v| assert_equal(rs.shift, v) } + assert_equal([], rs) + end + end end