mirror of
https://github.com/ruby/ruby.git
synced 2022-11-09 12:17:21 -05:00
8e864d1e86
touching. * load.c (rb_feature_provided): new function to return the loading path in addition to rb_provided(). * load.c (search_required): sets path if loading. * variable.c (autoload_provided): load paths are expanded to check if loading. * variable.c (autoload_node): keeps autoload mark while loading. [ruby-core:20235] * variable.c (rb_const_get_0): loops while autoload mark is set. git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@20531 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
61 lines
1.6 KiB
Ruby
61 lines
1.6 KiB
Ruby
assert_equal 'ok', %q{
|
|
open("zzz.rb", "w") {|f| f.puts "class ZZZ; def self.ok;:ok;end;end"}
|
|
autoload :ZZZ, "./zzz.rb"
|
|
ZZZ.ok
|
|
}
|
|
|
|
assert_equal 'ok', %q{
|
|
open("zzz.rb", "w") {|f| f.puts "class ZZZ; def self.ok;:ok;end;end"}
|
|
autoload :ZZZ, "./zzz.rb"
|
|
require "./zzz.rb"
|
|
ZZZ.ok
|
|
}
|
|
|
|
assert_equal 'ok', %q{
|
|
open("zzz.rb", "w") {|f| f.puts "class ZZZ; def self.ok;:ok;end;end"}
|
|
autoload :ZZZ, "./zzz.rb"
|
|
proc{$SAFE=4; ZZZ.ok}.call
|
|
}
|
|
|
|
assert_equal 'ok', %q{
|
|
open("zzz.rb", "w") {|f| f.puts "class ZZZ; def self.ok;:ok;end;end"}
|
|
autoload :ZZZ, "./zzz.rb"
|
|
require "./zzz.rb"
|
|
proc{$SAFE=4; ZZZ.ok}.call
|
|
}
|
|
|
|
assert_equal 'ok', %q{
|
|
open("zzz.rb", "w") {|f| f.puts "class ZZZ; def hoge;:ok;end;end"}
|
|
autoload :ZZZ, File.join(Dir.pwd, 'zzz.rb')
|
|
module M; end
|
|
Thread.new{M.instance_eval('$SAFE=4; ZZZ.new.hoge')}.value
|
|
}
|
|
|
|
assert_equal 'ok', %q{
|
|
open("zzz.rb", "w") {|f| f.puts "class ZZZ; def hoge;:ok;end;end"}
|
|
autoload :ZZZ, File.join(Dir.pwd, 'zzz.rb')
|
|
module M; end
|
|
Thread.new{$SAFE=4; M.instance_eval('ZZZ.new.hoge')}.value
|
|
}
|
|
|
|
assert_equal 'ok', %q{
|
|
open("zzz.rb", "w") {|f| f.puts "class ZZZ; def hoge;:ok;end;end"}
|
|
autoload :ZZZ, File.join(Dir.pwd, 'zzz.rb')
|
|
Thread.new{$SAFE=4; eval('ZZZ.new.hoge')}.value
|
|
}
|
|
|
|
assert_equal 'ok', %q{
|
|
open("zzz.rb", "w") {|f| f.puts "class ZZZ; def hoge;:ok;end;end"}
|
|
autoload :ZZZ, File.join(Dir.pwd, 'zzz.rb')
|
|
module M; end
|
|
Thread.new{eval('$SAFE=4; ZZZ.new.hoge')}.value
|
|
}
|
|
|
|
assert_equal 'okok', %q{
|
|
open("zzz.rb", "w") {|f| f.puts "class ZZZ; def self.ok;:ok;end;end"}
|
|
autoload :ZZZ, "./zzz.rb"
|
|
t1 = Thread.new {ZZZ.ok}
|
|
t2 = Thread.new {ZZZ.ok}
|
|
[t1.value, t2.value].join
|
|
}
|
|
|