зеркало из https://github.com/golang/pkgsite.git
99 строки
2.4 KiB
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)
|
|
}
|
|
}
|
|
}
|