From 8ae989f6b6e92ac68257fa2d078a38c5561b0ee2 Mon Sep 17 00:00:00 2001 From: nobu Date: Mon, 15 Sep 2014 01:29:21 +0000 Subject: pathname.rb: fix a Pathname#relative_path_from crash on * ext/pathname/lib/pathname.rb (SAME_PATHS): Pathname#relative_path_from uses String#casecmp to compare strings on case-insensitive filesystem platforms (e.g., Windows). This can return nil for strings with different encodings, and the code previously assumed that it always returned a Fixnum. [Fix GH-713] git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@47591 b2dd03c8-39d4-4d8f-98ff-823fe69b080e --- test/pathname/test_pathname.rb | 13 +++++++++++++ 1 file changed, 13 insertions(+) (limited to 'test/pathname/test_pathname.rb') diff --git a/test/pathname/test_pathname.rb b/test/pathname/test_pathname.rb index 75040431d1..f77552cc9a 100644 --- a/test/pathname/test_pathname.rb +++ b/test/pathname/test_pathname.rb @@ -1374,4 +1374,17 @@ class TestPathname < Test::Unit::TestCase assert_equal("foo/bar", File.join(Pathname.new("foo"), Pathname.new("bar").taint)) }.call end + + def test_relative_path_from_casefold + assert_separately([], <<-'end;') # do + module File::Constants + remove_const :FNM_SYSCASE + FNM_SYSCASE = FNM_CASEFOLD + end + require 'pathname' + foo = Pathname.new("fo\u{f6}") + bar = Pathname.new("b\u{e4}r".encode("ISO-8859-1")) + assert_instance_of(Pathname, foo.relative_path_from(bar)) + end; + end end -- cgit v1.2.3