goose: support provider cleanup functions
Documented and updated appropriate providers to reflect. Reviewed-by: Tuo Shan <shantuo@google.com>
This commit is contained in:
51
internal/goose/testdata/PartialCleanup/foo/foo.go
vendored
Normal file
51
internal/goose/testdata/PartialCleanup/foo/foo.go
vendored
Normal file
@@ -0,0 +1,51 @@
|
||||
package main
|
||||
|
||||
import (
|
||||
"errors"
|
||||
"fmt"
|
||||
"strings"
|
||||
)
|
||||
|
||||
var (
|
||||
cleanedFoo = false
|
||||
cleanedBar = false
|
||||
)
|
||||
|
||||
func main() {
|
||||
_, cleanup, err := injectBaz()
|
||||
if err == nil {
|
||||
fmt.Println("<nil>")
|
||||
} else {
|
||||
fmt.Println(strings.Contains(err.Error(), "bork!"))
|
||||
}
|
||||
fmt.Println(cleanedFoo, cleanedBar, cleanup == nil)
|
||||
}
|
||||
|
||||
type Foo int
|
||||
type Bar int
|
||||
type Baz int
|
||||
|
||||
//goose:provide Foo
|
||||
func provideFoo() (*Foo, func()) {
|
||||
foo := new(Foo)
|
||||
*foo = 42
|
||||
return foo, func() { *foo = 0; cleanedFoo = true }
|
||||
}
|
||||
|
||||
//goose:provide Bar
|
||||
func provideBar(foo *Foo) (*Bar, func(), error) {
|
||||
bar := new(Bar)
|
||||
*bar = 77
|
||||
return bar, func() {
|
||||
if *foo == 0 {
|
||||
panic("foo cleaned up before bar")
|
||||
}
|
||||
*bar = 0
|
||||
cleanedBar = true
|
||||
}, nil
|
||||
}
|
||||
|
||||
//goose:provide Baz
|
||||
func provideBaz(bar *Bar) (Baz, error) {
|
||||
return 0, errors.New("bork!")
|
||||
}
|
||||
Reference in New Issue
Block a user