summary refs log tree commit diff
path: root/lib/bacon.rb
diff options
context:
space:
mode:
Diffstat (limited to 'lib/bacon.rb')
-rw-r--r--lib/bacon.rb17
1 files changed, 15 insertions, 2 deletions
diff --git a/lib/bacon.rb b/lib/bacon.rb
index b34a9f2..26079e3 100644
--- a/lib/bacon.rb
+++ b/lib/bacon.rb
@@ -109,10 +109,15 @@ module Bacon
   end
 
   class Context
+    attr_reader :name, :block
+    
     def initialize(name, &block)
       @name = name
       @before, @after = [], []
-
+      @block = block
+    end
+    
+    def run
       return  unless name =~ RestrictContext
       Bacon.handle_specification(name) { instance_eval(&block) }
     end
@@ -251,7 +256,15 @@ end
 
 module Kernel
   private
-  def describe(*args, &block)  Bacon::Context.new(args.join(' '), &block) end
+  def describe(*args, &block)
+    befores = instance_variable_get('@before') || []
+    context = Bacon::Context.new(args.join(' '), &block)
+    befores.each do |b|
+      context.before &b
+    end
+    context.run
+    context
+  end
   def shared(name, &block)     Bacon::Shared[name] = block                end
 end