summaryrefslogtreecommitdiffstats
path: root/src/cmd/go/internal/modconv/modconv_test.go
diff options
context:
space:
mode:
Diffstat (limited to 'src/cmd/go/internal/modconv/modconv_test.go')
-rw-r--r--src/cmd/go/internal/modconv/modconv_test.go69
1 files changed, 69 insertions, 0 deletions
diff --git a/src/cmd/go/internal/modconv/modconv_test.go b/src/cmd/go/internal/modconv/modconv_test.go
new file mode 100644
index 0000000..750525d
--- /dev/null
+++ b/src/cmd/go/internal/modconv/modconv_test.go
@@ -0,0 +1,69 @@
+// Copyright 2018 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 modconv
+
+import (
+ "bytes"
+ "fmt"
+ "os"
+ "path/filepath"
+ "testing"
+)
+
+var extMap = map[string]string{
+ ".dep": "Gopkg.lock",
+ ".glide": "glide.lock",
+ ".glock": "GLOCKFILE",
+ ".godeps": "Godeps/Godeps.json",
+ ".tsv": "dependencies.tsv",
+ ".vconf": "vendor.conf",
+ ".vjson": "vendor/vendor.json",
+ ".vyml": "vendor.yml",
+ ".vmanifest": "vendor/manifest",
+}
+
+func Test(t *testing.T) {
+ tests, _ := filepath.Glob("testdata/*")
+ if len(tests) == 0 {
+ t.Fatalf("no tests found")
+ }
+ for _, test := range tests {
+ file := filepath.Base(test)
+ ext := filepath.Ext(file)
+ if ext == ".out" {
+ continue
+ }
+ t.Run(file, func(t *testing.T) {
+ if extMap[ext] == "" {
+ t.Fatal("unknown extension")
+ }
+ if Converters[extMap[ext]] == nil {
+ t.Fatalf("Converters[%q] == nil", extMap[ext])
+ }
+ data, err := os.ReadFile(test)
+ if err != nil {
+ t.Fatal(err)
+ }
+ out, err := Converters[extMap[ext]](test, data)
+ if err != nil {
+ t.Fatal(err)
+ }
+ want, err := os.ReadFile(test[:len(test)-len(ext)] + ".out")
+ if err != nil {
+ t.Error(err)
+ }
+ var buf bytes.Buffer
+ for _, r := range out.Require {
+ fmt.Fprintf(&buf, "%s %s\n", r.Mod.Path, r.Mod.Version)
+ }
+ for _, r := range out.Replace {
+ fmt.Fprintf(&buf, "replace: %s %s %s %s\n", r.Old.Path, r.Old.Version, r.New.Path, r.New.Version)
+ }
+ if !bytes.Equal(buf.Bytes(), want) {
+ t.Errorf("have:\n%s\nwant:\n%s", buf.Bytes(), want)
+ }
+ })
+ }
+}