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.
-
test-unit(>= 3.0.0)
Requirement
-
CRuby 3.1+
Configuration
To colorize output messages, add require "power_assert/colorize" to your code. (It requires irb 1.3.1+)
Known Limitations
-
Expressions must be on a single line. Splitting an assertion across multiple lines prevents any report from being generated, e.g.:
assert do # Reported func(foo: 0123456789, bar: "abcdefg") end assert do # Not reported func(foo: 0123456789, bar: "abcdefg") end
-
Expressions must include at least one method call. Assertions without method calls generate no report, e.g.:
val = false assert do # Reported val == true end assert do # Not reported val end
-
Return values from
method_missingorsupergenerate no report, e.g.:
class Foo def method_missing(*) :foo end end foo = Foo.new assert do # Not reported foo.foo end
-
Avoid conditional branches inside assertions. Conditional logic may prevent a report from being generated, e.g.:
condition = true expected = false actual = true assert do # This fails, but nothing is reported condition ? expected == actual : expected == actual end
-
(CRuby 4.0+)
<Struct subclass>.newgenerates no report. Use<Struct subclass>.[]instead, e.g.:
s = Struct.new(:a) assert do # Not reported s.new(0) end assert do # Reported s[0] end