mirror of
https://github.com/ruby/ruby.git
synced 2022-11-09 12:17:21 -05:00
* lib/uri/generic.rb (URI::Generic#merge_path):
"URI('http://www.example.com/foo/..') + './'" should return "URI('http://www.example.com/')". [ruby-list:39838] "URI('http://www.example.com/') + './foo/bar/..'" should return "URI('http://www.example.com/foo/')". [ruby-list:39844] * test/uri/test_generic.rb (TestGeneric#test_merge): added tests. git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@6620 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
This commit is contained in:
parent
db850b21fd
commit
f461a6b8e5
3 changed files with 47 additions and 6 deletions
10
ChangeLog
10
ChangeLog
|
@ -1,3 +1,13 @@
|
|||
Tue Jul 13 19:39:12 2004 akira yamada <akira@ruby-lang.org>
|
||||
|
||||
* lib/uri/generic.rb (URI::Generic#merge_path):
|
||||
"URI('http://www.example.com/foo/..') + './'" should return
|
||||
"URI('http://www.example.com/')". [ruby-list:39838]
|
||||
"URI('http://www.example.com/') + './foo/bar/..'" should return
|
||||
"URI('http://www.example.com/foo/')". [ruby-list:39844]
|
||||
|
||||
* test/uri/test_generic.rb (TestGeneric#test_merge): added tests.
|
||||
|
||||
Tue Jul 13 15:48:56 2004 Akinori MUSHA <knu@iDaemons.org>
|
||||
|
||||
* lib/mkmf.rb (init_mkmf): Do not add $(libdir) to $LIBPATH in
|
||||
|
|
|
@ -630,16 +630,20 @@ module URI
|
|||
base_path = split_path(base)
|
||||
rel_path = split_path(rel)
|
||||
|
||||
# RFC2396, Section 5.2, 6), a)
|
||||
base_path << '' if base_path.last == '..'
|
||||
while i = base_path.index('..')
|
||||
base_path.slice!(i - 1, 2)
|
||||
end
|
||||
if base_path.empty?
|
||||
base_path = [''] # XXX
|
||||
base_path = [''] # keep '/' for root directory
|
||||
else
|
||||
base_path.pop
|
||||
end
|
||||
|
||||
# RFC2396, Section 5.2, 6), a)
|
||||
base_path.pop unless base_path.size == 1
|
||||
|
||||
# RFC2396, Section 5.2, 6), c)
|
||||
# RFC2396, Section 5.2, 6), d)
|
||||
rel_path.push('') if rel_path.last == '.'
|
||||
# RFC2396, Section 5.2, 6), d)
|
||||
rel_path.push('') if rel_path.last == '.' || rel_path.last == '..'
|
||||
rel_path.delete('.')
|
||||
|
||||
# RFC2396, Section 5.2, 6), e)
|
||||
|
|
|
@ -163,6 +163,33 @@ class TestGeneric < Test::Unit::TestCase
|
|||
u0 = URI.parse('mailto:foo@example.com')
|
||||
u1 = URI.parse('mailto:foo@example.com#bar')
|
||||
assert_equal(uri_to_ary(u0 + '#bar'), uri_to_ary(u1))
|
||||
|
||||
# [ruby-list:39838]
|
||||
u0 = URI.parse('http://www.example.com/')
|
||||
u1 = URI.parse('http://www.example.com/foo/..') + './'
|
||||
assert_equal(u0, u1)
|
||||
u0 = URI.parse('http://www.example.com/foo/')
|
||||
u1 = URI.parse('http://www.example.com/foo/bar/..') + './'
|
||||
assert_equal(u0, u1)
|
||||
u0 = URI.parse('http://www.example.com/foo/bar/')
|
||||
u1 = URI.parse('http://www.example.com/foo/bar/baz/..') + './'
|
||||
assert_equal(u0, u1)
|
||||
u0 = URI.parse('http://www.example.com/')
|
||||
u1 = URI.parse('http://www.example.com/foo/bar/../..') + './'
|
||||
assert_equal(u0, u1)
|
||||
u0 = URI.parse('http://www.example.com/foo/')
|
||||
u1 = URI.parse('http://www.example.com/foo/bar/baz/../..') + './'
|
||||
assert_equal(u0, u1)
|
||||
|
||||
# [ruby-list:39844]
|
||||
u = URI.parse('http://www.example.com/')
|
||||
u0 = u + './foo/'
|
||||
u1 = u + './foo/bar/..'
|
||||
assert_equal(u0, u1)
|
||||
u = URI.parse('http://www.example.com/')
|
||||
u0 = u + './'
|
||||
u1 = u + './foo/bar/../..'
|
||||
assert_equal(u0, u1)
|
||||
end
|
||||
|
||||
def test_route
|
||||
|
|
Loading…
Reference in a new issue