mirror of
https://github.com/token2/snapd.git
synced 2026-03-13 11:15:47 -07:00
Many tests currently implicitly rely on reading state from /proc/self/mountinfo through the system-key or other various aspects that care about what's mounted on the system. These tests currently suffer from leaking state from the host system that the unit test is being run on into the test, exposing us to a problem where we may have false positives if these tests are run on systems with the state present and the state was not properly mocked. To alleviate this, we make LoadMountInfo take no arguments and panic if it was not properly mocked during tests. The proper way to mock mountinfo now is to use MockMountInfo(), which is now exported and will do the right thing. This does mean we have to eliminate a test in osutil which was testing about the filename argument to LoadMountInfo which no longer is possible. Signed-off-by: Ian Johnson <ian.johnson@canonical.com>
66 lines
1.9 KiB
Go
66 lines
1.9 KiB
Go
// -*- Mode: Go; indent-tabs-mode: t -*-
|
|
|
|
/*
|
|
* Copyright (C) 2016 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 osutil_test
|
|
|
|
import (
|
|
. "gopkg.in/check.v1"
|
|
|
|
"github.com/snapcore/snapd/osutil"
|
|
)
|
|
|
|
type mountSuite struct{}
|
|
|
|
var _ = Suite(&mountSuite{})
|
|
|
|
func (s *mountSuite) TestIsMountedHappyish(c *C) {
|
|
// note the different optional fields
|
|
const content = "" +
|
|
"44 24 7:1 / /snap/ubuntu-core/855 rw,relatime shared:27 - squashfs /dev/loop1 ro\n" +
|
|
"44 24 7:1 / /snap/something/123 rw,relatime - squashfs /dev/loop2 ro\n" +
|
|
"44 24 7:1 / /snap/random/456 rw,relatime opt:1 shared:27 - squashfs /dev/loop1 ro\n"
|
|
restore := osutil.MockMountInfo(content)
|
|
defer restore()
|
|
|
|
mounted, err := osutil.IsMounted("/snap/ubuntu-core/855")
|
|
c.Check(err, IsNil)
|
|
c.Check(mounted, Equals, true)
|
|
|
|
mounted, err = osutil.IsMounted("/snap/something/123")
|
|
c.Check(err, IsNil)
|
|
c.Check(mounted, Equals, true)
|
|
|
|
mounted, err = osutil.IsMounted("/snap/random/456")
|
|
c.Check(err, IsNil)
|
|
c.Check(mounted, Equals, true)
|
|
|
|
mounted, err = osutil.IsMounted("/random/made/up/name")
|
|
c.Check(err, IsNil)
|
|
c.Check(mounted, Equals, false)
|
|
}
|
|
|
|
func (s *mountSuite) TestIsMountedBroken(c *C) {
|
|
restore := osutil.MockMountInfo("44 24 7:1 ...truncated-stuff")
|
|
defer restore()
|
|
|
|
mounted, err := osutil.IsMounted("/snap/ubuntu-core/855")
|
|
c.Check(err, ErrorMatches, "incorrect number of fields, .*")
|
|
c.Check(mounted, Equals, false)
|
|
}
|