goose: read tests from testdata
Since tests are all written in terms of Go source, it makes tests easier to write. They still need to be arranged in a GOPATH for go build, but tests that just call Generate can operate in-place because I've faked the filesystem. Reviewed-by: Tuo Shan <shantuo@google.com> Reviewed-by: Herbie Ong <herbie@google.com>
This commit is contained in:
20
internal/goose/testdata/Chain/foo/foo.go
vendored
Normal file
20
internal/goose/testdata/Chain/foo/foo.go
vendored
Normal file
@@ -0,0 +1,20 @@
|
||||
package main
|
||||
|
||||
import "fmt"
|
||||
|
||||
func main() {
|
||||
fmt.Println(injectFooBar())
|
||||
}
|
||||
|
||||
type Foo int
|
||||
type FooBar int
|
||||
|
||||
//goose:provide Set
|
||||
func provideFoo() Foo {
|
||||
return 41
|
||||
}
|
||||
|
||||
//goose:provide Set
|
||||
func provideFooBar(foo Foo) FooBar {
|
||||
return FooBar(foo) + 1
|
||||
}
|
||||
7
internal/goose/testdata/Chain/foo/foo_goose.go
vendored
Normal file
7
internal/goose/testdata/Chain/foo/foo_goose.go
vendored
Normal file
@@ -0,0 +1,7 @@
|
||||
//+build gooseinject
|
||||
|
||||
package main
|
||||
|
||||
//goose:use Set
|
||||
|
||||
func injectFooBar() FooBar
|
||||
1
internal/goose/testdata/Chain/out.txt
vendored
Normal file
1
internal/goose/testdata/Chain/out.txt
vendored
Normal file
@@ -0,0 +1 @@
|
||||
42
|
||||
1
internal/goose/testdata/Chain/pkg
vendored
Normal file
1
internal/goose/testdata/Chain/pkg
vendored
Normal file
@@ -0,0 +1 @@
|
||||
foo
|
||||
21
internal/goose/testdata/InjectInput/foo/foo.go
vendored
Normal file
21
internal/goose/testdata/InjectInput/foo/foo.go
vendored
Normal file
@@ -0,0 +1,21 @@
|
||||
package main
|
||||
|
||||
import "fmt"
|
||||
|
||||
func main() {
|
||||
fmt.Println(injectFooBar(40))
|
||||
}
|
||||
|
||||
type Foo int
|
||||
type Bar int
|
||||
type FooBar int
|
||||
|
||||
//goose:provide Set
|
||||
func provideBar() Bar {
|
||||
return 2
|
||||
}
|
||||
|
||||
//goose:provide Set
|
||||
func provideFooBar(foo Foo, bar Bar) FooBar {
|
||||
return FooBar(foo) + FooBar(bar)
|
||||
}
|
||||
7
internal/goose/testdata/InjectInput/foo/foo_goose.go
vendored
Normal file
7
internal/goose/testdata/InjectInput/foo/foo_goose.go
vendored
Normal file
@@ -0,0 +1,7 @@
|
||||
//+build gooseinject
|
||||
|
||||
package main
|
||||
|
||||
//goose:use Set
|
||||
|
||||
func injectFooBar(foo Foo) FooBar
|
||||
1
internal/goose/testdata/InjectInput/out.txt
vendored
Normal file
1
internal/goose/testdata/InjectInput/out.txt
vendored
Normal file
@@ -0,0 +1 @@
|
||||
42
|
||||
1
internal/goose/testdata/InjectInput/pkg
vendored
Normal file
1
internal/goose/testdata/InjectInput/pkg
vendored
Normal file
@@ -0,0 +1 @@
|
||||
foo
|
||||
23
internal/goose/testdata/InjectInputConflict/foo/foo.go
vendored
Normal file
23
internal/goose/testdata/InjectInputConflict/foo/foo.go
vendored
Normal file
@@ -0,0 +1,23 @@
|
||||
package main
|
||||
|
||||
import "fmt"
|
||||
|
||||
func main() {
|
||||
// I'm on the fence as to whether this should be an error (versus an
|
||||
// override). For now, I will make it an error that can be relaxed
|
||||
// later.
|
||||
fmt.Println(injectBar(40))
|
||||
}
|
||||
|
||||
type Foo int
|
||||
type Bar int
|
||||
|
||||
//goose:provide Set
|
||||
func provideFoo() Foo {
|
||||
return -888
|
||||
}
|
||||
|
||||
//goose:provide Set
|
||||
func provideBar(foo Foo) Bar {
|
||||
return 2
|
||||
}
|
||||
7
internal/goose/testdata/InjectInputConflict/foo/foo_goose.go
vendored
Normal file
7
internal/goose/testdata/InjectInputConflict/foo/foo_goose.go
vendored
Normal file
@@ -0,0 +1,7 @@
|
||||
//+build gooseinject
|
||||
|
||||
package main
|
||||
|
||||
//goose:use Set
|
||||
|
||||
func injectBar(foo Foo) Bar
|
||||
1
internal/goose/testdata/InjectInputConflict/out.txt
vendored
Normal file
1
internal/goose/testdata/InjectInputConflict/out.txt
vendored
Normal file
@@ -0,0 +1 @@
|
||||
ERROR
|
||||
1
internal/goose/testdata/InjectInputConflict/pkg
vendored
Normal file
1
internal/goose/testdata/InjectInputConflict/pkg
vendored
Normal file
@@ -0,0 +1 @@
|
||||
foo
|
||||
14
internal/goose/testdata/MissingUse/foo/foo.go
vendored
Normal file
14
internal/goose/testdata/MissingUse/foo/foo.go
vendored
Normal file
@@ -0,0 +1,14 @@
|
||||
package main
|
||||
|
||||
import "fmt"
|
||||
|
||||
func main() {
|
||||
fmt.Println(injectedMessage())
|
||||
}
|
||||
|
||||
//goose:provide Set
|
||||
|
||||
// provideMessage provides a friendly user greeting.
|
||||
func provideMessage() string {
|
||||
return "Hello, World!"
|
||||
}
|
||||
5
internal/goose/testdata/MissingUse/foo/foo_goose.go
vendored
Normal file
5
internal/goose/testdata/MissingUse/foo/foo_goose.go
vendored
Normal file
@@ -0,0 +1,5 @@
|
||||
//+build gooseinject
|
||||
|
||||
package main
|
||||
|
||||
func injectedMessage() string
|
||||
1
internal/goose/testdata/MissingUse/out.txt
vendored
Normal file
1
internal/goose/testdata/MissingUse/out.txt
vendored
Normal file
@@ -0,0 +1 @@
|
||||
ERROR
|
||||
1
internal/goose/testdata/MissingUse/pkg
vendored
Normal file
1
internal/goose/testdata/MissingUse/pkg
vendored
Normal file
@@ -0,0 +1 @@
|
||||
foo
|
||||
14
internal/goose/testdata/NiladicIdentity/foo/foo.go
vendored
Normal file
14
internal/goose/testdata/NiladicIdentity/foo/foo.go
vendored
Normal file
@@ -0,0 +1,14 @@
|
||||
package main
|
||||
|
||||
import "fmt"
|
||||
|
||||
func main() {
|
||||
fmt.Println(injectedMessage())
|
||||
}
|
||||
|
||||
//goose:provide
|
||||
|
||||
// provideMessage provides a friendly user greeting.
|
||||
func provideMessage() string {
|
||||
return "Hello, World!"
|
||||
}
|
||||
7
internal/goose/testdata/NiladicIdentity/foo/foo_goose.go
vendored
Normal file
7
internal/goose/testdata/NiladicIdentity/foo/foo_goose.go
vendored
Normal file
@@ -0,0 +1,7 @@
|
||||
//+build gooseinject
|
||||
|
||||
package main
|
||||
|
||||
//goose:use provideMessage
|
||||
|
||||
func injectedMessage() string
|
||||
1
internal/goose/testdata/NiladicIdentity/out.txt
vendored
Normal file
1
internal/goose/testdata/NiladicIdentity/out.txt
vendored
Normal file
@@ -0,0 +1 @@
|
||||
Hello, World!
|
||||
1
internal/goose/testdata/NiladicIdentity/pkg
vendored
Normal file
1
internal/goose/testdata/NiladicIdentity/pkg
vendored
Normal file
@@ -0,0 +1 @@
|
||||
foo
|
||||
7
internal/goose/testdata/NoopBuild/foo/foo.go
vendored
Normal file
7
internal/goose/testdata/NoopBuild/foo/foo.go
vendored
Normal file
@@ -0,0 +1,7 @@
|
||||
package main
|
||||
|
||||
import "fmt"
|
||||
|
||||
func main() {
|
||||
fmt.Println("Hello, World!")
|
||||
}
|
||||
1
internal/goose/testdata/NoopBuild/out.txt
vendored
Normal file
1
internal/goose/testdata/NoopBuild/out.txt
vendored
Normal file
@@ -0,0 +1 @@
|
||||
Hello, World!
|
||||
1
internal/goose/testdata/NoopBuild/pkg
vendored
Normal file
1
internal/goose/testdata/NoopBuild/pkg
vendored
Normal file
@@ -0,0 +1 @@
|
||||
foo
|
||||
22
internal/goose/testdata/ReturnError/foo/foo.go
vendored
Normal file
22
internal/goose/testdata/ReturnError/foo/foo.go
vendored
Normal file
@@ -0,0 +1,22 @@
|
||||
package main
|
||||
|
||||
import "errors"
|
||||
import "fmt"
|
||||
import "strings"
|
||||
|
||||
func main() {
|
||||
foo, err := injectFoo()
|
||||
fmt.Println(foo) // should be zero, the injector should ignore provideFoo's return value.
|
||||
if err == nil {
|
||||
fmt.Println("<nil>")
|
||||
} else {
|
||||
fmt.Println(strings.Contains(err.Error(), "there is no Foo"))
|
||||
}
|
||||
}
|
||||
|
||||
type Foo int
|
||||
|
||||
//goose:provide Set
|
||||
func provideFoo() (Foo, error) {
|
||||
return 42, errors.New("there is no Foo")
|
||||
}
|
||||
7
internal/goose/testdata/ReturnError/foo/foo_goose.go
vendored
Normal file
7
internal/goose/testdata/ReturnError/foo/foo_goose.go
vendored
Normal file
@@ -0,0 +1,7 @@
|
||||
//+build gooseinject
|
||||
|
||||
package main
|
||||
|
||||
//goose:use Set
|
||||
|
||||
func injectFoo() (Foo, error)
|
||||
2
internal/goose/testdata/ReturnError/out.txt
vendored
Normal file
2
internal/goose/testdata/ReturnError/out.txt
vendored
Normal file
@@ -0,0 +1,2 @@
|
||||
0
|
||||
true
|
||||
1
internal/goose/testdata/ReturnError/pkg
vendored
Normal file
1
internal/goose/testdata/ReturnError/pkg
vendored
Normal file
@@ -0,0 +1 @@
|
||||
foo
|
||||
26
internal/goose/testdata/TwoDeps/foo/foo.go
vendored
Normal file
26
internal/goose/testdata/TwoDeps/foo/foo.go
vendored
Normal file
@@ -0,0 +1,26 @@
|
||||
package main
|
||||
|
||||
import "fmt"
|
||||
|
||||
func main() {
|
||||
fmt.Println(injectFooBar())
|
||||
}
|
||||
|
||||
type Foo int
|
||||
type Bar int
|
||||
type FooBar int
|
||||
|
||||
//goose:provide Set
|
||||
func provideFoo() Foo {
|
||||
return 40
|
||||
}
|
||||
|
||||
//goose:provide Set
|
||||
func provideBar() Bar {
|
||||
return 2
|
||||
}
|
||||
|
||||
//goose:provide Set
|
||||
func provideFooBar(foo Foo, bar Bar) FooBar {
|
||||
return FooBar(foo) + FooBar(bar)
|
||||
}
|
||||
7
internal/goose/testdata/TwoDeps/foo/foo_goose.go
vendored
Normal file
7
internal/goose/testdata/TwoDeps/foo/foo_goose.go
vendored
Normal file
@@ -0,0 +1,7 @@
|
||||
//+build gooseinject
|
||||
|
||||
package main
|
||||
|
||||
//goose:use Set
|
||||
|
||||
func injectFooBar() FooBar
|
||||
1
internal/goose/testdata/TwoDeps/out.txt
vendored
Normal file
1
internal/goose/testdata/TwoDeps/out.txt
vendored
Normal file
@@ -0,0 +1 @@
|
||||
42
|
||||
1
internal/goose/testdata/TwoDeps/pkg
vendored
Normal file
1
internal/goose/testdata/TwoDeps/pkg
vendored
Normal file
@@ -0,0 +1 @@
|
||||
foo
|
||||
Reference in New Issue
Block a user