github.com/tiagovtristao/plz@v13.4.0+incompatible/tools/please_go_test/gotest/write_test_main_test.go (about) 1 package gotest 2 3 import ( 4 "go/parser" 5 "go/token" 6 "testing" 7 8 "github.com/stretchr/testify/assert" 9 ) 10 11 func TestParseTestSources(t *testing.T) { 12 descr, err := parseTestSources([]string{"tools/please_go_test/gotest/test_data/example_test.go"}) 13 assert.NoError(t, err) 14 assert.Equal(t, "buildgo", descr.Package) 15 assert.Equal(t, "", descr.Main) 16 functions := []string{ 17 "TestReadPkgdef", 18 "TestReadCopiedPkgdef", 19 "TestFindCoverVars", 20 "TestFindCoverVarsFailsGracefully", 21 "TestFindCoverVarsReturnsNothingForEmptyPath", 22 } 23 assert.Equal(t, functions, descr.Functions) 24 } 25 26 func TestParseTestSourcesWithMain(t *testing.T) { 27 descr, err := parseTestSources([]string{"tools/please_go_test/gotest/test_data/example_test_main.go"}) 28 assert.NoError(t, err) 29 assert.Equal(t, "parse", descr.Package) 30 assert.Equal(t, "TestMain", descr.Main) 31 functions := []string{ 32 "TestParseSourceBuildLabel", 33 "TestParseSourceRelativeBuildLabel", 34 "TestParseSourceFromSubdirectory", 35 "TestParseSourceFromOwnedSubdirectory", 36 "TestParseSourceWithParentPath", 37 "TestParseSourceWithAbsolutePath", 38 "TestAddTarget", 39 } 40 assert.Equal(t, functions, descr.Functions) 41 } 42 43 func TestParseTestSourcesFailsGracefully(t *testing.T) { 44 _, err := parseTestSources([]string{"wibble"}) 45 assert.Error(t, err) 46 } 47 48 func TestWriteTestMain(t *testing.T) { 49 err := WriteTestMain( 50 "tools/please_go_test/gotest/test_data", 51 "", 52 false, // not version 1.8 53 []string{"tools/please_go_test/gotest/test_data/example_test.go"}, 54 "test.go", 55 []CoverVar{}, 56 ) 57 assert.NoError(t, err) 58 // It's not really practical to assert the contents of the file in great detail. 59 // We'll do the obvious thing of asserting that it is valid Go source. 60 f, err := parser.ParseFile(token.NewFileSet(), "test.go", nil, 0) 61 assert.NoError(t, err) 62 assert.Equal(t, "main", f.Name.Name) 63 } 64 65 func TestWriteTestMainWithCoverage(t *testing.T) { 66 err := WriteTestMain( 67 "tools/please_go_test/gotest/test_data", 68 "", 69 false, // not version 1.8 70 []string{"tools/please_go_test/gotest/test_data/example_test.go"}, 71 "test.go", 72 []CoverVar{{ 73 Dir: "tools/please_go_test/gotest/test_data", 74 ImportPath: "core", 75 Var: "GoCover_lock_go", 76 File: "tools/please_go_test/gotest/test_data/lock.go", 77 }}, 78 ) 79 assert.NoError(t, err) 80 // It's not really practical to assert the contents of the file in great detail. 81 // We'll do the obvious thing of asserting that it is valid Go source. 82 f, err := parser.ParseFile(token.NewFileSet(), "test.go", nil, 0) 83 assert.NoError(t, err) 84 assert.Equal(t, "main", f.Name.Name) 85 } 86 87 func TestExtraImportPaths(t *testing.T) { 88 assert.Equal(t, extraImportPaths("core", "src/core", "", []CoverVar{ 89 {ImportPath: "core"}, 90 {ImportPath: "output"}, 91 }), []string{ 92 "core \"core\"", 93 "_cover0 \"core\"", 94 "_cover1 \"output\"", 95 }) 96 } 97 98 func TestExtraImportPathsWithImportPath(t *testing.T) { 99 assert.Equal(t, extraImportPaths("core", "src/core", "github.com/thought-machine/please", []CoverVar{ 100 {ImportPath: "src/core"}, 101 {ImportPath: "output"}, 102 }), []string{ 103 "core \"github.com/thought-machine/please/src/core\"", 104 "_cover0 \"github.com/thought-machine/please/src/core\"", 105 "_cover1 \"github.com/thought-machine/please/output\"", 106 }) 107 } 108 109 func TestIsVersion18(t *testing.T) { 110 assert.True(t, isVersion18([]byte("go version go1.8beta2 linux/amd64"))) 111 assert.True(t, isVersion18([]byte("go version go1.8 linux/amd64"))) 112 assert.True(t, isVersion18([]byte("go version go1.8.2 linux/amd64"))) 113 assert.False(t, isVersion18([]byte("go version go1.7beta2 linux/amd64"))) 114 assert.False(t, isVersion18([]byte("go version go1.7 linux/amd64"))) 115 assert.False(t, isVersion18([]byte("go version go1.7.2 linux/amd64"))) 116 assert.True(t, isVersion18([]byte("go version go1.10beta2 linux/amd64"))) 117 assert.True(t, isVersion18([]byte("go version go1.10 linux/amd64"))) 118 assert.True(t, isVersion18([]byte("go version go1.10.2 linux/amd64"))) 119 }