Skip to content

Commit

Permalink
Fix tests by creating a .snap file for mock snaps
Browse files Browse the repository at this point in the history
  • Loading branch information
robert-ancell committed Oct 21, 2016
1 parent 74be402 commit f42af86
Show file tree
Hide file tree
Showing 21 changed files with 115 additions and 89 deletions.
2 changes: 1 addition & 1 deletion boot/kernel_os_test.go
Original file line number Diff line number Diff line change
Expand Up @@ -152,7 +152,7 @@ func (s *kernelOSSuite) TestSetNextBootOnClassic(c *C) {
defer restore()

// Create a fake OS snap that we try to update
snapInfo := snaptest.MockSnap(c, "name: os\ntype: os", &snap.SideInfo{Revision: snap.R(42)})
snapInfo := snaptest.MockSnap(c, "name: os\ntype: os", "SNAP", &snap.SideInfo{Revision: snap.R(42)})
err := boot.SetNextBoot(snapInfo)
c.Assert(err, IsNil)

Expand Down
14 changes: 8 additions & 6 deletions cmd/snap-exec/main_test.go
Original file line number Diff line number Diff line change
Expand Up @@ -73,6 +73,8 @@ hooks:
configure:
`)

var mockContents = ""

var binaryTemplate = `#!/bin/sh
echo "$(basename $0)" >> %[1]q
for arg in "$@"; do
Expand Down Expand Up @@ -128,7 +130,7 @@ func (s *snapExecSuite) TestFindCommandNoCommand(c *C) {

func (s *snapExecSuite) TestSnapExecAppIntegration(c *C) {
dirs.SetRootDir(c.MkDir())
snaptest.MockSnap(c, string(mockYaml), &snap.SideInfo{
snaptest.MockSnap(c, string(mockYaml), string(mockContents), &snap.SideInfo{
Revision: snap.R("42"),
})

Expand All @@ -152,7 +154,7 @@ func (s *snapExecSuite) TestSnapExecAppIntegration(c *C) {

func (s *snapExecSuite) TestSnapExecHookIntegration(c *C) {
dirs.SetRootDir(c.MkDir())
snaptest.MockSnap(c, string(mockHookYaml), &snap.SideInfo{
snaptest.MockSnap(c, string(mockHookYaml), string(mockContents), &snap.SideInfo{
Revision: snap.R("42"),
})

Expand All @@ -173,7 +175,7 @@ func (s *snapExecSuite) TestSnapExecHookIntegration(c *C) {

func (s *snapExecSuite) TestSnapExecHookMissingHookIntegration(c *C) {
dirs.SetRootDir(c.MkDir())
snaptest.MockSnap(c, string(mockHookYaml), &snap.SideInfo{
snaptest.MockSnap(c, string(mockHookYaml), string(mockContents), &snap.SideInfo{
Revision: snap.R("42"),
})

Expand Down Expand Up @@ -210,7 +212,7 @@ func (s *snapExecSuite) TestSnapExecAppRealIntegration(c *C) {
os.Setenv("SNAP_REVISION", "42")
defer os.Unsetenv("SNAP_REVISION")

snaptest.MockSnap(c, string(mockYaml), &snap.SideInfo{
snaptest.MockSnap(c, string(mockYaml), string(mockContents), &snap.SideInfo{
Revision: snap.R("42"),
})

Expand Down Expand Up @@ -251,7 +253,7 @@ func (s *snapExecSuite) TestSnapExecHookRealIntegration(c *C) {

canaryFile := filepath.Join(c.MkDir(), "canary.txt")

testSnap := snaptest.MockSnap(c, string(mockHookYaml), &snap.SideInfo{
testSnap := snaptest.MockSnap(c, string(mockHookYaml), string(mockContents), &snap.SideInfo{
Revision: snap.R("42"),
})
hookPath := filepath.Join("meta", "hooks", "configure")
Expand Down Expand Up @@ -286,7 +288,7 @@ func actuallyExec(argv0 string, argv []string, env []string) error {

func (s *snapExecSuite) TestSnapExecShellIntegration(c *C) {
dirs.SetRootDir(c.MkDir())
snaptest.MockSnap(c, string(mockYaml), &snap.SideInfo{
snaptest.MockSnap(c, string(mockYaml), string(mockContents), &snap.SideInfo{
Revision: snap.R("42"),
})

Expand Down
19 changes: 10 additions & 9 deletions cmd/snap/cmd_run_test.go
Original file line number Diff line number Diff line change
Expand Up @@ -44,6 +44,7 @@ apps:
hooks:
configure:
`)
var mockContents = "SNAP"

func (s *SnapSuite) TestInvalidParameters(c *check.C) {
invalidParameters := []string{"run", "--hook=configure", "--command=command-name", "snap-name"}
Expand All @@ -68,7 +69,7 @@ func (s *SnapSuite) TestSnapRunAppIntegration(c *check.C) {
dirs.SetRootDir(c.MkDir())
defer func() { dirs.SetRootDir("/") }()

snaptest.MockSnap(c, string(mockYaml), &snap.SideInfo{
snaptest.MockSnap(c, string(mockYaml), string(mockContents), &snap.SideInfo{
Revision: snap.R(42),
})

Expand Down Expand Up @@ -107,7 +108,7 @@ func (s *SnapSuite) TestSnapRunAppWithCommandIntegration(c *check.C) {
dirs.SetRootDir(c.MkDir())
defer func() { dirs.SetRootDir("/") }()

snaptest.MockSnap(c, string(mockYaml), &snap.SideInfo{
snaptest.MockSnap(c, string(mockYaml), string(mockContents), &snap.SideInfo{
Revision: snap.R(42),
})

Expand Down Expand Up @@ -162,7 +163,7 @@ func (s *SnapSuite) TestSnapRunHookIntegration(c *check.C) {
dirs.SetRootDir(c.MkDir())
defer func() { dirs.SetRootDir("/") }()

snaptest.MockSnap(c, string(mockYaml), &snap.SideInfo{
snaptest.MockSnap(c, string(mockYaml), string(mockContents), &snap.SideInfo{
Revision: snap.R(42),
})

Expand Down Expand Up @@ -199,7 +200,7 @@ func (s *SnapSuite) TestSnapRunHookUnsetRevisionIntegration(c *check.C) {
dirs.SetRootDir(c.MkDir())
defer func() { dirs.SetRootDir("/") }()

snaptest.MockSnap(c, string(mockYaml), &snap.SideInfo{
snaptest.MockSnap(c, string(mockYaml), string(mockContents), &snap.SideInfo{
Revision: snap.R(42),
})

Expand Down Expand Up @@ -237,10 +238,10 @@ func (s *SnapSuite) TestSnapRunHookSpecificRevisionIntegration(c *check.C) {
defer func() { dirs.SetRootDir("/") }()

// Create both revisions 41 and 42
snaptest.MockSnap(c, string(mockYaml), &snap.SideInfo{
snaptest.MockSnap(c, string(mockYaml), string(mockContents), &snap.SideInfo{
Revision: snap.R(41),
})
snaptest.MockSnap(c, string(mockYaml), &snap.SideInfo{
snaptest.MockSnap(c, string(mockYaml), string(mockContents), &snap.SideInfo{
Revision: snap.R(42),
})

Expand Down Expand Up @@ -278,7 +279,7 @@ func (s *SnapSuite) TestSnapRunHookMissingRevisionIntegration(c *check.C) {
defer func() { dirs.SetRootDir("/") }()

// Only create revision 42
snaptest.MockSnap(c, string(mockYaml), &snap.SideInfo{
snaptest.MockSnap(c, string(mockYaml), string(mockContents), &snap.SideInfo{
Revision: snap.R(42),
})

Expand Down Expand Up @@ -309,7 +310,7 @@ func (s *SnapSuite) TestSnapRunHookMissingHookIntegration(c *check.C) {
defer func() { dirs.SetRootDir("/") }()

// Only create revision 42
snaptest.MockSnap(c, string(mockYaml), &snap.SideInfo{
snaptest.MockSnap(c, string(mockYaml), string(mockContents), &snap.SideInfo{
Revision: snap.R(42),
})

Expand Down Expand Up @@ -360,7 +361,7 @@ func (s *SnapSuite) TestSnapRunSaneEnvironmentHandling(c *check.C) {
dirs.SetRootDir(c.MkDir())
defer func() { dirs.SetRootDir("/") }()

snaptest.MockSnap(c, string(mockYaml), &snap.SideInfo{
snaptest.MockSnap(c, string(mockYaml), string(mockContents), &snap.SideInfo{
Revision: snap.R(42),
})

Expand Down
7 changes: 4 additions & 3 deletions cmd/snap/cmd_set_test.go
Original file line number Diff line number Diff line change
Expand Up @@ -36,6 +36,7 @@ version: 1.0
hooks:
configure:
`)
var validApplyContents = ""

func (s *SnapSuite) TestInvalidSetParameters(c *check.C) {
invalidParameters := []string{"set", "snap-name", "key", "value"}
Expand All @@ -48,7 +49,7 @@ func (s *SnapSuite) TestSnapSetIntegrationString(c *check.C) {
dirs.SetRootDir(c.MkDir())
defer func() { dirs.SetRootDir("/") }()

snaptest.MockSnap(c, string(validApplyYaml), &snap.SideInfo{
snaptest.MockSnap(c, string(validApplyYaml), string(validApplyContents), &snap.SideInfo{
Revision: snap.R(42),
})

Expand All @@ -65,7 +66,7 @@ func (s *SnapSuite) TestSnapSetIntegrationNumber(c *check.C) {
dirs.SetRootDir(c.MkDir())
defer func() { dirs.SetRootDir("/") }()

snaptest.MockSnap(c, string(validApplyYaml), &snap.SideInfo{
snaptest.MockSnap(c, string(validApplyYaml), string(validApplyContents), &snap.SideInfo{
Revision: snap.R(42),
})

Expand All @@ -82,7 +83,7 @@ func (s *SnapSuite) TestSnapSetIntegrationJson(c *check.C) {
dirs.SetRootDir(c.MkDir())
defer func() { dirs.SetRootDir("/") }()

snaptest.MockSnap(c, string(validApplyYaml), &snap.SideInfo{
snaptest.MockSnap(c, string(validApplyYaml), string(validApplyContents), &snap.SideInfo{
Revision: snap.R(42),
})

Expand Down
2 changes: 1 addition & 1 deletion daemon/api_mock_test.go
Original file line number Diff line number Diff line change
Expand Up @@ -33,7 +33,7 @@ func (s *apiSuite) mockSnap(c *C, yamlText string) *snap.Info {
panic("call s.daemon(c) in your test first")
}

snapInfo := snaptest.MockSnap(c, yamlText, &snap.SideInfo{Revision: snap.R(1)})
snapInfo := snaptest.MockSnap(c, yamlText, "", &snap.SideInfo{Revision: snap.R(1)})
snap.AddImplicitSlots(snapInfo)

st := s.d.overlord.State()
Expand Down
6 changes: 4 additions & 2 deletions daemon/api_test.go
Original file line number Diff line number Diff line change
Expand Up @@ -214,9 +214,10 @@ func (s *apiSuite) mkInstalledInState(c *check.C, daemon *Daemon, name, develope
name: %s
version: %s
%s`, name, version, extraYaml)
contents := ""

// Mock the snap on disk
snapInfo := snaptest.MockSnap(c, yamlText, sideInfo)
snapInfo := snaptest.MockSnap(c, yamlText, contents, sideInfo)

c.Assert(os.MkdirAll(snapInfo.DataDir(), 0755), check.IsNil)
metadir := filepath.Join(snapInfo.MountDir(), "meta")
Expand Down Expand Up @@ -247,7 +248,8 @@ version: 1
type: gadget
gadget: {store: {id: %q}}
`, store)
snaptest.MockSnap(c, yamlText, &snap.SideInfo{Revision: snap.R(1)})
contents := ""
snaptest.MockSnap(c, yamlText, contents, &snap.SideInfo{Revision: snap.R(1)})
c.Assert(os.Symlink("1", filepath.Join(dirs.SnapMountDir, "test", "current")), check.IsNil)
}

Expand Down
14 changes: 7 additions & 7 deletions overlord/devicestate/devicemgr_test.go
Original file line number Diff line number Diff line change
Expand Up @@ -224,12 +224,12 @@ func (s *deviceMgrSuite) mockServer(c *C, reqID string) *httptest.Server {
}))
}

func (s *deviceMgrSuite) setupGadget(c *C, snapYaml string) {
func (s *deviceMgrSuite) setupGadget(c *C, snapYaml string, snapContents string) {
sideInfoGadget := &snap.SideInfo{
RealName: "gadget",
Revision: snap.R(2),
}
snaptest.MockSnap(c, snapYaml, sideInfoGadget)
snaptest.MockSnap(c, snapYaml, snapContents, sideInfoGadget)
snapstate.Set(s.state, "gadget", &snapstate.SnapState{
SnapType: "gadget",
Active: true,
Expand Down Expand Up @@ -261,7 +261,7 @@ func (s *deviceMgrSuite) TestFullDeviceRegistrationHappy(c *C) {
name: gadget
type: gadget
version: gadget
`)
`, "")

auth.SetDevice(s.state, &auth.DeviceState{
Brand: "canonical",
Expand Down Expand Up @@ -331,7 +331,7 @@ func (s *deviceMgrSuite) TestDoRequestSerialIdempotentAfterAddSerial(c *C) {
name: gadget
type: gadget
version: gadget
`)
`, "")

auth.SetDevice(s.state, &auth.DeviceState{
Brand: "canonical",
Expand Down Expand Up @@ -396,7 +396,7 @@ func (s *deviceMgrSuite) TestDoRequestSerialIdempotentAfterGotSerial(c *C) {
name: gadget
type: gadget
version: gadget
`)
`, "")

auth.SetDevice(s.state, &auth.DeviceState{
Brand: "canonical",
Expand Down Expand Up @@ -463,7 +463,7 @@ func (s *deviceMgrSuite) TestFullDeviceRegistrationPollHappy(c *C) {
name: gadget
type: gadget
version: gadget
`)
`, "")

auth.SetDevice(s.state, &auth.DeviceState{
Brand: "canonical",
Expand Down Expand Up @@ -554,7 +554,7 @@ type: gadget
version: gadget
hooks:
prepare-device:
`)
`, "")

auth.SetDevice(s.state, &auth.DeviceState{
Brand: "canonical",
Expand Down
3 changes: 2 additions & 1 deletion overlord/hookstate/hookmgr_test.go
Original file line number Diff line number Diff line change
Expand Up @@ -57,6 +57,7 @@ hooks:
configure:
prepare-device:
`
var snapContents = ""

func (s *hookManagerSuite) SetUpTest(c *C) {
dirs.SetRootDir(c.MkDir())
Expand All @@ -83,7 +84,7 @@ func (s *hookManagerSuite) SetUpTest(c *C) {
s.change.AddTask(s.task)

sideInfo := &snap.SideInfo{RealName: "test-snap", SnapID: "some-snap-id", Revision: snap.R(1)}
snaptest.MockSnap(c, snapYaml, sideInfo)
snaptest.MockSnap(c, snapYaml, snapContents, sideInfo)
snapstate.Set(s.state, "test-snap", &snapstate.SnapState{
Active: true,
Sequence: []*snap.SideInfo{sideInfo},
Expand Down
4 changes: 2 additions & 2 deletions overlord/ifacestate/ifacemgr_test.go
Original file line number Diff line number Diff line change
Expand Up @@ -491,7 +491,7 @@ func (s *interfaceManagerSuite) mockSnap(c *C, yamlText string) *snap.Info {
sideInfo := &snap.SideInfo{
Revision: snap.R(1),
}
snapInfo := snaptest.MockSnap(c, yamlText, sideInfo)
snapInfo := snaptest.MockSnap(c, yamlText, "", sideInfo)
sideInfo.RealName = snapInfo.Name()

a, err := s.db.FindMany(asserts.SnapDeclarationType, map[string]string{
Expand Down Expand Up @@ -520,7 +520,7 @@ func (s *interfaceManagerSuite) mockSnap(c *C, yamlText string) *snap.Info {

func (s *interfaceManagerSuite) mockUpdatedSnap(c *C, yamlText string, revision int) *snap.Info {
sideInfo := &snap.SideInfo{Revision: snap.R(revision)}
snapInfo := snaptest.MockSnap(c, yamlText, sideInfo)
snapInfo := snaptest.MockSnap(c, yamlText, "", sideInfo)
sideInfo.RealName = snapInfo.Name()

s.state.Lock()
Expand Down
Loading

0 comments on commit f42af86

Please sign in to comment.