diff --git a/lib/rspec/core/metadata.rb b/lib/rspec/core/metadata.rb index fa70865e08..e122494a2a 100644 --- a/lib/rspec/core/metadata.rb +++ b/lib/rspec/core/metadata.rb @@ -102,8 +102,8 @@ module GroupMetadataHash def described_class container_stack.each do |g| - return g[:describes] if g.has_key?(:describes) return g[:described_class] if g.has_key?(:described_class) + return g[:describes] if g.has_key?(:describes) end container_stack.reverse.each do |g| diff --git a/spec/rspec/core/example_group_spec.rb b/spec/rspec/core/example_group_spec.rb index 6b54cbb8e7..cb7760be41 100644 --- a/spec/rspec/core/example_group_spec.rb +++ b/spec/rspec/core/example_group_spec.rb @@ -293,6 +293,22 @@ def metadata_hash(*args) group.run.should be_true end end + + context "and metadata redefinition after `described_class` call" do + it "is the redefined level constant" do + group = ExampleGroup.describe(String) do + described_class + metadata[:example_group][:described_class] = Object + describe :symbol do + example "described_class is Object" do + described_class.should eq(Object) + end + end + end + + group.run.should be_true + end + end end context "in a nested group" do