|
Server : Apache System : Linux server.mata-lashes.com 3.10.0-1160.90.1.el7.x86_64 #1 SMP Thu May 4 15:21:22 UTC 2023 x86_64 User : matalashes ( 1004) PHP Version : 8.1.29 Disable Function : NONE Directory : /usr/src/cloud-init/tests/unittests/distros/ |
Upload File : |
# This file is part of cloud-init. See LICENSE file for license information.
from unittest import mock
from cloudinit import distros
@mock.patch("cloudinit.distros.opensuse.subp.subp")
class TestPackageCommands:
distro = distros.fetch("opensuse")("opensuse", {}, None)
@mock.patch(
"cloudinit.distros.opensuse.util.get_mount_info",
return_value=("/dev/sda1", "xfs", "/"),
)
@mock.patch(
"cloudinit.distros.opensuse.util.load_file",
return_value="foo\n/dev/sda1 / xfs rw,bar\n",
)
@mock.patch(
"cloudinit.distros.opensuse.os.path.exists", return_value=False
)
def test_upgrade_not_btrfs(self, m_tu_path, m_mounts, m_minfo, m_subp):
# Reset state
self.distro.update_method = None
self.distro.package_command("upgrade")
expected_cmd = ["zypper", "--non-interactive", "update"]
m_subp.assert_called_with(expected_cmd, capture=False)
@mock.patch(
"cloudinit.distros.opensuse.util.get_mount_info",
return_value=("/dev/sda1", "xfs", "/"),
)
@mock.patch(
"cloudinit.distros.opensuse.util.load_file",
return_value="foo\n/dev/sda1 / xfs rw,bar\n",
)
@mock.patch(
"cloudinit.distros.opensuse.os.path.exists", return_value=False
)
def test_upgrade_not_btrfs_pkg(self, m_tu_path, m_mounts, m_minfo, m_subp):
# Reset state
self.distro.update_method = None
self.distro.package_command("upgrade", None, ["python36", "gzip"])
expected_cmd = [
"zypper",
"--non-interactive",
"update",
"python36",
"gzip",
]
m_subp.assert_called_with(expected_cmd, capture=False)
@mock.patch(
"cloudinit.distros.opensuse.util.get_mount_info",
return_value=("/dev/sda1", "xfs", "/"),
)
@mock.patch(
"cloudinit.distros.opensuse.util.load_file",
return_value="foo\n/dev/sda1 / xfs rw,bar\n",
)
@mock.patch(
"cloudinit.distros.opensuse.os.path.exists", return_value=False
)
def test_update_not_btrfs(self, m_tu_path, m_mounts, m_minfo, m_subp):
# Reset state
self.distro.update_method = None
self.distro.package_command("update")
expected_cmd = ["zypper", "--non-interactive", "update"]
m_subp.assert_called_with(expected_cmd, capture=False)
@mock.patch(
"cloudinit.distros.opensuse.util.get_mount_info",
return_value=("/dev/sda1", "xfs", "/"),
)
@mock.patch(
"cloudinit.distros.opensuse.util.load_file",
return_value="foo\n/dev/sda1 / xfs rw,bar\n",
)
@mock.patch(
"cloudinit.distros.opensuse.os.path.exists", return_value=False
)
def test_update_not_btrfs_pkg(self, m_tu_path, m_mounts, m_minfo, m_subp):
# Reset state
self.distro.update_method = None
self.distro.package_command("update", None, ["python36", "gzip"])
expected_cmd = [
"zypper",
"--non-interactive",
"update",
"python36",
"gzip",
]
m_subp.assert_called_with(expected_cmd, capture=False)
@mock.patch(
"cloudinit.distros.opensuse.util.get_mount_info",
return_value=("/dev/sda1", "xfs", "/"),
)
@mock.patch(
"cloudinit.distros.opensuse.util.load_file",
return_value="foo\n/dev/sda1 / xfs rw,bar\n",
)
@mock.patch(
"cloudinit.distros.opensuse.os.path.exists", return_value=False
)
def test_install_not_btrfs_pkg(self, m_tu_path, m_mounts, m_minfo, m_subp):
# Reset state
self.distro.update_method = None
self.distro.install_packages(["python36", "gzip"])
expected_cmd = [
"zypper",
"--non-interactive",
"install",
"--auto-agree-with-licenses",
"python36",
"gzip",
]
m_subp.assert_called_with(expected_cmd, capture=False)
@mock.patch(
"cloudinit.distros.opensuse.util.get_mount_info",
return_value=("/dev/sda1", "btrfs", "/"),
)
@mock.patch(
"cloudinit.distros.opensuse.util.load_file",
return_value="foo\n/dev/sda1 / btrfs rw,bar\n",
)
@mock.patch("cloudinit.distros.opensuse.os.path.exists", return_value=True)
def test_upgrade_btrfs(self, m_tu_path, m_mounts, m_minfo, m_subp):
# Reset state
self.distro.update_method = None
self.distro.package_command("upgrade")
expected_cmd = [
"transactional-update",
"--non-interactive",
"--drop-if-no-change",
"up",
]
m_subp.assert_called_with(expected_cmd, capture=False)
@mock.patch(
"cloudinit.distros.opensuse.util.get_mount_info",
return_value=("/dev/sda1", "btrfs", "/"),
)
@mock.patch(
"cloudinit.distros.opensuse.util.load_file",
return_value="foo\n/dev/sda1 / btrfs rw,bar\n",
)
@mock.patch("cloudinit.distros.opensuse.os.path.exists", return_value=True)
def test_upgrade_btrfs_pkg(self, m_tu_path, m_mounts, m_minfo, m_subp):
# Reset state
self.distro.update_method = None
self.distro.package_command("upgrade", None, ["python36", "gzip"])
expected_cmd = [
"transactional-update",
"--non-interactive",
"--drop-if-no-change",
"pkg",
"update",
"python36",
"gzip",
]
m_subp.assert_called_with(expected_cmd, capture=False)
@mock.patch(
"cloudinit.distros.opensuse.util.get_mount_info",
return_value=("/dev/sda1", "btrfs", "/"),
)
@mock.patch(
"cloudinit.distros.opensuse.util.load_file",
return_value="foo\n/dev/sda1 / btrf rw,bar\n",
)
@mock.patch("cloudinit.distros.opensuse.os.path.exists", return_value=True)
def test_update_btrfs(self, m_tu_path, m_mounts, m_minfo, m_subp):
# Reset state
self.distro.update_method = None
self.distro.package_command("update")
expected_cmd = [
"transactional-update",
"--non-interactive",
"--drop-if-no-change",
"up",
]
m_subp.assert_called_with(expected_cmd, capture=False)
@mock.patch(
"cloudinit.distros.opensuse.util.get_mount_info",
return_value=("/dev/sda1", "btrfs", "/"),
)
@mock.patch(
"cloudinit.distros.opensuse.util.load_file",
return_value="foo\n/dev/sda1 / btrfs rw,bar\n",
)
@mock.patch("cloudinit.distros.opensuse.os.path.exists", return_value=True)
def test_update_btrfs_pkg(self, m_tu_path, m_mounts, m_minfo, m_subp):
# Reset state
self.distro.update_method = None
self.distro.package_command("update", None, ["python36", "gzip"])
expected_cmd = [
"transactional-update",
"--non-interactive",
"--drop-if-no-change",
"pkg",
"update",
"python36",
"gzip",
]
m_subp.assert_called_with(expected_cmd, capture=False)
@mock.patch(
"cloudinit.distros.opensuse.util.get_mount_info",
return_value=("/dev/sda1", "btrfs", "/"),
)
@mock.patch(
"cloudinit.distros.opensuse.util.load_file",
return_value="foo\n/dev/sda1 / btrfs rw,bar\n",
)
@mock.patch("cloudinit.distros.opensuse.os.path.exists", return_value=True)
def test_install_btrfs_pkg(self, m_tu_path, m_mounts, m_minfo, m_subp):
# Reset state
self.distro.update_method = None
self.distro.install_packages(["python36", "gzip"])
expected_cmd = [
"transactional-update",
"--non-interactive",
"--drop-if-no-change",
"pkg",
"install",
"--auto-agree-with-licenses",
"python36",
"gzip",
]
m_subp.assert_called_with(expected_cmd, capture=False)
@mock.patch(
"cloudinit.distros.opensuse.util.get_mount_info",
return_value=("/dev/sda1", "btrfs", "/"),
)
@mock.patch(
"cloudinit.distros.opensuse.util.load_file",
return_value="foo\n/dev/sda1 / btrfs ro,bar\n",
)
@mock.patch(
"cloudinit.distros.opensuse.os.path.exists", return_value=False
)
def test_upgrade_no_transact_up_ro_root(
self, m_tu_path, m_mounts, m_minfo, m_subp
):
# Reset state
self.distro.update_method = None
result = self.distro.package_command("upgrade")
assert self.distro.read_only_root
assert result is None
assert not m_subp.called
@mock.patch(
"cloudinit.distros.opensuse.util.get_mount_info",
return_value=("/dev/sda1", "btrfs", "/"),
)
@mock.patch(
"cloudinit.distros.opensuse.util.load_file",
return_value="foo\n/dev/sda1 / btrfs rw,bar\n",
)
@mock.patch(
"cloudinit.distros.opensuse.os.path.exists", return_value=False
)
def test_upgrade_no_transact_up_rw_root_btrfs(
self, m_tu_path, m_mounts, m_minfo, m_subp
):
# Reset state
self.distro.update_method = None
self.distro.package_command("upgrade")
assert self.distro.update_method == "zypper"
assert self.distro.read_only_root is False
expected_cmd = ["zypper", "--non-interactive", "update"]
m_subp.assert_called_with(expected_cmd, capture=False)
@mock.patch(
"cloudinit.distros.opensuse.util.get_mount_info",
return_value=("/dev/sda1", "xfs", "/"),
)
@mock.patch(
"cloudinit.distros.opensuse.util.load_file",
return_value="foo\n/dev/sda1 / xfs ro,bar\n",
)
@mock.patch("cloudinit.distros.opensuse.os.path.exists", return_value=True)
def test_upgrade_transact_up_ro_root(
self, m_tu_path, m_mounts, m_minfo, m_subp
):
# Reset state
self.distro.update_method = None
result = self.distro.package_command("upgrade")
assert self.distro.update_method == "zypper"
assert self.distro.read_only_root
assert result is None
assert not m_subp.called
@mock.patch(
"cloudinit.distros.opensuse.util.get_mount_info",
return_value=("/dev/sda1", "btrfs", "/"),
)
@mock.patch(
"cloudinit.distros.opensuse.util.load_file",
return_value="foo\n/dev/sda1 / btrfs ro,bar\n",
)
@mock.patch("cloudinit.distros.opensuse.os.path.exists", return_value=True)
def test_refresh_transact_up_ro_root_btrfs(
self, m_tu_path, m_mounts, m_minfo, m_subp
):
# Reset state
self.distro.update_method = None
self.distro.package_command("refresh")
assert self.distro.update_method == "transactional"
assert self.distro.read_only_root
expected_cmd = ["zypper", "--non-interactive", "refresh"]
m_subp.assert_called_with(expected_cmd, capture=False)