diff options
Diffstat (limited to 'trunk/bootstraptest/test_autoload.rb')
-rw-r--r-- | trunk/bootstraptest/test_autoload.rb | 52 |
1 files changed, 52 insertions, 0 deletions
diff --git a/trunk/bootstraptest/test_autoload.rb b/trunk/bootstraptest/test_autoload.rb new file mode 100644 index 0000000000..05376df220 --- /dev/null +++ b/trunk/bootstraptest/test_autoload.rb @@ -0,0 +1,52 @@ +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 +} |