Skip to content

v0.16.0

Compare
Choose a tag to compare
@mwhittaker mwhittaker released this 23 Jun 18:42
· 289 commits to main since this release

New weaver.Run API

In v0.15.0, the main component had a Main method that was automatically invoked by weaver.Run. For v0.16.0, we removed this Main method. weaver.Run now receives a lambda argument with a pointer to the main component implementation as an argument (#409). Here's an example.

type app struct {
    weaver.Implements[weaver.Main]
}

func main() {
    err := weaver.Run(context.Background(), func (_ context.Context, app *app) error  {
        app.Logger().Info("Hello, World!")
        return nil
    })
    if err != nil {
        log.Fatal(err)
    }
}

New weavertest API

Recall that the Test and Benchmark methods of a weavertest.Runner receive a lambda with component interface arguments (#406):

// Test the Foo and Bar components.
runner.Test(t, func(t *testing.T, foo Foo, bar Bar) {...})

In v0.16.0, these lambdas can also receive pointers to component implementations:

// Test the foo and bar component implementations.
runner.Test(t, func(t *testing.T, foo *foo, bar *bar) {...})

The Test and Benchmark methods no longer automatically run the Main method, which is obvious considering we also removed the Main method (#405)! This makes the new weavertest API essential for testing the HTTP server exported by a main component. See examples/chat/server_test.go for an example.

Listener Config

Listener names are now case sensitive (#404).

Bug Fixes

v0.16.0 also fixes bugs in the onlineboutique app (#393) and in the output of weaver version (#399).

Full Changelog: v0.15.0...v0.16.0