diff options
Diffstat (limited to 'lib/bacon.rb')
-rw-r--r-- | lib/bacon.rb | 17 |
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 |