[前][次][番号順一覧][スレッド一覧]

ruby-changes:18762

From: nobu <ko1@a...>
Date: Sat, 5 Feb 2011 10:10:08 +0900 (JST)
Subject: [ruby-changes:18762] Ruby:r30789 (trunk): * load.c (rb_get_expanded_load_path): always expand load paths.

nobu	2011-02-05 10:09:39 +0900 (Sat, 05 Feb 2011)

  New Revision: 30789

  http://svn.ruby-lang.org/cgi-bin/viewvc.cgi?view=rev&revision=30789

  Log:
    * load.c (rb_get_expanded_load_path): always expand load paths.

  Modified files:
    trunk/ChangeLog
    trunk/load.c
    trunk/test/ruby/test_autoload.rb

Index: ChangeLog
===================================================================
--- ChangeLog	(revision 30788)
+++ ChangeLog	(revision 30789)
@@ -1,3 +1,7 @@
+Sat Feb  5 10:09:31 2011  Nobuyoshi Nakada  <nobu@r...>
+
+	* load.c (rb_get_expanded_load_path): always expand load paths.
+
 Sat Feb  5 09:38:08 2011  Nobuyoshi Nakada  <nobu@r...>
 
 	* transcode.c (encoded_dup): extract.
Index: load.c
===================================================================
--- load.c	(revision 30788)
+++ load.c	(revision 30789)
@@ -48,14 +48,6 @@
     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);
Index: test/ruby/test_autoload.rb
===================================================================
--- test/ruby/test_autoload.rb	(revision 30788)
+++ test/ruby/test_autoload.rb	(revision 30789)
@@ -9,4 +9,29 @@
     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

--
ML: ruby-changes@q...
Info: http://www.atdot.net/~ko1/quickml/

[前][次][番号順一覧][スレッド一覧]