...

Source file src/github.com/bazelbuild/rules_go/go/tools/builders/cover_test.go

Documentation: github.com/bazelbuild/rules_go/go/tools/builders

     1  package main
     2  
     3  import (
     4  	"io/ioutil"
     5  	"os"
     6  	"path/filepath"
     7  	"testing"
     8  )
     9  
    10  type test struct {
    11  	name string
    12  	in   string
    13  	out  string
    14  }
    15  
    16  var tests = []test{
    17  	{
    18  		name: "no imports",
    19  		in: `package main
    20  `,
    21  		out: `package main; import "github.com/bazelbuild/rules_go/go/tools/coverdata"
    22  
    23  func init() {
    24  	coverdata.RegisterFile("srcName",
    25  		varName.Count[:],
    26  		varName.Pos[:],
    27  		varName.NumStmt[:])
    28  }
    29  `,
    30  	},
    31  	{
    32  		name: "other imports",
    33  		in: `package main
    34  
    35  import (
    36  	"os"
    37  )
    38  `,
    39  		out: `package main; import "github.com/bazelbuild/rules_go/go/tools/coverdata"
    40  
    41  import (
    42  	"os"
    43  )
    44  
    45  func init() {
    46  	coverdata.RegisterFile("srcName",
    47  		varName.Count[:],
    48  		varName.Pos[:],
    49  		varName.NumStmt[:])
    50  }
    51  `,
    52  	},
    53  	{
    54  		name: "existing import",
    55  		in: `package main
    56  
    57  import "github.com/bazelbuild/rules_go/go/tools/coverdata"
    58  `,
    59  		out: `package main
    60  
    61  import "github.com/bazelbuild/rules_go/go/tools/coverdata"
    62  
    63  func init() {
    64  	coverdata.RegisterFile("srcName",
    65  		varName.Count[:],
    66  		varName.Pos[:],
    67  		varName.NumStmt[:])
    68  }
    69  `,
    70  	},
    71  	{
    72  		name: "existing _ import",
    73  		in: `package main
    74  
    75  import _ "github.com/bazelbuild/rules_go/go/tools/coverdata"
    76  `,
    77  		out: `package main
    78  
    79  import coverdata "github.com/bazelbuild/rules_go/go/tools/coverdata"
    80  
    81  func init() {
    82  	coverdata.RegisterFile("srcName",
    83  		varName.Count[:],
    84  		varName.Pos[:],
    85  		varName.NumStmt[:])
    86  }
    87  `,
    88  	},
    89  	{
    90  		name: "existing renamed import",
    91  		in: `package main
    92  
    93  import cover0 "github.com/bazelbuild/rules_go/go/tools/coverdata"
    94  `,
    95  		out: `package main
    96  
    97  import cover0 "github.com/bazelbuild/rules_go/go/tools/coverdata"
    98  
    99  func init() {
   100  	cover0.RegisterFile("srcName",
   101  		varName.Count[:],
   102  		varName.Pos[:],
   103  		varName.NumStmt[:])
   104  }
   105  `,
   106  	},
   107  }
   108  
   109  func TestRegisterCoverage(t *testing.T) {
   110  	var filename = filepath.Join(t.TempDir(), "test_input.go")
   111  	for _, test := range tests {
   112  		if err := ioutil.WriteFile(filename, []byte(test.in), 0666); err != nil {
   113  			t.Errorf("writing input file: %v", err)
   114  			return
   115  		}
   116  		err := registerCoverage(filename, "varName", "srcName")
   117  		if err != nil {
   118  			t.Errorf("%q: %+v", test.name, err)
   119  			continue
   120  		}
   121  		coverSrc, err := os.ReadFile(filename)
   122  		if err != nil {
   123  			t.Errorf("%q: %+v", test.name, err)
   124  			continue
   125  		}
   126  		if got, want := string(coverSrc), test.out; got != want {
   127  			t.Errorf("%q: got %v, want %v", test.name, got, want)
   128  		}
   129  	}
   130  }
   131  

View as plain text