summaryrefslogtreecommitdiff
diff options
authorMichael Vogt <mvo@ubuntu.com>2016-03-21 11:02:09 +0100
committerMichael Vogt <mvo@ubuntu.com>2016-03-21 11:02:09 +0100
commitbc20396ac7eb961af117c72e4d39d6c24f9bafb5 (patch)
tree785099c71ea13d5e1d58bbab58e64f01e73ad8e4
parent151560ecbb43e30ab595f96ad0dc14c83b260ae3 (diff)
try to be more DRYsnap-yaml
-rw-r--r--snap/info_snap_yaml.go16
-rw-r--r--snap/info_snap_yaml_test.go142
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) {