1 // Copyright 2016 The Go Authors. All rights reserved.
2 // Use of this source code is governed by a BSD-style
3 // license that can be found in the LICENSE file.
14 "golang.org/x/tools/go/buildutil"
17 func TestParseOverlayArchive(t *testing.T) {
25 map[string][]byte{"a.go": []byte("12345")},
34 "a.go\n5\n12345b.go\n4\n1234",
35 map[string][]byte{"a.go": []byte("12345"), "b.go": []byte("1234")},
40 for _, test := range tt {
41 got, err := buildutil.ParseOverlayArchive(strings.NewReader(test.in))
42 if err == nil && test.hasErr {
43 t.Errorf("expected error for %q", test.in)
45 if err != nil && !test.hasErr {
46 t.Errorf("unexpected error %v for %q", err, test.in)
48 if !reflect.DeepEqual(got, test.out) {
49 t.Errorf("got %#v, want %#v", got, test.out)
54 func TestOverlay(t *testing.T) {
56 ov := map[string][]byte{
57 "/somewhere/a.go": []byte("file contents"),
59 names := []string{"/somewhere/a.go", "/somewhere//a.go"}
60 ctx = buildutil.OverlayContext(ctx, ov)
61 for _, name := range names {
62 f, err := buildutil.OpenFile(ctx, name)
64 t.Errorf("unexpected error %v", err)
66 b, err := ioutil.ReadAll(f)
68 t.Errorf("unexpected error %v", err)
70 if got, expected := string(b), string(ov["/somewhere/a.go"]); got != expected {
71 t.Errorf("read %q, expected %q", got, expected)