I have put up gem minitest_lucid, which elucidates data for certain failed Minitest assertions.

The idea is that a failed assertion for, say, a largish hash can be hard to decipher. So the gem organizes the result to make it easier.

Thus, instead of



--- expected +++ actual @@ -1 +1 @@ -{:ina=>"Alita tea loat qani.", :con=>"Et sia adid qua.", :dolupi=>"Parali coal alit qad.", :enaam=>"La ofadi aliq caat.", :qat=>"Magna voaa aaliqu maan.", :vent=>"Do velaa volor na.", :suata=>"Fadi iame adati na.", :ip=>"Utat iram adip voan.", :ex=>"Vat eiua exca inci.", :labor=>"Aut tatat proam iat.", :occaag=>"Co nulab nost paat.", :alitaaa=>"Eaam fugatia exat quis.", :cidaa=>"Enia adiaamea deseaat eliqui.", :eaalabalab=>"Aut te magna aliq.", :ut=>"Param ad dua idatu.", :ullaboa=>"Irat cona doat dunt.", :ipsum=>"Irur na nuaata doaga.", :duat=>"Noaga idat sara ex.", :anis=>"Sint adipi et aut."} +{:ina=>"Alita tea loat qani.", :con=>"Et sia adid qua.", :euaaag=>"Enta adaad idess utetu.", :enaam=>"la ofadi aliq caat.", :qat=>"Magna voaa aaliqu maan.", :vent=>"do velaa volor na.", :eaarisau=>"Taabore magn naatat in.", :ip=>"Utat iram adip voan.", :ex=>"Vat eiua exca inci.", :labor=>"aut tatat proam iat.", :esedat=>"Dola labor eu null.", :alitaaa=>"Eaam fugatia exat quis.", :cidaa=>"enia adiaamea deseaat eliqui.", :eaalabalab=>"Aut te magna aliq.", :cat=>"Cullum pa quip magat.", :ullaboa=>"Irat cona doat dunt.", :ipsum=>"Irur na nuaata doaga.", :duat=>"Noaga idat sara ex.", :eua=>"Quat comm laal inaa."}

we get



{ :expected => { :class => Hash , :size => 19 , }, :actual => { :class => Hash , :size => 19 , }, :elucidation => { :missing_pairs => { :dolupi => 'Parali coal alit qad.' , :suata => 'Fadi iame adati na.' , :occaag => 'Co nulab nost paat.' , :ut => 'Param ad dua idatu.' , :anis => 'Sint adipi et aut.' , }, :unexpected_pairs => { :euaaag => 'Enta adaad idess utetu.' , :eaarisau => 'Taabore magn naatat in.' , :esedat => 'Dola labor eu null.' , :cat => 'Cullum pa quip magat.' , :eua => 'Quat comm laal inaa.' , }, :changed_values => { :enaam => { :expected => 'La ofadi aliq caat.' , :got => 'la ofadi aliq caat.' , }, :vent => { :expected => 'Do velaa volor na.' , :got => 'do velaa volor na.' , }, :labor => { :expected => 'Aut tatat proam iat.' , :got => 'aut tatat proam iat.' , }, :cidaa => { :expected => 'Enia adiaamea deseaat eliqui.' , :got => 'enia adiaamea deseaat eliqui.' , }, }, :ok_pairs => { :ina => 'Alita tea loat qani.' , :con => 'Et sia adid qua.' , :qat => 'Magna voaa aaliqu maan.' , :ip => 'Utat iram adip voan.' , :ex => 'Vat eiua exca inci.' , :alitaaa => 'Eaam fugatia exat quis.' , :eaalabalab => 'Aut te magna aliq.' , :ullaboa => 'Irat cona doat dunt.' , :ipsum => 'Irur na nuaata doaga.' , :duat => 'Noaga idat sara ex.' , }, } }

So far, treats Hash , Set , and Struct . Coming soon: Array and OpenStruct .

Code and documentation are on GitHub.