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. |
4 | |
5 | package buildutil_test |
6 | |
7 | import ( |
8 | "go/build" |
9 | "io/ioutil" |
10 | "reflect" |
11 | "strings" |
12 | "testing" |
13 | |
14 | "golang.org/x/tools/go/buildutil" |
15 | ) |
16 | |
17 | func TestParseOverlayArchive(t *testing.T) { |
18 | var tt = []struct { |
19 | in string |
20 | out map[string][]byte |
21 | hasErr bool |
22 | }{ |
23 | { |
24 | "a.go\n5\n12345", |
25 | map[string][]byte{"a.go": []byte("12345")}, |
26 | false, |
27 | }, |
28 | { |
29 | "a.go\n5\n1234", |
30 | nil, |
31 | true, |
32 | }, |
33 | { |
34 | "a.go\n5\n12345b.go\n4\n1234", |
35 | map[string][]byte{"a.go": []byte("12345"), "b.go": []byte("1234")}, |
36 | false, |
37 | }, |
38 | } |
39 | |
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) |
44 | } |
45 | if err != nil && !test.hasErr { |
46 | t.Errorf("unexpected error %v for %q", err, test.in) |
47 | } |
48 | if !reflect.DeepEqual(got, test.out) { |
49 | t.Errorf("got %#v, want %#v", got, test.out) |
50 | } |
51 | } |
52 | } |
53 | |
54 | func TestOverlay(t *testing.T) { |
55 | ctx := &build.Default |
56 | ov := map[string][]byte{ |
57 | "/somewhere/a.go": []byte("file contents"), |
58 | } |
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) |
63 | if err != nil { |
64 | t.Errorf("unexpected error %v", err) |
65 | } |
66 | b, err := ioutil.ReadAll(f) |
67 | if err != nil { |
68 | t.Errorf("unexpected error %v", err) |
69 | } |
70 | if got, expected := string(b), string(ov["/somewhere/a.go"]); got != expected { |
71 | t.Errorf("read %q, expected %q", got, expected) |
72 | } |
73 | } |
74 | } |
75 |
Members