Giant blob of minor changes
[dotfiles/.git] / .config / coc / extensions / coc-go-data / tools / pkg / mod / golang.org / x / tools@v0.0.0-20201028153306-37f0764111ff / go / buildutil / overlay_test.go
1 package buildutil_test
2
3 import (
4         "go/build"
5         "io/ioutil"
6         "reflect"
7         "strings"
8         "testing"
9
10         "golang.org/x/tools/go/buildutil"
11 )
12
13 func TestParseOverlayArchive(t *testing.T) {
14         var tt = []struct {
15                 in     string
16                 out    map[string][]byte
17                 hasErr bool
18         }{
19                 {
20                         "a.go\n5\n12345",
21                         map[string][]byte{"a.go": []byte("12345")},
22                         false,
23                 },
24                 {
25                         "a.go\n5\n1234",
26                         nil,
27                         true,
28                 },
29                 {
30                         "a.go\n5\n12345b.go\n4\n1234",
31                         map[string][]byte{"a.go": []byte("12345"), "b.go": []byte("1234")},
32                         false,
33                 },
34         }
35
36         for _, test := range tt {
37                 got, err := buildutil.ParseOverlayArchive(strings.NewReader(test.in))
38                 if err == nil && test.hasErr {
39                         t.Errorf("expected error for %q", test.in)
40                 }
41                 if err != nil && !test.hasErr {
42                         t.Errorf("unexpected error %v for %q", err, test.in)
43                 }
44                 if !reflect.DeepEqual(got, test.out) {
45                         t.Errorf("got %#v, want %#v", got, test.out)
46                 }
47         }
48 }
49
50 func TestOverlay(t *testing.T) {
51         ctx := &build.Default
52         ov := map[string][]byte{
53                 "/somewhere/a.go": []byte("file contents"),
54         }
55         names := []string{"/somewhere/a.go", "/somewhere//a.go"}
56         ctx = buildutil.OverlayContext(ctx, ov)
57         for _, name := range names {
58                 f, err := buildutil.OpenFile(ctx, name)
59                 if err != nil {
60                         t.Errorf("unexpected error %v", err)
61                 }
62                 b, err := ioutil.ReadAll(f)
63                 if err != nil {
64                         t.Errorf("unexpected error %v", err)
65                 }
66                 if got, expected := string(b), string(ov["/somewhere/a.go"]); got != expected {
67                         t.Errorf("read %q, expected %q", got, expected)
68                 }
69         }
70 }