mirror of
https://github.com/dutchcoders/transfer.sh.git
synced 2024-12-05 02:10:18 +01:00
cb6e5cb0c7
* use dep for vendoring * lets encrypt * moved web to transfer.sh-web repo * single command install * added first tests
202 lines
4.8 KiB
Go
202 lines
4.8 KiB
Go
// Copyright 2013 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 or at
|
|
// https://developers.google.com/open-source/licenses/bsd.
|
|
|
|
package database
|
|
|
|
import (
|
|
"reflect"
|
|
"sort"
|
|
"testing"
|
|
|
|
"github.com/golang/gddo/doc"
|
|
)
|
|
|
|
var indexTests = []struct {
|
|
pdoc *doc.Package
|
|
terms []string
|
|
}{
|
|
{&doc.Package{
|
|
ImportPath: "strconv",
|
|
ProjectRoot: "",
|
|
ProjectName: "Go",
|
|
Name: "strconv",
|
|
Synopsis: "Package strconv implements conversions to and from string representations of basic data types.",
|
|
Doc: "Package strconv implements conversions to and from string representations\nof basic data types.",
|
|
Imports: []string{"errors", "math", "unicode/utf8"},
|
|
Funcs: []*doc.Func{{}},
|
|
},
|
|
[]string{
|
|
"bas",
|
|
"convert",
|
|
"dat",
|
|
"import:errors",
|
|
"import:math",
|
|
"import:unicode/utf8",
|
|
"project:go",
|
|
"repres",
|
|
"strconv",
|
|
"string",
|
|
"typ"},
|
|
},
|
|
{&doc.Package{
|
|
ImportPath: "github.com/user/repo/dir",
|
|
ProjectRoot: "github.com/user/repo",
|
|
ProjectName: "go-oauth",
|
|
ProjectURL: "https://github.com/user/repo/",
|
|
Name: "dir",
|
|
Synopsis: "Package dir implements a subset of the OAuth client interface as defined in RFC 5849.",
|
|
Doc: "Package oauth implements a subset of the OAuth client interface as defined in RFC 5849.\n\n" +
|
|
"This package assumes that the application writes request URL paths to the\nnetwork using " +
|
|
"the encoding implemented by the net/url URL RequestURI method.\n" +
|
|
"The HTTP client in the standard net/http package uses this encoding.",
|
|
IsCmd: false,
|
|
Imports: []string{
|
|
"bytes",
|
|
"crypto/hmac",
|
|
"crypto/sha1",
|
|
"encoding/base64",
|
|
"encoding/binary",
|
|
"errors",
|
|
"fmt",
|
|
"io",
|
|
"io/ioutil",
|
|
"net/http",
|
|
"net/url",
|
|
"regexp",
|
|
"sort",
|
|
"strconv",
|
|
"strings",
|
|
"sync",
|
|
"time",
|
|
},
|
|
TestImports: []string{"bytes", "net/url", "testing"},
|
|
Funcs: []*doc.Func{{}},
|
|
},
|
|
[]string{
|
|
"all:",
|
|
"5849", "cly", "defin", "dir", "github.com", "go",
|
|
"import:bytes", "import:crypto/hmac", "import:crypto/sha1",
|
|
"import:encoding/base64", "import:encoding/binary", "import:errors",
|
|
"import:fmt", "import:io", "import:io/ioutil", "import:net/http",
|
|
"import:net/url", "import:regexp", "import:sort", "import:strconv",
|
|
"import:strings", "import:sync", "import:time", "interfac",
|
|
"oau", "project:github.com/user/repo", "repo", "rfc", "subset", "us",
|
|
},
|
|
},
|
|
}
|
|
|
|
func TestDocTerms(t *testing.T) {
|
|
for _, tt := range indexTests {
|
|
score := documentScore(tt.pdoc)
|
|
terms := documentTerms(tt.pdoc, score)
|
|
sort.Strings(terms)
|
|
sort.Strings(tt.terms)
|
|
if !reflect.DeepEqual(terms, tt.terms) {
|
|
t.Errorf("documentTerms(%s) ->\n got: %#v\nwant: %#v", tt.pdoc.ImportPath, terms, tt.terms)
|
|
}
|
|
}
|
|
}
|
|
|
|
var vendorPatTests = []struct {
|
|
path string
|
|
match bool
|
|
}{
|
|
{"camlistore.org/third_party/github.com/user/repo", true},
|
|
{"camlistore.org/third_party/dir", false},
|
|
{"camlistore.org/third_party", false},
|
|
{"camlistore.org/xthird_party/github.com/user/repo", false},
|
|
{"camlistore.org/third_partyx/github.com/user/repo", false},
|
|
|
|
{"example.org/_third_party/github.com/user/repo/dir", true},
|
|
{"example.org/_third_party/dir", false},
|
|
|
|
{"github.com/user/repo/Godeps/_workspace/src/github.com/user/repo", true},
|
|
{"github.com/user/repo/Godeps/_workspace/src/dir", false},
|
|
|
|
{"github.com/user/repo", false},
|
|
}
|
|
|
|
func TestVendorPat(t *testing.T) {
|
|
for _, tt := range vendorPatTests {
|
|
match := vendorPat.MatchString(tt.path)
|
|
if match != tt.match {
|
|
t.Errorf("match(%q) = %v, want %v", tt.path, match, match)
|
|
}
|
|
}
|
|
}
|
|
|
|
var synopsisTermTests = []struct {
|
|
synopsis string
|
|
terms []string
|
|
}{
|
|
{
|
|
"Package foo implements bar.",
|
|
[]string{"bar", "foo"},
|
|
},
|
|
{
|
|
"Package foo provides bar.",
|
|
[]string{"bar", "foo"},
|
|
},
|
|
{
|
|
"The foo package provides bar.",
|
|
[]string{"bar", "foo"},
|
|
},
|
|
{
|
|
"Package foo contains an implementation of bar.",
|
|
[]string{"bar", "foo", "impl"},
|
|
},
|
|
{
|
|
"Package foo is awesome",
|
|
[]string{"awesom", "foo"},
|
|
},
|
|
{
|
|
"The foo package is awesome",
|
|
[]string{"awesom", "foo"},
|
|
},
|
|
{
|
|
"The foo command is awesome",
|
|
[]string{"awesom", "foo"},
|
|
},
|
|
{
|
|
"Command foo is awesome",
|
|
[]string{"awesom", "foo"},
|
|
},
|
|
{
|
|
"The foo package",
|
|
[]string{"foo"},
|
|
},
|
|
{
|
|
"Package foo",
|
|
[]string{"foo"},
|
|
},
|
|
{
|
|
"Command foo",
|
|
[]string{"foo"},
|
|
},
|
|
{
|
|
"Package",
|
|
[]string{},
|
|
},
|
|
{
|
|
"Command",
|
|
[]string{},
|
|
},
|
|
}
|
|
|
|
func TestSynopsisTerms(t *testing.T) {
|
|
for _, tt := range synopsisTermTests {
|
|
terms := make(map[string]bool)
|
|
collectSynopsisTerms(terms, tt.synopsis)
|
|
|
|
actual := termSlice(terms)
|
|
expected := tt.terms
|
|
sort.Strings(actual)
|
|
sort.Strings(expected)
|
|
if !reflect.DeepEqual(actual, expected) {
|
|
t.Errorf("%q ->\n got: %#v\nwant: %#v", tt.synopsis, actual, expected)
|
|
}
|
|
}
|
|
}
|