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  }