summaryrefslogtreecommitdiff
path: root/test/ruby/test_variable.rb
diff options
context:
space:
mode:
Diffstat (limited to 'test/ruby/test_variable.rb')
-rw-r--r--test/ruby/test_variable.rb47
1 files changed, 43 insertions, 4 deletions
diff --git a/test/ruby/test_variable.rb b/test/ruby/test_variable.rb
index 8726160826..53e00301dc 100644
--- a/test/ruby/test_variable.rb
+++ b/test/ruby/test_variable.rb
@@ -1,4 +1,5 @@
require 'test/unit'
+require_relative 'envutil'
class TestVariable < Test::Unit::TestCase
class Gods
@@ -25,17 +26,21 @@ class TestVariable < Test::Unit::TestCase
end
class Titans < Gods
- @@rule = "Cronus"
- include Olympians # OK to cause warning (intentional)
+ @@rule = "Cronus" # modifies @@rule in Gods
+ include Olympians
+ def ruler4
+ @@rule
+ end
end
def test_variable
assert_instance_of(Fixnum, $$)
-
+
# read-only variable
- assert_raises(NameError) do
+ assert_raise(NameError) do
$$ = 5
end
+ assert_normal_exit("$*=0; $*", "[ruby-dev:36698]")
foobar = "foobar"
$_ = foobar
@@ -49,5 +54,39 @@ class TestVariable < Test::Unit::TestCase
atlas = Titans.new
assert_equal("Cronus", atlas.ruler0)
assert_equal("Zeus", atlas.ruler3)
+ assert_equal("Cronus", atlas.ruler4)
+ end
+
+ def test_local_variables
+ lvar = 1
+ assert_instance_of(Symbol, local_variables[0], "[ruby-dev:34008]")
+ end
+
+ def test_local_variables2
+ x = 1
+ proc do |y|
+ assert_equal([:x, :y], local_variables.sort)
+ end.call
+ end
+
+ def test_local_variables3
+ x = 1
+ proc do |y|
+ 1.times do |z|
+ assert_equal([:x, :y, :z], local_variables.sort)
+ end
+ end.call
+ end
+
+ def test_global_variable_0
+ assert_in_out_err(["-e", "$0='t'*1000;print $0"], "", /\At+\z/, [])
+ end
+
+ def test_global_variable_poped
+ assert_nothing_raised { eval("$foo; 1") }
+ end
+
+ def test_constant_poped
+ assert_nothing_raised { eval("TestVariable::Gods; 1") }
end
end