Also, most tests use throw/error/exit to indicate failure whether directly or indirectly via eunit asserts.  Honestly I think that's how we should have done it to begin with.  If the function completes then assume it passed; to indicate error make sure to throw.  But that's a bikeshed I don't care to paint on this PR.