func (s *preupgradechecksSuite) TestUpdateDistroInfo(c *gc.C) {
	s.PatchValue(&upgrades.MinDiskSpaceMib, uint64(0))
	expectedAptCommandArgs := [][]string{
		{"update"},
		{"install", "distro-info"},
	}

	commandChan := s.HookCommandOutput(&pkgmgr.CommandOutput, nil, nil)
	err := upgrades.PreUpgradeSteps(nil, &mockAgentConfig{dataDir: "/"}, true, false)
	c.Assert(err, jc.ErrorIsNil)

	var commands []*exec.Cmd
	for i := 0; i < cap(expectedAptCommandArgs)+1; i++ {
		select {
		case cmd := <-commandChan:
			commands = append(commands, cmd)
		default:
			break
		}
	}
	if len(commands) != len(expectedAptCommandArgs) {
		c.Fatalf("expected %d commands, got %d", len(expectedAptCommandArgs), len(commands))
	}

	assertAptCommand := func(cmd *exec.Cmd, tailArgs ...string) {
		args := cmd.Args
		c.Assert(len(args), jc.GreaterThan, len(tailArgs))
		c.Assert(args[0], gc.Equals, "apt-get")
		c.Assert(args[len(args)-len(tailArgs):], gc.DeepEquals, tailArgs)
	}
	assertAptCommand(commands[0], "update")
	assertAptCommand(commands[1], "install", "distro-info")
}
func (s *preupgradechecksSuite) TestCheckFreeDiskSpace(c *gc.C) {
	// Expect an impossibly large amount of free disk.
	s.PatchValue(&upgrades.MinDiskSpaceMib, uint64(humanize.PiByte/humanize.MiByte))
	err := upgrades.PreUpgradeSteps(nil, &mockAgentConfig{dataDir: "/"}, false, false)
	c.Assert(err, gc.ErrorMatches, "not enough free disk space for upgrade: .*")
}