Proposed new dependency: github.com/juju/errors (and github.com/juju/errgo)

John Meinel john at arbash-meinel.com
Wed May 14 12:12:58 UTC 2014


I'd like gccgo to pass reliably, but I think it falls under a CI test
rather than a pre-commit test. (Because otherwise it roughly doubles the
time it takes to know whether your patch will land.)

I don't have specific feedback on the behavior differences, but the changes
seem sane to me. An errors library is certainly something that I'd like to
see shared between code bases.

John
=:->


On Wed, May 14, 2014 at 1:24 PM, Tim Penhey <tim.penhey at canonical.com>wrote:

> Hi all,
>
> I took it upon myself to get Rog's errgo library used inside juju-core.
>
> Dimiter recently did a hunk of work in the juju-core/errors package to
> have functions to add context to some core error types while keeping
> their type.
>
> What I did was to move this errors package out of juju-core and into its
> own package, and update it to use the errgo as a base.  For those that
> are interested the diff for the errors_test (to show that everything
> works as before) is as shown at the bottom of this email.
>
> I also added in simple methods based on my earlier error handling
> package, but changed them to be based on errgo.  This adds in the
> functions: New, Errorf, Check, Trace, Annotate, Annotatef, Wrap,
> ErrorStack.
>
> One key difference in behaviour between these methods and the base errgo
> ones is that the cause is always passed through. Unless you call Wrap,
> in which case the cause changes, but that is the purpose of the call.
>
> I have a branch of juju-core up as work in progress that does the
> following:
>  * removes the dependency on github.com/errgo/errgo
>  * changes uses of errgo/errgo to juju/errors
>  * adds both juju/errgo and juju/errors to the dependency file
>  * removes the juju-core/errors package
>  * changes all the juju-core/errors import statement to use
>    github.com/juju/errors (and puts the import statement in the
>    right block)
> https://code.launchpad.net/~thumper/juju-core/juju-errors/+merge/219311
> 3602 lines (+252/-658) 156 files modified
>
> I have tested juju/errors with both gc and gccgo and the tests pass with
> both.  Interestingly juju/errgo has a few test failures with gccgo, but
> Dave is looking at them and assures me they are simple fixes.
> As an aside, I do think that any new dependencies we add should pass all
> tests with both gc and gccgo.
>
> Cheers,
>
> Tim
>
> $ diff -u ~/src/juju-core/trunk/errors/errors_test.go errors_test.go
> --- /home/tim/src/juju-core/trunk/errors/errors_test.go 2014-05-14
> 19:18:53.376121000 +1200
> +++ errors_test.go      2014-05-13 17:14:50.329051637 +1200
> @@ -1,5 +1,5 @@
> -// Copyright 2013 Canonical Ltd.
> -// Licensed under the AGPLv3, see LICENCE file for details.
> +// Copyright 2013, 2014 Canonical Ltd.
> +// Licensed under the GPLv3, see LICENCE file for details.
>
>  package errors_test
>
> @@ -8,12 +8,10 @@
>         "fmt"
>         "reflect"
>         "runtime"
> -       "testing"
>
> +       "github.com/juju/errors"
>         jc "github.com/juju/testing/checkers"
>         gc "launchpad.net/gocheck"
> -
> -       "launchpad.net/juju-core/errors"
>  )
>
>  // errorInfo holds information about a single error type: a satisfier
> @@ -40,10 +38,6 @@
>
>  var _ = gc.Suite(&errorsSuite{})
>
> -func Test(t *testing.T) {
> -       gc.TestingT(t)
> -}
> -
>  func (t *errorInfo) satisfierName() string {
>         value := reflect.ValueOf(t.satisfier)
>         f := runtime.FuncForPC(value.Pointer())
> @@ -175,6 +169,12 @@
>         runErrorTests(c, errorTests, true)
>  }
>
> +func (*errorsSuite) TestContextfNotNewer(c *gc.C) {
> +       err := fmt.Errorf("simple error")
> +       errors.Contextf(&err, "annotate")
> +       c.Assert(err, gc.ErrorMatches, "annotate: simple error")
> +}
> +
>  func (*errorsSuite) TestAllErrors(c *gc.C) {
>         errorTests := []errorTest{}
>         for _, errInfo := range allErrors {
>
> --
> Juju-dev mailing list
> Juju-dev at lists.ubuntu.com
> Modify settings or unsubscribe at:
> https://lists.ubuntu.com/mailman/listinfo/juju-dev
>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <https://lists.ubuntu.com/archives/juju-dev/attachments/20140514/f3cda575/attachment.html>


More information about the Juju-dev mailing list