From 07636ed42ebc9b690846813b492d75bcf32bb62c Mon Sep 17 00:00:00 2001 From: shirosaki Date: Fri, 5 Apr 2013 15:30:52 +0000 Subject: * load.c (features_index_add): use rb_str_subseq() to specify C string position properly to fix require non ascii path. [ruby-core:53733] [Bug #8165] * test/ruby/test_require.rb (TestRequire#test_require_nonascii_path): a test for the above. git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@40135 b2dd03c8-39d4-4d8f-98ff-823fe69b080e --- test/ruby/test_require.rb | 21 +++++++++++++++++++++ 1 file changed, 21 insertions(+) (limited to 'test/ruby/test_require.rb') diff --git a/test/ruby/test_require.rb b/test/ruby/test_require.rb index bca6a9754c..2e7b37d138 100644 --- a/test/ruby/test_require.rb +++ b/test/ruby/test_require.rb @@ -59,6 +59,27 @@ class TestRequire < Test::Unit::TestCase end end + def test_require_nonascii_path + bug8165 = '[ruby-core:53733] [Bug #8165]' + Dir.mktmpdir {|tmp| + encoding = /mswin|mingw/ =~ RUBY_PLATFORM ? 'filesystem' : 'UTF-8' + dir = "\u3042" * 5 + begin + require_path = File.join(tmp, dir, 'foo.rb').encode(encoding) + rescue + skip "cannot convert path encoding to #{encoding}" + end + Dir.mkdir(File.dirname(require_path)) + open(require_path, "wb") {} + assert_in_out_err([], <<-INPUT, %w(:ok), [], bug8165) + # coding: #{encoding} + $:.replace([IO::NULL] + $:.reject {|path| path !~ /\.ext/}) + p :ok if require '#{require_path}' + p :ng if require '#{require_path}' + INPUT + } + end + def test_require_path_home_1 env_rubypath, env_home = ENV["RUBYPATH"], ENV["HOME"] pathname_too_long = /pathname too long \(ignored\).*\(LoadError\)/m -- cgit v1.2.3