diff options
| author | Michael Vogt <mvo@ubuntu.com> | 2016-03-21 11:02:09 +0100 |
|---|---|---|
| committer | Michael Vogt <mvo@ubuntu.com> | 2016-03-21 11:02:09 +0100 |
| commit | bc20396ac7eb961af117c72e4d39d6c24f9bafb5 (patch) | |
| tree | 785099c71ea13d5e1d58bbab58e64f01e73ad8e4 | |
| parent | 151560ecbb43e30ab595f96ad0dc14c83b260ae3 (diff) | |
try to be more DRYsnap-yaml
| -rw-r--r-- | snap/info_snap_yaml.go | 16 | ||||
| -rw-r--r-- | snap/info_snap_yaml_test.go | 142 |
2 files changed, 73 insertions, 85 deletions
diff --git a/snap/info_snap_yaml.go b/snap/info_snap_yaml.go index 55e6925ae6..15bc0802bf 100644 --- a/snap/info_snap_yaml.go +++ b/snap/info_snap_yaml.go @@ -89,7 +89,9 @@ func InfoFromSnapYaml(yamlData []byte) (*Info, error) { Interface: iface, Attrs: attrs, Label: label, - Apps: make(map[string]*AppInfo), + } + if len(y.Apps) > 0 { + snap.Plugs[name].Apps = make(map[string]*AppInfo) } } // Collect top-level definitions of slots @@ -104,7 +106,9 @@ func InfoFromSnapYaml(yamlData []byte) (*Info, error) { Interface: iface, Attrs: attrs, Label: label, - Apps: make(map[string]*AppInfo), + } + if len(y.Apps) > 0 { + snap.Slots[name].Apps = make(map[string]*AppInfo) } } for appName, yApp := range y.Apps { @@ -113,8 +117,12 @@ func InfoFromSnapYaml(yamlData []byte) (*Info, error) { Snap: snap, Name: appName, Command: yApp.Command, - Plugs: make(map[string]*PlugInfo), - Slots: make(map[string]*SlotInfo), + } + if len(y.Plugs) > 0 || len(yApp.PlugNames) > 0 { + app.Plugs = make(map[string]*PlugInfo) + } + if len(y.Slots) > 0 || len(yApp.SlotNames) > 0 { + app.Slots = make(map[string]*SlotInfo) } snap.Apps[appName] = app // Bind all plugs/slots listed in this app diff --git a/snap/info_snap_yaml_test.go b/snap/info_snap_yaml_test.go index ed577b78c3..22c9c53d01 100644 --- a/snap/info_snap_yaml_test.go +++ b/snap/info_snap_yaml_test.go @@ -83,15 +83,11 @@ plugs: c.Check(info.Name, Equals, "snap") c.Check(info.Plugs, HasLen, 1) c.Check(info.Slots, HasLen, 0) - plug := info.Plugs["network-client"] - - c.Assert(plug, Not(IsNil)) - c.Check(plug.Snap, Equals, info) - c.Check(plug.Name, Equals, "network-client") - c.Check(plug.Interface, Equals, "network-client") - c.Check(plug.Attrs, HasLen, 0) - c.Check(plug.Label, Equals, "") - c.Check(plug.Apps, HasLen, 0) + c.Assert(info.Plugs["network-client"], DeepEquals, &snap.PlugInfo{ + Snap: info, + Name: "network-client", + Interface: "network-client", + }) } func (s *YamlSuite) TestUnmarshalStandaloneAbbreviatedPlug(c *C) { @@ -105,15 +101,11 @@ plugs: c.Check(info.Name, Equals, "snap") c.Check(info.Plugs, HasLen, 1) c.Check(info.Slots, HasLen, 0) - plug := info.Plugs["net"] - - c.Assert(plug, Not(IsNil)) - c.Check(plug.Snap, Equals, info) - c.Check(plug.Name, Equals, "net") - c.Check(plug.Interface, Equals, "network-client") - c.Check(plug.Attrs, HasLen, 0) - c.Check(plug.Label, Equals, "") - c.Check(plug.Apps, HasLen, 0) + c.Assert(info.Plugs["net"], DeepEquals, &snap.PlugInfo{ + Snap: info, + Name: "net", + Interface: "network-client", + }) } func (s *YamlSuite) TestUnmarshalStandaloneMinimalisticPlug(c *C) { @@ -128,15 +120,11 @@ plugs: c.Check(info.Name, Equals, "snap") c.Check(info.Plugs, HasLen, 1) c.Check(info.Slots, HasLen, 0) - plug := info.Plugs["net"] - - c.Assert(plug, Not(IsNil)) - c.Check(plug.Snap, Equals, info) - c.Check(plug.Name, Equals, "net") - c.Check(plug.Interface, Equals, "network-client") - c.Check(plug.Attrs, HasLen, 0) - c.Check(plug.Label, Equals, "") - c.Check(plug.Apps, HasLen, 0) + c.Assert(info.Plugs["net"], DeepEquals, &snap.PlugInfo{ + Snap: info, + Name: "net", + Interface: "network-client", + }) } func (s *YamlSuite) TestUnmarshalStandaloneCompletePlug(c *C) { @@ -152,15 +140,12 @@ plugs: c.Check(info.Name, Equals, "snap") c.Check(info.Plugs, HasLen, 1) c.Check(info.Slots, HasLen, 0) - plug := info.Plugs["net"] - - c.Assert(plug, Not(IsNil)) - c.Check(plug.Snap, Equals, info) - c.Check(plug.Name, Equals, "net") - c.Check(plug.Interface, Equals, "network-client") - c.Check(plug.Attrs, DeepEquals, map[string]interface{}{"ipv6-aware": true}) - c.Check(plug.Label, Equals, "") - c.Check(plug.Apps, HasLen, 0) + c.Assert(info.Plugs["net"], DeepEquals, &snap.PlugInfo{ + Snap: info, + Name: "net", + Interface: "network-client", + Attrs: map[string]interface{}{"ipv6-aware": true}, + }) } func (s *YamlSuite) TestUnmarshalLastPlugDefinitionWins(c *C) { @@ -179,15 +164,12 @@ plugs: c.Check(info.Name, Equals, "snap") c.Check(info.Plugs, HasLen, 1) c.Check(info.Slots, HasLen, 0) - plug := info.Plugs["net"] - - c.Assert(plug, Not(IsNil)) - c.Check(plug.Snap, Equals, info) - c.Check(plug.Name, Equals, "net") - c.Check(plug.Interface, Equals, "network-client") - c.Check(plug.Attrs, DeepEquals, map[string]interface{}{"attr": 2}) - c.Check(plug.Label, Equals, "") - c.Check(plug.Apps, HasLen, 0) + c.Assert(info.Plugs["net"], DeepEquals, &snap.PlugInfo{ + Snap: info, + Name: "net", + Interface: "network-client", + Attrs: map[string]interface{}{"attr": 2}, + }) } func (s *YamlSuite) TestUnmarshalPlugsExplicitlyDefinedImplicitlyBoundToApps(c *C) { @@ -204,20 +186,20 @@ apps: c.Check(info.Plugs, HasLen, 1) c.Check(info.Slots, HasLen, 0) c.Check(info.Apps, HasLen, 1) + plug := info.Plugs["network-client"] app := info.Apps["app"] - - c.Assert(plug, Not(IsNil)) - c.Check(plug.Snap, Equals, info) - c.Check(plug.Name, Equals, "network-client") - c.Check(plug.Interface, Equals, "network-client") - c.Check(plug.Attrs, HasLen, 0) - c.Check(plug.Label, Equals, "") - c.Check(plug.Apps, DeepEquals, map[string]*snap.AppInfo{app.Name: app}) - - c.Assert(app, Not(IsNil)) - c.Check(app.Plugs, DeepEquals, map[string]*snap.PlugInfo{plug.Name: plug}) - c.Check(app.Slots, HasLen, 0) + c.Assert(plug, DeepEquals, &snap.PlugInfo{ + Snap: info, + Name: "network-client", + Interface: "network-client", + Apps: map[string]*snap.AppInfo{app.Name: app}, + }) + c.Assert(app, DeepEquals, &snap.AppInfo{ + Snap: info, + Name: "app", + Plugs: map[string]*snap.PlugInfo{plug.Name: plug}, + }) } func (s *YamlSuite) TestUnmarshalPlugsExplicitlyDefinedExplicitlyBoundToApps(c *C) { @@ -237,18 +219,17 @@ apps: c.Check(info.Apps, HasLen, 1) plug := info.Plugs["net"] app := info.Apps["app"] - - c.Assert(plug, Not(IsNil)) - c.Check(plug.Snap, Equals, info) - c.Check(plug.Name, Equals, "net") - c.Check(plug.Interface, Equals, "network-client") - c.Check(plug.Attrs, HasLen, 0) - c.Check(plug.Label, Equals, "") - c.Check(plug.Apps, DeepEquals, map[string]*snap.AppInfo{app.Name: app}) - - c.Assert(app, Not(IsNil)) - c.Check(app.Plugs, DeepEquals, map[string]*snap.PlugInfo{plug.Name: plug}) - c.Check(app.Slots, HasLen, 0) + c.Assert(plug, DeepEquals, &snap.PlugInfo{ + Snap: info, + Name: "net", + Interface: "network-client", + Apps: map[string]*snap.AppInfo{app.Name: app}, + }) + c.Assert(app, DeepEquals, &snap.AppInfo{ + Snap: info, + Name: "app", + Plugs: map[string]*snap.PlugInfo{plug.Name: plug}, + }) } func (s *YamlSuite) TestUnmarshalPlugsImplicitlyDefinedExplicitlyBoundToApps(c *C) { @@ -266,18 +247,17 @@ apps: c.Check(info.Apps, HasLen, 1) plug := info.Plugs["network-client"] app := info.Apps["app"] - - c.Assert(plug, Not(IsNil)) - c.Check(plug.Snap, Equals, info) - c.Check(plug.Name, Equals, "network-client") - c.Check(plug.Interface, Equals, "network-client") - c.Check(plug.Attrs, HasLen, 0) - c.Check(plug.Label, Equals, "") - c.Check(plug.Apps, DeepEquals, map[string]*snap.AppInfo{app.Name: app}) - - c.Assert(app, Not(IsNil)) - c.Check(app.Plugs, DeepEquals, map[string]*snap.PlugInfo{plug.Name: plug}) - c.Check(app.Slots, HasLen, 0) + c.Assert(plug, DeepEquals, &snap.PlugInfo{ + Snap: info, + Name: "network-client", + Interface: "network-client", + Apps: map[string]*snap.AppInfo{app.Name: app}, + }) + c.Assert(app, DeepEquals, &snap.AppInfo{ + Snap: info, + Name: "app", + Plugs: map[string]*snap.PlugInfo{plug.Name: plug}, + }) } func (s *YamlSuite) TestUnmarshalPlugWithoutInterfaceName(c *C) { |
