diff options
Diffstat (limited to 'spec/ruby/core/module/const_added_spec.rb')
-rw-r--r-- | spec/ruby/core/module/const_added_spec.rb | 37 |
1 files changed, 36 insertions, 1 deletions
diff --git a/spec/ruby/core/module/const_added_spec.rb b/spec/ruby/core/module/const_added_spec.rb index bf1718f940..f9edda3a07 100644 --- a/spec/ruby/core/module/const_added_spec.rb +++ b/spec/ruby/core/module/const_added_spec.rb @@ -29,7 +29,7 @@ describe "Module#const_added" do ScratchPad.recorded.should == [:TEST] end - it "is called when a new constant is assigned on self throught const_set" do + it "is called when a new constant is assigned on self through const_set" do ScratchPad.record [] mod = Module.new do @@ -121,5 +121,40 @@ describe "Module#const_added" do ScratchPad.recorded.should == [line + 2, line + 4, line + 7, line + 11] end + + it "is called when the constant is already assigned a value" do + ScratchPad.record [] + + mod = Module.new do + def self.const_added(name) + ScratchPad.record const_get(name) + end + end + + mod.module_eval(<<-RUBY, __FILE__, __LINE__ + 1) + TEST = 123 + RUBY + + ScratchPad.recorded.should == 123 + end + + it "records re-definition of existing constants" do + ScratchPad.record [] + + mod = Module.new do + def self.const_added(name) + ScratchPad << const_get(name) + end + end + + -> { + mod.module_eval(<<-RUBY, __FILE__, __LINE__ + 1) + TEST = 123 + TEST = 456 + RUBY + }.should complain(/warning: already initialized constant .+::TEST/) + + ScratchPad.recorded.should == [123, 456] + end end end |