go modconv_test 源码

  • 2022-07-15
  • 浏览 (869)

golang modconv_test 代码

文件路径:/src/cmd/go/internal/modconv/modconv_test.go

// 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)
			}
		})
	}
}

相关信息

go 源码目录

相关文章

go convert 源码

go dep 源码

go glide 源码

go glock 源码

go godeps 源码

go modconv 源码

go tsv 源码

go vconf 源码

go vjson 源码

go vmanifest 源码

0  赞