diff options
author | Jari Vetoniemi <jari.vetoniemi@indooratlas.com> | 2020-03-16 18:49:26 +0900 |
---|---|---|
committer | Jari Vetoniemi <jari.vetoniemi@indooratlas.com> | 2020-03-30 00:39:06 +0900 |
commit | fcbf63e62c627deae76c1b8cb8c0876c536ed811 (patch) | |
tree | 64cb17de3f41a2b6fef2368028fbd00349946994 /jni/ruby/bootstraptest/test_autoload.rb |
Fresh start
Diffstat (limited to 'jni/ruby/bootstraptest/test_autoload.rb')
-rw-r--r-- | jni/ruby/bootstraptest/test_autoload.rb | 70 |
1 files changed, 70 insertions, 0 deletions
diff --git a/jni/ruby/bootstraptest/test_autoload.rb b/jni/ruby/bootstraptest/test_autoload.rb new file mode 100644 index 0000000..a9f8e6d --- /dev/null +++ b/jni/ruby/bootstraptest/test_autoload.rb @@ -0,0 +1,70 @@ +assert_equal 'ok', %q{ + File.unlink('zzz.rb') if File.file?('zzz.rb') + instance_eval do + autoload :ZZZ, './zzz.rb' + begin + ZZZ + rescue LoadError + :ok + end + end +}, '[ruby-dev:43816]' + +assert_equal 'ok', %q{ + open('zzz.rb', 'w') {|f| f.puts '' } + instance_eval do + autoload :ZZZ, './zzz.rb' + begin + ZZZ + rescue NameError + :ok + end + end +}, '[ruby-dev:43816]' + +assert_equal 'ok', %q{ + open('zzz.rb', 'w') {|f| f.puts 'class ZZZ; def self.ok;:ok;end;end'} + instance_eval do + autoload :ZZZ, './zzz.rb' + ZZZ.ok + end +}, '[ruby-dev:43816]' + +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 '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 +} + +assert_finish 5, %q{ + autoload :ZZZ, File.expand_path(__FILE__) + begin + ZZZ + rescue NameError + end +}, '[ruby-core:21696]' + +assert_equal 'A::C', %q{ + open("zzz.rb", "w") {} + class A + autoload :C, "./zzz" + class C + end + C + end +} |