Skip to content

Commit

Permalink
cmd/snap, tests: add some snap download tests
Browse files Browse the repository at this point in the history
from the unit tests,

    // these only cover errors that happen before hitting the network,
    // because we're not (yet!) mocking the tooling store

so it checks for bad combinations (multiple channels,
revision+channel, revision+cohort).

and in spread tests, check for the 'invalid cohort key' error.
  • Loading branch information
chipaca committed Apr 25, 2019
1 parent f381f8e commit 61b3fa0
Show file tree
Hide file tree
Showing 3 changed files with 61 additions and 2 deletions.
53 changes: 53 additions & 0 deletions cmd/snap/cmd_download_test.go
Original file line number Diff line number Diff line change
@@ -0,0 +1,53 @@
// -*- Mode: Go; indent-tabs-mode: t -*-

/*
* Copyright (C) 2019 Canonical Ltd
*
* This program is free software: you can redistribute it and/or modify
* it under the terms of the GNU General Public License version 3 as
* published by the Free Software Foundation.
*
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU General Public License for more details.
*
* You should have received a copy of the GNU General Public License
* along with this program. If not, see <http://www.gnu.org/licenses/>.
*
*/

package main_test

import (
"gopkg.in/check.v1"

snap "github.com/snapcore/snapd/cmd/snap"
)

// these only cover errors that happen before hitting the network,
// because we're not (yet!) mocking the tooling store

func (s *SnapSuite) TestDownloadBadChannelCombo(c *check.C) {
_, err := snap.Parser(snap.Client()).ParseArgs([]string{
"download", "--beta", "--channel=foo", "a-snap",
})

c.Check(err, check.ErrorMatches, "Please specify a single channel")
}

func (s *SnapSuite) TestDownloadCohortAndRevision(c *check.C) {
_, err := snap.Parser(snap.Client()).ParseArgs([]string{
"download", "--cohort=what", "--revision=1234", "a-snap",
})

c.Check(err, check.ErrorMatches, "cannot specify both cohort and revision")
}

func (s *SnapSuite) TestDownloadChannelAndRevision(c *check.C) {
_, err := snap.Parser(snap.Client()).ParseArgs([]string{
"download", "--beta", "--revision=1234", "a-snap",
})

c.Check(err, check.ErrorMatches, "cannot specify both channel and revision")
}
4 changes: 2 additions & 2 deletions cmd/snap/cmd_run_test.go
Original file line number Diff line number Diff line change
Expand Up @@ -52,13 +52,13 @@ hooks:

type RunSuite struct {
fakeHome string
SnapSuite
BaseSnapSuite
}

var _ = check.Suite(&RunSuite{})

func (s *RunSuite) SetUpTest(c *check.C) {
s.SnapSuite.SetUpTest(c)
s.BaseSnapSuite.SetUpTest(c)
s.fakeHome = c.MkDir()

u, err := user.Current()
Expand Down
6 changes: 6 additions & 0 deletions tests/main/snap-download/task.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -39,3 +39,9 @@ execute: |
snap download --cohort="MSBlRmU4QlRSNUw1VjlGN3lIZU1BUHhrRXIyTmRVWE10dyAxNTU1NTE0MzA5IDg3ZmUwMjhkZDFjMTQ1MDY5N2QyZjdiMGZkMzgzODk0NjMzMmFhOTZmZmFjZmFlNmU2MGQyOTNjYzE1OTE3NWY=" test-snapd-tools
ls test-snapd-tools_*.snap
verify_asserts test-snapd-tools_*.assert
rm -v test-snapd-tools*
echo "Can't ask for invalid cohort"
! snap download --cohort="what" test-snapd-tools 2>out
MATCH 'cannot download snap.*: Invalid cohort key' < out

0 comments on commit 61b3fa0

Please sign in to comment.