mirror of
https://github.com/ruby/ruby.git
synced 2022-11-09 12:17:21 -05:00
* load.c (rb_get_expanded_load_path): always expand load paths.
git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@30789 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
This commit is contained in:
parent
e9cc518446
commit
bf794afbf9
3 changed files with 29 additions and 8 deletions
|
@ -1,3 +1,7 @@
|
|||
Sat Feb 5 10:09:31 2011 Nobuyoshi Nakada <nobu@ruby-lang.org>
|
||||
|
||||
* load.c (rb_get_expanded_load_path): always expand load paths.
|
||||
|
||||
Sat Feb 5 09:38:08 2011 Nobuyoshi Nakada <nobu@ruby-lang.org>
|
||||
|
||||
* transcode.c (encoded_dup): extract.
|
||||
|
|
8
load.c
8
load.c
|
@ -48,14 +48,6 @@ rb_get_expanded_load_path(void)
|
|||
VALUE ary;
|
||||
long i;
|
||||
|
||||
for (i = 0; i < RARRAY_LEN(load_path); ++i) {
|
||||
VALUE str = rb_check_string_type(RARRAY_PTR(load_path)[i]);
|
||||
if (NIL_P(str) || !rb_is_absolute_path(RSTRING_PTR(str)))
|
||||
goto relative_path_found;
|
||||
}
|
||||
return load_path;
|
||||
|
||||
relative_path_found:
|
||||
ary = rb_ary_new2(RARRAY_LEN(load_path));
|
||||
for (i = 0; i < RARRAY_LEN(load_path); ++i) {
|
||||
VALUE path = rb_file_expand_path(RARRAY_PTR(load_path)[i], Qnil);
|
||||
|
|
|
@ -9,4 +9,29 @@ class TestAutoload < Test::Unit::TestCase
|
|||
begin Continuation; rescue LoadError; end
|
||||
INPUT
|
||||
end
|
||||
|
||||
def test_non_realpath_in_loadpath
|
||||
require 'tmpdir'
|
||||
tmpdir = Dir.mktmpdir('autoload')
|
||||
tmpdirs = [tmpdir]
|
||||
tmpdirs.unshift(tmpdir + '/foo')
|
||||
Dir.mkdir(tmpdirs[0])
|
||||
tmpfiles = [tmpdir + '/foo.rb', tmpdir + '/foo/bar.rb']
|
||||
open(tmpfiles[0] , 'w') do |f|
|
||||
f.puts <<-INPUT
|
||||
$:.unshift(File.expand_path('..', __FILE__)+'/./foo')
|
||||
module Foo
|
||||
autoload :Bar, 'bar'
|
||||
end
|
||||
Foo::Bar
|
||||
INPUT
|
||||
end
|
||||
open(tmpfiles[1], 'w') do |f|
|
||||
f.puts 'class Foo::Bar; end'
|
||||
end
|
||||
assert_in_out_err([tmpfiles[0]], "", [], [])
|
||||
ensure
|
||||
File.unlink(*tmpfiles) rescue nil if tmpfiles
|
||||
tmpdirs.each {|dir| Dir.rmdir(dir)}
|
||||
end
|
||||
end
|
||||
|
|
Loading…
Reference in a new issue