GoPLS Viewer

Home|gopls/go/buildutil/overlay_test.go
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
5package buildutil_test
6
7import (
8    "go/build"
9    "io/ioutil"
10    "reflect"
11    "strings"
12    "testing"
13
14    "golang.org/x/tools/go/buildutil"
15)
16
17func 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        goterr := 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"errtest.in)
47        }
48        if !reflect.DeepEqual(gottest.out) {
49            t.Errorf("got %#v, want %#v"gottest.out)
50        }
51    }
52}
53
54func 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(ctxov)
61    for _name := range names {
62        ferr := buildutil.OpenFile(ctxname)
63        if err != nil {
64            t.Errorf("unexpected error %v"err)
65        }
66        berr := ioutil.ReadAll(f)
67        if err != nil {
68            t.Errorf("unexpected error %v"err)
69        }
70        if gotexpected := string(b), string(ov["/somewhere/a.go"]); got != expected {
71            t.Errorf("read %q, expected %q"gotexpected)
72        }
73    }
74}
75
MembersX
TestParseOverlayArchive
TestOverlay.ov
TestOverlay.RangeStmt_1285.BlockStmt.f
TestOverlay.RangeStmt_1285.BlockStmt.err
TestOverlay.RangeStmt_1285.BlockStmt.b
TestParseOverlayArchive.t
TestOverlay
TestOverlay.t
TestOverlay.names
TestOverlay.RangeStmt_1285.BlockStmt.expected
TestParseOverlayArchive.RangeStmt_680.BlockStmt.got
reflect
TestParseOverlayArchive.RangeStmt_680.test
TestParseOverlayArchive.RangeStmt_680.BlockStmt.err
TestOverlay.RangeStmt_1285.name
TestOverlay.RangeStmt_1285.BlockStmt.got
Members
X