github.com/fibonacci1729/glide@v0.0.0-20160513190140-d9640dc62d0f/cfg/config_test.go (about) 1 package cfg 2 3 import ( 4 "testing" 5 6 "gopkg.in/yaml.v2" 7 ) 8 9 var yml = ` 10 package: fake/testing 11 description: foo bar baz 12 homepage: https://example.com 13 license: MIT 14 owners: 15 - name: foo 16 email: bar@example.com 17 homepage: https://example.com 18 import: 19 - package: github.com/kylelemons/go-gypsy 20 subpackages: 21 - yaml 22 # Intentionally left spaces at end of next line. 23 - package: github.com/Masterminds/convert 24 repo: git@github.com:Masterminds/convert.git 25 vcs: git 26 ref: a9949121a2e2192ca92fa6dddfeaaa4a4412d955 27 subpackages: 28 - color 29 - nautical 30 - radial 31 os: 32 - linux 33 arch: 34 - i386 35 - arm 36 - package: github.com/Masterminds/structable 37 - package: github.com/Masterminds/cookoo/color 38 - package: github.com/Masterminds/cookoo/convert 39 40 devimport: 41 - package: github.com/kylelemons/go-gypsy 42 ` 43 44 func TestManualConfigFromYaml(t *testing.T) { 45 cfg := &Config{} 46 err := yaml.Unmarshal([]byte(yml), &cfg) 47 if err != nil { 48 t.Errorf("Unable to Unmarshal config yaml") 49 } 50 51 if cfg.Name != "fake/testing" { 52 t.Errorf("Inaccurate name found %s", cfg.Name) 53 } 54 55 if cfg.Description != "foo bar baz" { 56 t.Errorf("Inaccurate description found %s", cfg.Description) 57 } 58 59 if cfg.Home != "https://example.com" { 60 t.Errorf("Inaccurate homepage found %s", cfg.Home) 61 } 62 63 if cfg.License != "MIT" { 64 t.Errorf("Inaccurate license found %s", cfg.License) 65 } 66 67 found := false 68 found2 := false 69 for _, i := range cfg.Imports { 70 if i.Name == "github.com/Masterminds/convert" { 71 found = true 72 ref := "a9949121a2e2192ca92fa6dddfeaaa4a4412d955" 73 if i.Reference != ref { 74 t.Errorf("Config reference for cookoo is inaccurate. Expected '%s' found '%s'", ref, i.Reference) 75 } 76 } 77 78 if i.Name == "github.com/Masterminds/cookoo" { 79 found2 = true 80 if i.Subpackages[0] != "color" { 81 t.Error("Dependency separating package and subpackage not working") 82 } 83 } 84 } 85 if !found { 86 t.Error("Unable to find github.com/Masterminds/convert") 87 } 88 if !found2 { 89 t.Error("Unable to find github.com/Masterminds/cookoo") 90 } 91 } 92 93 func TestClone(t *testing.T) { 94 cfg := &Config{} 95 err := yaml.Unmarshal([]byte(yml), &cfg) 96 if err != nil { 97 t.Errorf("Unable to Unmarshal config yaml") 98 } 99 100 cfg2 := cfg.Clone() 101 if cfg2.Name != "fake/testing" { 102 t.Error("Config cloning failed") 103 } 104 if cfg2.License != "MIT" { 105 t.Error("Config cloning failed to copy License") 106 } 107 cfg.Name = "foo" 108 109 if cfg.Name == cfg2.Name { 110 t.Error("Cloning Config name failed") 111 } 112 } 113 114 func TestConfigFromYaml(t *testing.T) { 115 c, err := ConfigFromYaml([]byte(yml)) 116 if err != nil { 117 t.Error("ConfigFromYaml failed to parse yaml") 118 } 119 120 if c.Name != "fake/testing" { 121 t.Error("ConfigFromYaml failed to properly parse yaml") 122 } 123 } 124 125 func TestHasDependency(t *testing.T) { 126 c, err := ConfigFromYaml([]byte(yml)) 127 if err != nil { 128 t.Error("ConfigFromYaml failed to parse yaml for HasDependency") 129 } 130 131 if c.HasDependency("github.com/Masterminds/convert") != true { 132 t.Error("HasDependency failing to pickup depenency") 133 } 134 135 if c.HasDependency("foo/bar/bar") != false { 136 t.Error("HasDependency picking up dependency it shouldn't") 137 } 138 } 139 140 func TestOwners(t *testing.T) { 141 o := new(Owner) 142 o.Name = "foo" 143 o.Email = "foo@example.com" 144 o.Home = "https://foo.example.com" 145 146 o2 := o.Clone() 147 if o2.Name != o.Name || o2.Email != o.Email || o2.Home != o.Home { 148 t.Error("Unable to clone Owner") 149 } 150 151 o.Name = "Bar" 152 if o.Name == o2.Name { 153 t.Error("Owner clone is a pointer instead of a clone") 154 } 155 156 s := make(Owners, 0, 1) 157 s = append(s, o) 158 s2 := s.Clone() 159 o3 := s2[0] 160 161 o3.Name = "Qux" 162 163 if o3.Name == o.Name { 164 t.Error("Owners cloning isn't deep") 165 } 166 167 cfg := &Config{} 168 err := yaml.Unmarshal([]byte(yml), &cfg) 169 if err != nil { 170 t.Errorf("Unable to Unmarshal config yaml") 171 } 172 173 if cfg.Owners[0].Name != "foo" || 174 cfg.Owners[0].Email != "bar@example.com" || 175 cfg.Owners[0].Home != "https://example.com" { 176 t.Error("Unable to parse owners from yaml") 177 } 178 }