123456789_123456789_123456789_123456789_123456789_

power_assert

About

Power Assert shows each value of variables and method calls in the expression. It is useful for testing, providing which value wasn't correct when the condition is not satisfied.

Failure:
   assert { 3.times.to_a.include?(3) }
              |     |    |
              |     |    false
              |     [0, 1, 2]
              #<Enumerator: 3:times>

Related Projects

In general, you don't need to use this library directly. Use following test frameworks or extensions instead.

Requirement

Configuration

To colorize output messages, add require "power_assert/colorize" to your code. (It requires CRuby 3.0.1+ or irb 1.3.1+)

Known Limitations

assert do
  # reported
  func(foo: 0123456789, bar: "abcdefg")
end

assert do
  # won't be reported
  func(foo: 0123456789,
       bar: "abcdefg")
end
val = false
assert do
  # reported
  val == true
end

assert do
  # won't be reported
  val
end
class Foo
  attr_accessor :val
end
foo = Foo.new
foo.val = false

assert do
  # reported (only the value of "foo" and the literal "true")
  foo.val == true
end

assert do
  # won't be reported
  foo.val
end
condition = true
expected = false
actual = true
assert do
  # this will fail but nothing reported
  condition ? expected == actual : expected == actual
end

Reference