Report abuse

  it "is memoized to the last set constant" do
    m = Module.new
    m.name.should == ""
    begin
      ModuleSpecs.const_set(:X, m)
      ModuleSpecs::X.name.should == "ModuleSpecs::X"
      ModuleSpecs.const_set(:Y, m)
      ModuleSpecs::X.name.should == "ModuleSpecs::X"
      ModuleSpecs::Y.name.should == "ModuleSpecs::X"
    ensure
      ModuleSpecs.send :remove_const, :X
      ModuleSpecs.send :remove_const, :Y rescue nil
    end
    m.name.should == "ModuleSpecs::X"

    m = Module.new
    m.name.should == ""
    begin
      ModuleSpecs.const_set(:X, m)
      ModuleSpecs.const_set(:Y, m)
      ModuleSpecs::X.name.should == "ModuleSpecs::Y"
      ModuleSpecs::Y.name.should == "ModuleSpecs::Y"
    ensure
      ModuleSpecs.send :remove_const, :X
      ModuleSpecs.send :remove_const, :Y rescue nil
    end
    m.name.should == "ModuleSpecs::Y"
  end