Sha256: adcd146d805d4d6230bcfa3cacde15911d3500b7bab1765593bbce34543f02b3

Contents?: true

Size: 1.82 KB

Versions: 22

Compression:

Stored size: 1.82 KB

Contents

module Assert; end
class Assert::Context

  module SetupDSL

    def setup_once(&block)
      self.suite.setup(&block)
    end
    alias_method :before_once, :setup_once
    alias_method :startup, :setup_once

    def teardown_once(&block)
      self.suite.teardown(&block)
    end
    alias_method :after_once, :teardown_once
    alias_method :shutdown, :teardown_once

    def around(&block)
      self.arounds << block
    end

    def setup(method_name = nil, &block)
      self.setups << (block || method_name)
    end
    alias_method :before, :setup

    def teardown(method_name = nil, &block)
      self.teardowns << (block || method_name)
    end
    alias_method :after, :teardown

    def arounds
      @arounds ||= []
    end

    def setups
      @setups ||= []
    end

    def teardowns
      @teardowns ||= []
    end

    def run_arounds(scope, &run_block)
      context_block = self.arounds.compact.reverse.inject(run_block) do |run_b, around_b|
        Proc.new{ scope.instance_exec(run_b, &around_b) }
      end

      if self.superclass.respond_to?(:run_arounds)
        self.superclass.run_arounds(scope, &context_block)
      else
        context_block.call
      end
    end

    def run_setups(scope)
      # setup the parent...
      self.superclass.run_setups(scope) if self.superclass.respond_to?(:run_setups)
      # ... before you setup the child
      self.setups.compact.each do |setup|
        setup.kind_of?(::Proc) ? scope.instance_eval(&setup) : scope.send(setup)
      end
    end

    def run_teardowns(scope)
      # teardown the child...
      self.teardowns.compact.each do |teardown|
        teardown.kind_of?(::Proc) ? scope.instance_eval(&teardown) : scope.send(teardown)
      end
      # ... before the parent
      self.superclass.run_teardowns(scope) if self.superclass.respond_to?(:run_teardowns)
    end

  end

end

Version data entries

22 entries across 22 versions & 1 rubygems

Version Path
assert-2.17.0 lib/assert/context/setup_dsl.rb
assert-2.16.5 lib/assert/context/setup_dsl.rb
assert-2.16.4 lib/assert/context/setup_dsl.rb
assert-2.16.3 lib/assert/context/setup_dsl.rb
assert-2.16.2 lib/assert/context/setup_dsl.rb
assert-2.16.1 lib/assert/context/setup_dsl.rb
assert-2.16.0 lib/assert/context/setup_dsl.rb
assert-2.15.2 lib/assert/context/setup_dsl.rb
assert-2.15.1 lib/assert/context/setup_dsl.rb
assert-2.15.0 lib/assert/context/setup_dsl.rb
assert-2.14.0 lib/assert/context/setup_dsl.rb
assert-2.13.0 lib/assert/context/setup_dsl.rb
assert-2.12.2 lib/assert/context/setup_dsl.rb
assert-2.12.1 lib/assert/context/setup_dsl.rb
assert-2.12.0 lib/assert/context/setup_dsl.rb
assert-2.11.0 lib/assert/context/setup_dsl.rb
assert-2.10.1 lib/assert/context/setup_dsl.rb
assert-2.10.0 lib/assert/context/setup_dsl.rb
assert-2.9.0 lib/assert/context/setup_dsl.rb
assert-2.8.0 lib/assert/context/setup_dsl.rb