From 893b5761d2ad1af5776fcb09e7faff817becb1d8 Mon Sep 17 00:00:00 2001 From: Charles Weill Date: Sun, 7 Apr 2019 14:20:52 -0400 Subject: [PATCH] Fix TravisCI and add go1.11 and go1.12 support (#94) (#95) --- .travis.yml | 6 +++--- gotests_test.go | 23 ++++++++++++++++++++--- testdata/goldens/interface_embedding.go | 21 +++++++++++++++++++++ testdata/goldens/target_test_file.go | 2 +- 4 files changed, 45 insertions(+), 7 deletions(-) create mode 100644 testdata/goldens/interface_embedding.go diff --git a/.travis.yml b/.travis.yml index 9260cda..bd55fa2 100644 --- a/.travis.yml +++ b/.travis.yml @@ -1,12 +1,12 @@ +sudo: required language: go -sudo: false go: - - 1.8.x - 1.9.x - 1.10.x + - 1.11.x + - 1.12.x before_install: - go get github.com/mattn/goveralls - - go get github.com/mjibson/esc - if ! go get github.com/golang/tools/cmd/cover; then go get golang.org/x/tools/cmd/cover; fi script: - go test ./... diff --git a/gotests_test.go b/gotests_test.go index 9236296..dde24cf 100644 --- a/gotests_test.go +++ b/gotests_test.go @@ -6,6 +6,8 @@ import ( "io/ioutil" "path" "regexp" + "runtime" + "strings" "testing" "unicode" @@ -606,8 +608,9 @@ func TestGenerateTests(t *testing.T) { args: args{ srcPath: `testdata/undefinedtypes/interface_embedding.go`, }, - wantNoTests: true, - wantErr: true, + want: mustReadAndFormatGoFile(t, "testdata/goldens/interface_embedding.go"), + wantNoTests: !versionGreaterOrEqualThan("go1.11"), + wantErr: !versionGreaterOrEqualThan("go1.11"), }, } tmp, err := ioutil.TempDir("", "gotests_test") @@ -646,10 +649,24 @@ func TestGenerateTests(t *testing.T) { } } +func versionGreaterOrEqualThan(version string) bool { + prefixes := []string{"go1.9", "go1.10", "go1.11", "go1.12", "go1.13"} + v := runtime.Version() + for _, prefix := range prefixes { + if strings.Contains(version, prefix) { + return true + } + if strings.Contains(v, prefix) { + return false + } + } + return true +} + func mustReadAndFormatGoFile(t *testing.T, filename string) string { fmted, err := imports.Process(filename, nil, nil) if err != nil { - t.Fatal(err) + t.Fatalf("reading and formatting file: %v", err) } return string(fmted) } diff --git a/testdata/goldens/interface_embedding.go b/testdata/goldens/interface_embedding.go new file mode 100644 index 0000000..c4e576f --- /dev/null +++ b/testdata/goldens/interface_embedding.go @@ -0,0 +1,21 @@ +package undefinedtypes + +import "testing" + +func TestSomeStruct_Do(t *testing.T) { + type fields struct { + Doer some.Doer + } + testCases := []struct { + name string + fields fields + }{ + // TODO: Add test cases. + } + for _, tt := range testCases { + c := &SomeStruct{ + Doer: tt.fields.Doer, + } + c.Do() + } +} diff --git a/testdata/goldens/target_test_file.go b/testdata/goldens/target_test_file.go index 5aacfdb..74fb6fb 100644 --- a/testdata/goldens/target_test_file.go +++ b/testdata/goldens/target_test_file.go @@ -63,7 +63,7 @@ func Test_wrapToString(t *testing.T) { args args want []string }{ - // TODO: Add test cases. + // TODO: Add test cases. } for _, tt := range tests { t.Run(tt.name, func(t *testing.T) {