blob: 81edcd0b615db110e07b20012882a6e3d3348996 [file] [log] [blame]
package cfg
import (
"sort"
"strings"
"testing"
)
func TestSortLocks(t *testing.T) {
c, err := ConfigFromYaml([]byte(yml))
if err != nil {
t.Error("ConfigFromYaml failed to parse yaml for TestSortDependencies")
}
ls := make(Locks, len(c.Imports))
for i := 0; i < len(c.Imports); i++ {
ls[i] = &Lock{
Name: c.Imports[i].Name,
Version: c.Imports[i].Reference,
}
}
if ls[2].Name != "github.com/Masterminds/structable" {
t.Error("Initial dependencies are out of order prior to sort")
}
sort.Sort(ls)
if ls[0].Name != "github.com/kylelemons/go-gypsy" ||
ls[1].Name != "github.com/Masterminds/convert" ||
ls[2].Name != "github.com/Masterminds/cookoo" ||
ls[3].Name != "github.com/Masterminds/structable" {
t.Error("Sorting of dependencies failed")
}
}
const inputSubpkgYaml = `
imports:
- name: github.com/gogo/protobuf
version: 82d16f734d6d871204a3feb1a73cb220cc92574c
subpackages:
- plugin/equal
- sortkeys
- plugin/face
- plugin/gostring
- vanity
- plugin/grpc
- plugin/marshalto
- plugin/populate
- plugin/oneofcheck
- plugin/size
- plugin/stringer
- plugin/defaultcheck
- plugin/embedcheck
- plugin/description
- plugin/enumstringer
- gogoproto
- plugin/testgen
- plugin/union
- plugin/unmarshal
- protoc-gen-gogo/generator
- protoc-gen-gogo/plugin
- vanity/command
- protoc-gen-gogo/descriptor
- proto
`
const expectSubpkgYaml = `
imports:
- name: github.com/gogo/protobuf
version: 82d16f734d6d871204a3feb1a73cb220cc92574c
subpackages:
- gogoproto
- plugin/defaultcheck
- plugin/description
- plugin/embedcheck
- plugin/enumstringer
- plugin/equal
- plugin/face
- plugin/gostring
- plugin/grpc
- plugin/marshalto
- plugin/oneofcheck
- plugin/populate
- plugin/size
- plugin/stringer
- plugin/testgen
- plugin/union
- plugin/unmarshal
- proto
- protoc-gen-gogo/descriptor
- protoc-gen-gogo/generator
- protoc-gen-gogo/plugin
- sortkeys
- vanity
- vanity/command
`
func TestSortSubpackages(t *testing.T) {
lf, err := LockfileFromYaml([]byte(inputSubpkgYaml))
if err != nil {
t.Fatal(err)
}
out, err := lf.Marshal()
if err != nil {
t.Fatal(err)
}
if !strings.Contains(string(out), expectSubpkgYaml) {
t.Errorf("Expected %q\nto contain\n%q")
}
}