10 "golang.org/x/tools/go/buildutil"
13 func TestParseOverlayArchive(t *testing.T) {
21 map[string][]byte{"a.go": []byte("12345")},
30 "a.go\n5\n12345b.go\n4\n1234",
31 map[string][]byte{"a.go": []byte("12345"), "b.go": []byte("1234")},
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)
41 if err != nil && !test.hasErr {
42 t.Errorf("unexpected error %v for %q", err, test.in)
44 if !reflect.DeepEqual(got, test.out) {
45 t.Errorf("got %#v, want %#v", got, test.out)
50 func TestOverlay(t *testing.T) {
52 ov := map[string][]byte{
53 "/somewhere/a.go": []byte("file contents"),
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)
60 t.Errorf("unexpected error %v", err)
62 b, err := ioutil.ReadAll(f)
64 t.Errorf("unexpected error %v", err)
66 if got, expected := string(b), string(ov["/somewhere/a.go"]); got != expected {
67 t.Errorf("read %q, expected %q", got, expected)