blob: 03ba08e22df50c9c5b313b94209691938af19a24 [file] [log] [blame]
package cfg
import (
"testing"
"gopkg.in/yaml.v2"
)
var yml = `
package: fake/testing
import:
- package: github.com/kylelemons/go-gypsy
subpackages:
- yaml
# Intentionally left spaces at end of next line.
- package: github.com/Masterminds/convert
repo: git@github.com:Masterminds/convert.git
vcs: git
ref: a9949121a2e2192ca92fa6dddfeaaa4a4412d955
subpackages:
- color
- nautical
- radial
os:
- linux
arch:
- i386
- arm
- package: github.com/Masterminds/structable
- package: github.com/Masterminds/cookoo/color
- package: github.com/Masterminds/cookoo/convert
devimport:
- package: github.com/kylelemons/go-gypsy
`
func TestManualConfigFromYaml(t *testing.T) {
cfg := &Config{}
err := yaml.Unmarshal([]byte(yml), &cfg)
if err != nil {
t.Errorf("Unable to Unmarshal config yaml")
}
if cfg.Name != "fake/testing" {
t.Errorf("Inaccurate name found %s", cfg.Name)
}
found := false
found2 := false
for _, i := range cfg.Imports {
if i.Name == "github.com/Masterminds/convert" {
found = true
ref := "a9949121a2e2192ca92fa6dddfeaaa4a4412d955"
if i.Reference != ref {
t.Errorf("Config reference for cookoo is inaccurate. Expected '%s' found '%s'", ref, i.Reference)
}
}
if i.Name == "github.com/Masterminds/cookoo" {
found2 = true
if i.Subpackages[0] != "color" {
t.Error("Dependency separating package and subpackage not working")
}
}
}
if !found {
t.Error("Unable to find github.com/Masterminds/convert")
}
if !found2 {
t.Error("Unable to find github.com/Masterminds/cookoo")
}
}
func TestClone(t *testing.T) {
cfg := &Config{}
err := yaml.Unmarshal([]byte(yml), &cfg)
if err != nil {
t.Errorf("Unable to Unmarshal config yaml")
}
cfg2 := cfg.Clone()
if cfg2.Name != "fake/testing" {
t.Error("Config cloning failed")
}
cfg.Name = "foo"
if cfg.Name == cfg2.Name {
t.Error("Cloning Config name failed")
}
}
func TestConfigFromYaml(t *testing.T) {
c, err := ConfigFromYaml([]byte(yml))
if err != nil {
t.Error("ConfigFromYaml failed to parse yaml")
}
if c.Name != "fake/testing" {
t.Error("ConfigFromYaml failed to properly parse yaml")
}
}
func TestHasDependency(t *testing.T) {
c, err := ConfigFromYaml([]byte(yml))
if err != nil {
t.Error("ConfigFromYaml failed to parse yaml for HasDependency")
}
if c.HasDependency("github.com/Masterminds/convert") != true {
t.Error("HasDependency failing to pickup depenency")
}
if c.HasDependency("foo/bar/bar") != false {
t.Error("HasDependency picking up dependency it shouldn't")
}
}