diff options
Diffstat (limited to 'lib/minitest/spec.rb')
-rw-r--r-- | lib/minitest/spec.rb | 13 |
1 files changed, 8 insertions, 5 deletions
diff --git a/lib/minitest/spec.rb b/lib/minitest/spec.rb index 2050337015..8e2412e5ea 100644 --- a/lib/minitest/spec.rb +++ b/lib/minitest/spec.rb @@ -66,10 +66,13 @@ module Kernel def describe desc, &block stack = MiniTest::Spec.describe_stack - name = desc.to_s.split(/\W+/).map { |s| s.capitalize }.join + "Spec" - prev = stack.last - name = "#{prev == MiniTest::Spec ? nil : prev}::#{name}" - cls = Object.class_eval "class #{name} < #{prev}; end; #{name}" + name = [stack.last, desc].compact.join("::") + cls = Class.new(stack.last || MiniTest::Spec) + + # :stopdoc: + # omg this sucks + (class << cls; self; end).send(:define_method, :to_s) { name } + # :startdoc: cls.nuke_test_methods! @@ -96,7 +99,7 @@ end class MiniTest::Spec < MiniTest::Unit::TestCase - @@describe_stack = [MiniTest::Spec] + @@describe_stack = [] def self.describe_stack # :nodoc: @@describe_stack end |