#!/usr/bin/python3
#
# Copyright (C) 2014 Red Hat, Inc.
#
# This program is free software; you can redistribute it and/or modify
# it under the terms of the GNU Lesser General Public License as published
# by the Free Software Foundation; either version 2.1 of the License, or
# (at your option) any later version.
#
# 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 Lesser General Public License for more details.
#
# You should have received a copy of the GNU Lesser General Public License
# along with this program. If not, see .
#
# Author: Chris Lumens
__all__ = ["BasicReclaimLiveCDCreator", "BasicReclaimLiveCD_OutsideTest",
"CantReclaimLiveCDCreator", "CantReclaimLiveCD_OutsideTest"]
from . import Creator, OutsideMixin
import subprocess
import unittest
from blivet.size import Size
class BasicReclaimLiveCDCreator(Creator):
drives = [("one", Size("8 GiB"))]
name = "basicreclaimlivecd"
# This does not test every spoke, as we only need to do enough to satisfy anaconda
# and get us onto the progress hub.
tests = [("welcome", "BasicWelcomeTestCase"),
("summary", "LiveCDSummaryTestCase"),
("storage", "BasicReclaimTestCase"),
("progress", "LiveCDProgressTestCase"),
("rootpassword", "BasicRootPasswordTestCase"),
("progress", "LiveCDFinishTestCase")]
def makeDrives(self):
Creator.makeDrives(self)
# Put a partition and filesystem across the whole disk, which will
# force anaconda to display the reclaim dialog.
for (drive, size) in self.drives:
subprocess.call(["/sbin/parted", "-s", self._drivePaths[drive], "mklabel", "msdos"],
stdout=subprocess.DEVNULL,
stderr=subprocess.DEVNULL)
subprocess.call(["/sbin/parted", "-s", self._drivePaths[drive], "mkpart", "p", "ext2", "0", str(size)],
stdout=subprocess.DEVNULL,
stderr=subprocess.DEVNULL)
subprocess.call(["/sbin/mkfs.ext4", "-F", self._drivePaths[drive]],
stdout=subprocess.DEVNULL,
stderr=subprocess.DEVNULL)
class BasicReclaimLiveCD_OutsideTest(OutsideMixin, unittest.TestCase):
creatorClass = BasicReclaimLiveCDCreator
class CantReclaimLiveCDCreator(BasicReclaimLiveCDCreator):
drives = [("one", Size("2 GiB"))]
name = "cantreclaimlivecd"
# We don't get to test much here, since the reclaim test shuts down anaconda.
tests = [("welcome", "BasicWelcomeTestCase"),
("summary", "LiveCDSummaryTestCase"),
("storage", "CantReclaimTestCase")]
class CantReclaimLiveCD_OutsideTest(OutsideMixin, unittest.TestCase):
creatorClass = CantReclaimLiveCDCreator