pkgsite/internal/discovery_test.go

99 строки
2.4 KiB
Go

// Copyright 2019 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 internal
import (
"testing"
"golang.org/x/pkgsite/internal/stdlib"
)
func TestSeriesPathForModule(t *testing.T) {
for _, test := range []struct {
modulePath, wantSeriesPath string
}{
{
modulePath: "github.com/foo",
wantSeriesPath: "github.com/foo",
},
{
modulePath: "github.com/foo/v2",
wantSeriesPath: "github.com/foo",
},
{
modulePath: "std",
wantSeriesPath: "std",
},
{
modulePath: "gopkg.in/russross/blackfriday.v2",
wantSeriesPath: "gopkg.in/russross/blackfriday",
},
} {
t.Run(test.modulePath, func(t *testing.T) {
if got := SeriesPathForModule(test.modulePath); got != test.wantSeriesPath {
t.Errorf("SeriesPathForModule(%q) = %q; want = %q", test.modulePath, got, test.wantSeriesPath)
}
})
}
}
func TestMajorVersionForModule(t *testing.T) {
for _, test := range []struct {
in, want string
}{
{"m.com", ""},
{"m.com/v2", "v2"},
{"gopkg.in/m.v1", "v1"},
{"m.com/v2.1", ""},
{"", ""},
} {
got := MajorVersionForModule(test.in)
if got != test.want {
t.Errorf("%q: got %q, want %q", test.in, got, test.want)
}
}
}
func TestSeriesPathAndMajorVersion(t *testing.T) {
for _, test := range []struct {
in string
wantSeriesPath string
wantVersion int
}{
{"m.com", "m.com", 1},
{"m.com/v123", "m.com", 123},
{"gopkg.in/m.v1", "gopkg.in/m", 1},
{"gopkg.in/m.v35", "gopkg.in/m", 35},
{"m.com/v1.2", "", 0},
} {
gotSeriesPath, gotVersion := SeriesPathAndMajorVersion(test.in)
if gotSeriesPath != test.wantSeriesPath || gotVersion != test.wantVersion {
t.Errorf("SeriesPathAndMajorVersion(%q) = (%s, %d), want (%s, %d)",
test.in, gotSeriesPath, gotVersion, test.wantSeriesPath, test.wantVersion)
}
}
}
func TestV1Path(t *testing.T) {
for _, test := range []struct {
modulePath, suffix string
want string
}{
{"mod.com/foo", "bar", "mod.com/foo/bar"},
{"mod.com/foo/v2", "bar", "mod.com/foo/bar"},
{"std", "bar/baz", "bar/baz"},
} {
p := test.suffix
if test.modulePath != stdlib.ModulePath {
p = test.modulePath + "/" + test.suffix
}
got := V1Path(p, test.modulePath)
if got != test.want {
t.Errorf("V1Path(%q, %q) = %q, want %q",
test.modulePath, p, got, test.want)
}
}
}