vain/vain_test.go

179 lines
2.8 KiB
Go
Raw Normal View History

2016-02-11 11:57:16 -08:00
package vain
2016-02-07 23:54:55 -08:00
import (
"errors"
2016-02-07 23:54:55 -08:00
"fmt"
"testing"
)
func TestString(t *testing.T) {
2016-02-08 00:14:30 -08:00
p := Package{
Vcs: "git",
Path: "mcquay.me/bps",
2016-02-07 23:54:55 -08:00
Repo: "https://s.mcquay.me/sm/bps",
}
got := fmt.Sprintf("%s", p)
want := `<meta name="go-import" content="mcquay.me/bps git https://s.mcquay.me/sm/bps">`
if got != want {
t.Errorf(
"incorrect converstion to meta; got %s, want %s",
got,
want,
)
}
}
func TestSupportedVcsStrings(t *testing.T) {
2016-02-07 23:54:55 -08:00
tests := []struct {
in string
want bool
2016-02-07 23:54:55 -08:00
}{
{"hg", true},
{"git", true},
{"bzr", true},
{"", false},
{"bazar", false},
{"mercurial", false},
2016-02-07 23:54:55 -08:00
}
for _, test := range tests {
if got, want := valid(test.in), test.want; got != want {
t.Errorf("%s: %t is incorrect validity", test.in, got)
2016-02-07 23:54:55 -08:00
}
}
}
func TestValid(t *testing.T) {
tests := []struct {
pkgs []Package
in string
want bool
}{
{
pkgs: []Package{},
in: "bobo",
want: true,
},
{
pkgs: []Package{
{Path: "bobo"},
},
in: "bobo",
want: false,
},
{
pkgs: []Package{
{Path: "a/b/c"},
},
in: "a/b/c",
want: false,
},
{
pkgs: []Package{
{Path: "a/b/c"},
},
in: "a/b",
want: false,
},
{
pkgs: []Package{
{Path: "name/db"},
{Path: "name/lib"},
},
in: "name/foo",
want: true,
},
{
pkgs: []Package{
{Path: "a"},
},
in: "a/b",
want: false,
},
{
pkgs: []Package{
{Path: "foo"},
},
in: "foo/bar",
want: false,
},
{
pkgs: []Package{
{Path: "foo/bar"},
{Path: "foo/baz"},
},
in: "foo",
want: false,
},
{
pkgs: []Package{
{Path: "bilbo"},
{Path: "frodo"},
},
in: "foo/bar/baz",
want: true,
},
{
pkgs: []Package{
{Path: "a/b"},
},
in: "a/bb",
want: true,
},
}
for _, test := range tests {
got := Valid(test.in, test.pkgs)
if got != test.want {
t.Errorf("Incorrect testing of %q against %#v; got %t, want %t", test.in, test.pkgs, got, test.want)
}
}
}
func TestNamespaceParsing(t *testing.T) {
tests := []struct {
input string
want string
err error
}{
{
input: "/sm/foo",
want: "sm",
},
{
input: "/a/b/c/d",
want: "a",
},
{
input: "/dm/bar",
want: "dm",
},
{
input: "/ud",
want: "ud",
},
// test stripping
{
input: "ud",
want: "ud",
},
{
input: "/",
err: errors.New("should find no namespace"),
},
{
input: "",
err: errors.New("should find no namespace"),
},
}
for _, test := range tests {
got, err := parseNamespace(test.input)
if err != nil && test.err == nil {
t.Errorf("unexpected error parsing %q; got %q, want %q, error: %v", test.input, got, test.want, err)
}
if got != test.want {
t.Errorf("parse failure: got %q, want %q", got, test.want)
}
}
}