* ext/pathname/lib/pathname.rb (cleanpath_aggressive): make all

separators File::SEPARATOR from File::ALT_SEPARATOR.
  Reported by Daniel Rikowski.
  Fixed by Nobuyoshi Nakada.  [Bug #9618]

* ext/pathname/lib/pathname.rb (cleanpath_conservative): ditto.



git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@45827 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
This commit is contained in:
akr 2014-05-05 13:09:58 +00:00
Родитель 391fc2eeec
Коммит edacb3a94a
3 изменённых файлов: 19 добавлений и 0 удалений

Просмотреть файл

@ -1,3 +1,12 @@
Mon May 5 21:52:35 2014 Tanaka Akira <akr@fsij.org>
* ext/pathname/lib/pathname.rb (cleanpath_aggressive): make all
separators File::SEPARATOR from File::ALT_SEPARATOR.
Reported by Daniel Rikowski.
Fixed by Nobuyoshi Nakada. [Bug #9618]
* ext/pathname/lib/pathname.rb (cleanpath_conservative): ditto.
Mon May 5 21:48:04 2014 Tanaka Akira <akr@fsij.org>
* ext/pathname/lib/pathname.rb (Pathname#/): Aliased to Pathname#+.

Просмотреть файл

@ -113,6 +113,7 @@ class Pathname
end
end
end
pre.tr!(File::ALT_SEPARATOR, File::SEPARATOR) if File::ALT_SEPARATOR
if /#{SEPARATOR_PAT}/o =~ File.basename(pre)
names.shift while names[0] == '..'
end
@ -161,6 +162,7 @@ class Pathname
pre, base = r
names.unshift base if base != '.'
end
pre.tr!(File::ALT_SEPARATOR, File::SEPARATOR) if File::ALT_SEPARATOR
if /#{SEPARATOR_PAT}/o =~ File.basename(pre)
names.shift while names[0] == '..'
end

Просмотреть файл

@ -88,6 +88,10 @@ class TestPathname < Test::Unit::TestCase
defassert(:cleanpath_aggressive, '/', '///a/../..')
end
if DOSISH
defassert(:cleanpath_aggressive, 'c:/foo/bar', 'c:\\foo\\bar')
end
def cleanpath_conservative(path)
Pathname.new(path).cleanpath(true).to_s
end
@ -124,6 +128,10 @@ class TestPathname < Test::Unit::TestCase
defassert(:cleanpath_conservative, '/a', '/../.././../a')
defassert(:cleanpath_conservative, 'a/b/../../../../c/../d', 'a/b/../../../../c/../d')
if DOSISH
defassert(:cleanpath_conservative, 'c:/foo/bar', 'c:\\foo\\bar')
end
if DOSISH_UNC
defassert(:cleanpath_conservative, '//', '//')
else