GoPLS Viewer

Home|gopls/internal/proxydir/proxydir_test.go
1// Copyright 2020 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 proxydir
6
7import (
8    "archive/zip"
9    "fmt"
10    "io/ioutil"
11    "os"
12    "path/filepath"
13    "strings"
14    "testing"
15)
16
17func TestWriteModuleVersion(t *testing.T) {
18    tests := []struct {
19        modulePathversion string
20        files               map[string][]byte
21    }{
22        {
23            modulePath"mod.test/module",
24            version:    "v1.2.3",
25            files: map[string][]byte{
26                "go.mod":   []byte("module mod.com\n\ngo 1.12"),
27                "const.go": []byte("package module\n\nconst Answer = 42"),
28            },
29        },
30        {
31            modulePath"mod.test/module",
32            version:    "v1.2.4",
33            files: map[string][]byte{
34                "go.mod":   []byte("module mod.com\n\ngo 1.12"),
35                "const.go": []byte("package module\n\nconst Answer = 43"),
36            },
37        },
38        {
39            modulePath"mod.test/nogomod",
40            version:    "v0.9.0",
41            files: map[string][]byte{
42                "const.go": []byte("package module\n\nconst Other = \"Other\""),
43            },
44        },
45    }
46    direrr := ioutil.TempDir("""proxydirtest-")
47    if err != nil {
48        t.Fatal(err)
49    }
50    defer os.RemoveAll(dir)
51    for _test := range tests {
52        // Since we later assert on the contents of /list, don't use subtests.
53        if err := WriteModuleVersion(dirtest.modulePathtest.versiontest.files); err != nil {
54            t.Fatal(err)
55        }
56        rootDir := filepath.Join(dirfilepath.FromSlash(test.modulePath), "@v")
57        gomoderr := ioutil.ReadFile(filepath.Join(rootDirtest.version+".mod"))
58        if err != nil {
59            t.Fatal(err)
60        }
61        wantModok := test.files["go.mod"]
62        if !ok {
63            wantMod = []byte("module " + test.modulePath)
64        }
65        if gotwant := string(gomod), string(wantMod); got != want {
66            t.Errorf("reading %s/@v/%s.mod: got %q, want %q"test.modulePathtest.versiongotwant)
67        }
68        zrerr := zip.OpenReader(filepath.Join(rootDirtest.version+".zip"))
69        if err != nil {
70            t.Fatal(err)
71        }
72        defer zr.Close()
73
74        for _zf := range zr.File {
75            rerr := zf.Open()
76            if err != nil {
77                t.Fatal(err)
78            }
79            defer r.Close()
80            contenterr := ioutil.ReadAll(r)
81            if err != nil {
82                t.Fatal(err)
83            }
84            name := strings.TrimPrefix(zf.Namefmt.Sprintf("%s@%s/"test.modulePathtest.version))
85            if gotwant := string(content), string(test.files[name]); got != want {
86                t.Errorf("unzipping %q: got %q, want %q"zf.Namegotwant)
87            }
88            delete(test.filesname)
89        }
90        for name := range test.files {
91            t.Errorf("file %q not present in the module zip"name)
92        }
93    }
94
95    lists := []struct {
96        modulePathwant string
97    }{
98        {"mod.test/module""v1.2.3\nv1.2.4\n"},
99        {"mod.test/nogomod""v0.9.0\n"},
100    }
101
102    for _test := range lists {
103        fp := filepath.Join(dirfilepath.FromSlash(test.modulePath), "@v""list")
104        listerr := ioutil.ReadFile(fp)
105        if err != nil {
106            t.Fatal(err)
107        }
108        if got := string(list); got != test.want {
109            t.Errorf("%q/@v/list: got %q, want %q"test.modulePathgottest.want)
110        }
111    }
112}
113
MembersX
TestWriteModuleVersion.RangeStmt_1133.BlockStmt.rootDir
TestWriteModuleVersion.RangeStmt_1133.BlockStmt.got
TestWriteModuleVersion.RangeStmt_1133.BlockStmt.RangeStmt_1936.BlockStmt.name
TestWriteModuleVersion.RangeStmt_1133.BlockStmt.RangeStmt_1936.BlockStmt.want
TestWriteModuleVersion.RangeStmt_2633.test
TestWriteModuleVersion.RangeStmt_1133.BlockStmt.RangeStmt_1936.BlockStmt.r
TestWriteModuleVersion.RangeStmt_1133.BlockStmt.RangeStmt_1936.BlockStmt.err
TestWriteModuleVersion.RangeStmt_1133.BlockStmt.RangeStmt_1936.BlockStmt.content
TestWriteModuleVersion.RangeStmt_2633.BlockStmt.fp
TestWriteModuleVersion.tests
TestWriteModuleVersion.RangeStmt_1133.BlockStmt.err
TestWriteModuleVersion.RangeStmt_1133.test
TestWriteModuleVersion.RangeStmt_1133.BlockStmt.RangeStmt_1936.BlockStmt.got
TestWriteModuleVersion.RangeStmt_2633.BlockStmt.list
TestWriteModuleVersion.err
TestWriteModuleVersion.RangeStmt_2633.BlockStmt.err
TestWriteModuleVersion.lists
TestWriteModuleVersion
TestWriteModuleVersion.dir
TestWriteModuleVersion.RangeStmt_1133.BlockStmt.zr
TestWriteModuleVersion.RangeStmt_1133.BlockStmt.RangeStmt_1936.zf
TestWriteModuleVersion.RangeStmt_1133.BlockStmt.RangeStmt_2400.name
TestWriteModuleVersion.t
TestWriteModuleVersion.RangeStmt_1133.BlockStmt.gomod
TestWriteModuleVersion.RangeStmt_1133.BlockStmt.want
TestWriteModuleVersion.RangeStmt_2633.BlockStmt.got
testing
Members
X