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