github.com/strongmonkey/glide@v0.13.2-0.20171129052818-fb6c62596ce1/cfg/lock_test.go (about) 1 package cfg 2 3 import ( 4 "sort" 5 "strings" 6 "testing" 7 ) 8 9 func TestSortLocks(t *testing.T) { 10 c, err := ConfigFromYaml([]byte(yml)) 11 if err != nil { 12 t.Error("ConfigFromYaml failed to parse yaml for TestSortDependencies") 13 } 14 15 ls := make(Locks, len(c.Imports)) 16 for i := 0; i < len(c.Imports); i++ { 17 ls[i] = &Lock{ 18 Name: c.Imports[i].Name, 19 Version: c.Imports[i].Reference, 20 } 21 } 22 23 if ls[2].Name != "github.com/Masterminds/structable" { 24 t.Error("Initial dependencies are out of order prior to sort") 25 } 26 27 sort.Sort(ls) 28 29 if ls[0].Name != "github.com/kylelemons/go-gypsy" || 30 ls[1].Name != "github.com/Masterminds/convert" || 31 ls[2].Name != "github.com/Masterminds/cookoo" || 32 ls[3].Name != "github.com/Masterminds/structable" { 33 t.Error("Sorting of dependencies failed") 34 } 35 } 36 37 const inputSubpkgYaml = ` 38 imports: 39 - name: github.com/gogo/protobuf 40 version: 82d16f734d6d871204a3feb1a73cb220cc92574c 41 subpackages: 42 - plugin/equal 43 - sortkeys 44 - plugin/face 45 - plugin/gostring 46 - vanity 47 - plugin/grpc 48 - plugin/marshalto 49 - plugin/populate 50 - plugin/oneofcheck 51 - plugin/size 52 - plugin/stringer 53 - plugin/defaultcheck 54 - plugin/embedcheck 55 - plugin/description 56 - plugin/enumstringer 57 - gogoproto 58 - plugin/testgen 59 - plugin/union 60 - plugin/unmarshal 61 - protoc-gen-gogo/generator 62 - protoc-gen-gogo/plugin 63 - vanity/command 64 - protoc-gen-gogo/descriptor 65 - proto 66 ` 67 const expectSubpkgYaml = ` 68 imports: 69 - name: github.com/gogo/protobuf 70 version: 82d16f734d6d871204a3feb1a73cb220cc92574c 71 subpackages: 72 - gogoproto 73 - plugin/defaultcheck 74 - plugin/description 75 - plugin/embedcheck 76 - plugin/enumstringer 77 - plugin/equal 78 - plugin/face 79 - plugin/gostring 80 - plugin/grpc 81 - plugin/marshalto 82 - plugin/oneofcheck 83 - plugin/populate 84 - plugin/size 85 - plugin/stringer 86 - plugin/testgen 87 - plugin/union 88 - plugin/unmarshal 89 - proto 90 - protoc-gen-gogo/descriptor 91 - protoc-gen-gogo/generator 92 - protoc-gen-gogo/plugin 93 - sortkeys 94 - vanity 95 - vanity/command 96 ` 97 98 func TestSortSubpackages(t *testing.T) { 99 lf, err := LockfileFromYaml([]byte(inputSubpkgYaml)) 100 if err != nil { 101 t.Fatal(err) 102 } 103 104 out, err := lf.Marshal() 105 if err != nil { 106 t.Fatal(err) 107 } 108 109 if !strings.Contains(string(out), expectSubpkgYaml) { 110 t.Errorf("Expected %q\n to contain\n%q", string(out), expectSubpkgYaml) 111 } 112 }