class TestBench::Fixture::Session
Constants
- Abort
- Error
Attributes
assertion_counter[W]
error_policy[W]
failure_counter[W]
finished[W]
output[W]
skip_counter[W]
started[W]
Public Class Methods
build(output: nil, error_policy: nil)
click to toggle source
# File lib/test_bench/fixture/session.rb, line 48 def self.build(output: nil, error_policy: nil) instance = new if output.nil? Output::Log.configure(instance) else instance.output = output end ErrorPolicy.configure(instance, policy: error_policy) instance end
configure(receiver, session: nil, output: nil, error_policy: nil, attr_name: nil)
click to toggle source
# File lib/test_bench/fixture/session.rb, line 62 def self.configure(receiver, session: nil, output: nil, error_policy: nil, attr_name: nil) attr_name ||= :session if session.nil? instance = build(output: output, error_policy: error_policy) else instance = session end receiver.public_send(:"#{attr_name}=", instance) instance end
Public Instance Methods
assert(value, caller_location: nil)
click to toggle source
# File lib/test_bench/fixture/session.rb, line 108 def assert(value, caller_location: nil) caller_location ||= caller[0] result = value ? true : false self.assertion_counter += 1 output.assert(result, caller_location) unless result assertion_failure = AssertionFailure.build(caller_location) raise assertion_failure end result end
assertion_counter()
click to toggle source
# File lib/test_bench/fixture/session.rb, line 7 def assertion_counter @assertion_counter ||= 0 end
comment(text)
click to toggle source
# File lib/test_bench/fixture/session.rb, line 100 def comment(text) output.comment(text) end
context(title=nil, &block)
click to toggle source
# File lib/test_bench/fixture/session.rb, line 166 def context(title=nil, &block) if block.nil? record_skip output.skip_context(title) return end output.enter_context(title) evaluate(block) do |result| output.exit_context(title, result) end end
detail(text)
click to toggle source
# File lib/test_bench/fixture/session.rb, line 104 def detail(text) output.detail(text) end
error_policy()
click to toggle source
# File lib/test_bench/fixture/session.rb, line 38 def error_policy @error_policy ||= ErrorPolicy::RescueAssert.new end
evaluate(action, &block)
click to toggle source
# File lib/test_bench/fixture/session.rb, line 206 def evaluate(action, &block) previous_failure_counter = self.failure_counter begin action.() rescue Abort rescue => error record_failure output.error(error) error_policy.(error) error = nil ensure result = failure_counter == previous_failure_counter block.(result, error) unless block.nil? end result end
failed?()
click to toggle source
# File lib/test_bench/fixture/session.rb, line 236 def failed? failure_counter.nonzero? ? true : false end
failure_counter()
click to toggle source
# File lib/test_bench/fixture/session.rb, line 12 def failure_counter @failure_counter ||= 0 end
finish()
click to toggle source
# File lib/test_bench/fixture/session.rb, line 86 def finish if finished raise Error, "Session has already finished" end self.finished = true result = !failed? output.finish(result) result end
finished()
click to toggle source
# File lib/test_bench/fixture/session.rb, line 30 def finished instance_variable_defined?(:@finished) ? @finished : @finished = false end
Also aliased as: finished?
fixture(fixture, &block)
click to toggle source
# File lib/test_bench/fixture/session.rb, line 180 def fixture(fixture, &block) if block.nil? && !fixture.respond_to?(:call) raise Error, "Block must be given when a fixture does not respond to #call" end actions = [] if fixture.respond_to?(:call) actions << fixture end unless block.nil? actions << proc { block.(fixture) } end output.start_fixture(fixture) action = proc { actions.each(&:call) } result = evaluate(action) do |result| output.finish_fixture(fixture, result) end result end
load(path)
click to toggle source
# File lib/test_bench/fixture/session.rb, line 125 def load(path) output.enter_file(path) result = false Kernel.load(path) result = true ensure output.exit_file(path, result) end
output()
click to toggle source
# File lib/test_bench/fixture/session.rb, line 43 def output @output ||= Output::Substitute.build end
record_failure()
click to toggle source
# File lib/test_bench/fixture/session.rb, line 231 def record_failure self.failure_counter += 1 end
Also aliased as: fail!
record_skip()
click to toggle source
# File lib/test_bench/fixture/session.rb, line 240 def record_skip self.skip_counter += 1 end
skip_counter()
click to toggle source
# File lib/test_bench/fixture/session.rb, line 17 def skip_counter @skip_counter ||= 0 end
skipped?()
click to toggle source
# File lib/test_bench/fixture/session.rb, line 244 def skipped? skip_counter.nonzero? ? true : false end
start()
click to toggle source
# File lib/test_bench/fixture/session.rb, line 76 def start if started raise Error, "Session has already been started" end self.started = true output.start end
started()
click to toggle source
# File lib/test_bench/fixture/session.rb, line 22 def started instance_variable_defined?(:@started) ? @started : @started = false end
Also aliased as: started?
test(title=nil, &block)
click to toggle source
# File lib/test_bench/fixture/session.rb, line 139 def test(title=nil, &block) if block.nil? record_skip output.skip_test(title) return end output.start_test(title) previous_failure_counter = self.failure_counter previous_assertion_counter = self.assertion_counter action = ->{ block.() if failure_counter == previous_failure_counter if assertion_counter == previous_assertion_counter raise Error, "Test did not perform an assertion" end end } evaluate(action) do |result| output.finish_test(title, result) end end