Skip to content

ruby/power_assert

master
Switch branches/tags

Name already in use

A tag already exists with the provided branch name. Many Git commands accept both tag and branch names, so creating this branch may cause unexpected behavior. Are you sure you want to create this branch?
Code

Latest commit

 

Git stats

Files

Permalink
Failed to load latest commit information.
Type
Name
Latest commit message
Commit time
 
 
 
 
bin
 
 
lib
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

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

  • CRuby 2.5+

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

  • Expressions must be put in one line. Expressions with folded long lines produce nothing report, e.g.:
assert do
  # reported
  func(foo: 0123456789, bar: "abcdefg")
end

assert do
  # won't be reported
  func(foo: 0123456789,
       bar: "abcdefg")
end
  • Expressions must have one or more method call. Expressions with no method call produce nothing report, e.g.:
val = false
assert do
  # reported
  val == true
end

assert do
  # won't be reported
  val
end
  • Returned values from accessor methods, method missing, or "super" produce nothing report, e.g:
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
  • Expressions should not have conditional branches. Expressions with such conditional codes may produce nothing report, e.g.:
condition = true
expected = false
actual = true
assert do
  # this will fail but nothing reported
  condition ? expected == actual : expected == actual
end

Reference