.gitignore added
[dotfiles/.git] / .config / coc / extensions / coc-go-data / tools / pkg / mod / golang.org / x / tools@v0.1.1-0.20210319172145-bda8f5cee399 / go / buildutil / overlay_test.go
diff --git a/.config/coc/extensions/coc-go-data/tools/pkg/mod/golang.org/x/tools@v0.1.1-0.20210319172145-bda8f5cee399/go/buildutil/overlay_test.go b/.config/coc/extensions/coc-go-data/tools/pkg/mod/golang.org/x/tools@v0.1.1-0.20210319172145-bda8f5cee399/go/buildutil/overlay_test.go
new file mode 100644 (file)
index 0000000..4ee8817
--- /dev/null
@@ -0,0 +1,74 @@
+// Copyright 2016 The Go Authors. All rights reserved.
+// Use of this source code is governed by a BSD-style
+// license that can be found in the LICENSE file.
+
+package buildutil_test
+
+import (
+       "go/build"
+       "io/ioutil"
+       "reflect"
+       "strings"
+       "testing"
+
+       "golang.org/x/tools/go/buildutil"
+)
+
+func TestParseOverlayArchive(t *testing.T) {
+       var tt = []struct {
+               in     string
+               out    map[string][]byte
+               hasErr bool
+       }{
+               {
+                       "a.go\n5\n12345",
+                       map[string][]byte{"a.go": []byte("12345")},
+                       false,
+               },
+               {
+                       "a.go\n5\n1234",
+                       nil,
+                       true,
+               },
+               {
+                       "a.go\n5\n12345b.go\n4\n1234",
+                       map[string][]byte{"a.go": []byte("12345"), "b.go": []byte("1234")},
+                       false,
+               },
+       }
+
+       for _, test := range tt {
+               got, err := buildutil.ParseOverlayArchive(strings.NewReader(test.in))
+               if err == nil && test.hasErr {
+                       t.Errorf("expected error for %q", test.in)
+               }
+               if err != nil && !test.hasErr {
+                       t.Errorf("unexpected error %v for %q", err, test.in)
+               }
+               if !reflect.DeepEqual(got, test.out) {
+                       t.Errorf("got %#v, want %#v", got, test.out)
+               }
+       }
+}
+
+func TestOverlay(t *testing.T) {
+       ctx := &build.Default
+       ov := map[string][]byte{
+               "/somewhere/a.go": []byte("file contents"),
+       }
+       names := []string{"/somewhere/a.go", "/somewhere//a.go"}
+       ctx = buildutil.OverlayContext(ctx, ov)
+       for _, name := range names {
+               f, err := buildutil.OpenFile(ctx, name)
+               if err != nil {
+                       t.Errorf("unexpected error %v", err)
+               }
+               b, err := ioutil.ReadAll(f)
+               if err != nil {
+                       t.Errorf("unexpected error %v", err)
+               }
+               if got, expected := string(b), string(ov["/somewhere/a.go"]); got != expected {
+                       t.Errorf("read %q, expected %q", got, expected)
+               }
+       }
+}