Sha256: ba5be069ef8b3aa21eef098764aa857f9032149945222039b58d869d1209743c
Contents?: true
Size: 1.24 KB
Versions: 1
Compression:
Stored size: 1.24 KB
Contents
# frozen_string_literal: true require "assume/version" module Assume class BadAssumption < StandardError; end DEFAULT_HANDLER = lambda do |result, block| filename, line = block.source_location begin lines = File.readlines(filename) line_content = lines[line - 1] rescue Errno::ENOENT => err line_content = "<unable to open source code file>" end raise BadAssumption, "\nin #{filename}\nsource" \ "code (line #{line}):\n#{line_content}\n" \ "result was: #{result.inspect}" end def assume(&block) raise ArgumentError, "assumptions need a block" if block.nil? return unless Assume.enabled? result = block.call unless result Assume.broken_assumption_handler.call(result, block) end nil end alias assumption assume class << self def handler=(handler) unless handler.respond_to?(:call) raise ArgumentError, "Assume::handler must respond to #call" end @assumption_handler = handler end def enabled=(val) @enabled = !!val end def enabled? @enabled end def broken_assumption_handler @assumption_handler || DEFAULT_HANDLER end end end Assume.enabled = false
Version data entries
1 entries across 1 versions & 1 rubygems
Version | Path |
---|---|
assume-0.1.1 | lib/assume.rb |