diff options
Diffstat (limited to 'test/ruby/test_const.rb')
| -rw-r--r-- | test/ruby/test_const.rb | 51 |
1 files changed, 45 insertions, 6 deletions
diff --git a/test/ruby/test_const.rb b/test/ruby/test_const.rb index 8d01379dbd..8784e0e988 100644 --- a/test/ruby/test_const.rb +++ b/test/ruby/test_const.rb @@ -1,3 +1,5 @@ +# -*- coding: us-ascii -*- +# frozen_string_literal: false require 'test/unit' class TestConst < Test::Unit::TestCase @@ -15,19 +17,56 @@ class TestConst < Test::Unit::TestCase end def test_const + assert defined?(TEST1) + assert_equal 1, TEST1 + assert defined?(TEST2) + assert_equal 2, TEST2 + self.class.class_eval { include Const } - assert_equal([1,2,3,4], [TEST1,TEST2,TEST3,TEST4]) + assert defined?(TEST1) + assert_equal 1, TEST1 + assert defined?(TEST2) + assert_equal 2, TEST2 + assert defined?(TEST3) + assert_equal 3, TEST3 + assert defined?(TEST4) + assert_equal 4, TEST4 self.class.class_eval { include Const2 } - STDERR.print "intentionally redefines TEST3, TEST4\n" if $VERBOSE - assert_equal([1,2,6,8], [TEST1,TEST2,TEST3,TEST4]) + # STDERR.print "intentionally redefines TEST3, TEST4\n" if $VERBOSE + assert defined?(TEST1) + assert_equal 1, TEST1 + assert defined?(TEST2) + assert_equal 2, TEST2 + assert defined?(TEST3) + assert_equal 6, TEST3 + assert defined?(TEST4) + assert_equal 8, TEST4 + end + + def test_redefinition + c = Class.new + name = "X\u{5b9a 6570}" + c.const_set(name, 1) + prev_line = __LINE__ - 1 + assert_warning(<<-WARNING) {c.const_set(name, 2)} +#{__FILE__}:#{__LINE__-1}: warning: already initialized constant #{c}::#{name} +#{__FILE__}:#{prev_line}: warning: previous definition of #{name} was here +WARNING + end + + def test_redefinition_memory_leak + code = <<-PRE +350000.times { FOO = :BAR } +PRE + assert_no_memory_leak(%w[-W0 -], '', code, 'redefined constant', timeout: 30) + end - assert_equal(-1, (String <=> Object)) - assert_equal(1, (Object <=> String)) - assert_equal(nil, (Array <=> String)) + def test_toplevel_lookup + assert_raise(NameError, '[Feature #11547]') {TestConst::Object} end end |
