blob: ccc4f3d576f6c591ab9db5f1f92a53e566e8bfb9 [file] [log] [blame]
// 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"
"io/ioutil"
"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 := ioutil.ReadFile(test)
if err != nil {
t.Fatal(err)
}
out, err := Converters[extMap[ext]](test, data)
if err != nil {
t.Fatal(err)
}
want, err := ioutil.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)
}
})
}
}