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