New checker "jc.IsNil"

roger peppe rogpeppe at gmail.com
Tue Nov 18 12:15:52 UTC 2014


On 18 November 2014 04:22, Tim Penhey <tim.penhey at canonical.com> wrote:
> 'ello 'ackers,
>
> This is something that I have been meaning to add for quite some time.
>
> We have been recording stack traces with the juju/errors library, but
> until now, they have been of limited use.
>
> One of the key places I have wanted to see the stack trace for a while
> is when running tests, and I have a function that returns an error, I'd
> normally have:
>
>   c.Assert(err, gc.IsNil)
>
> to make sure the error is nil.  Now I have added a checker into the
> juju/testing/checkers that is error aware.
>
> If you now use jc.IsNil instead of gc.IsNil, and the value is an error,
> and the error has a stack trace, it will get printed out.
>
> Very handy.
>
> The dependencies of master have the versions you need to use it now.
>
> Cheers,
> Tim

One thing that I've been meaning to do for a while is
change all occurrences of c.Assert(err, gc.IsNil) to
c.Assert(err, gc.Equals, nil), because technically the former is
wrong, as it could be a typed nil but still erroneously
pass the test.

One possible alternative to your jc.IsNil that you may want to consider
is something I did in errgo - you can implement the GoString
method to produce the error trace. Then you'll automatically
see the error trace whatever gocheck checker you use, because
gocheck prints the error with %#v, which will invoke GoString.
I've found it very helpful.

  cheers,
    rog.



More information about the Juju-dev mailing list