summaryrefslogtreecommitdiff
path: root/test/pathname
diff options
context:
space:
mode:
authornobu <nobu@b2dd03c8-39d4-4d8f-98ff-823fe69b080e>2014-09-15 01:29:21 +0000
committernobu <nobu@b2dd03c8-39d4-4d8f-98ff-823fe69b080e>2014-09-15 01:29:21 +0000
commit8ae989f6b6e92ac68257fa2d078a38c5561b0ee2 (patch)
tree4a6e1ec0ac574ad7105d373927229260bd3527d5 /test/pathname
parent065b6d2b7ca234d9e45493e11a96d6d0c06bfc29 (diff)
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
Diffstat (limited to 'test/pathname')
-rw-r--r--test/pathname/test_pathname.rb13
1 files changed, 13 insertions, 0 deletions
diff --git a/test/pathname/test_pathname.rb b/test/pathname/test_pathname.rb
index 7504043..f77552c 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