1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95
|
# SPDX-License-Identifier: AGPL-3.0-or-later
"""
Test various upgrade related utilities.
"""
from unittest.mock import patch
from .. import utils
def test_get_sources_list_codename(tmp_path):
"""Test retrieving codename from sources.list file."""
list1 = '''
deb http://deb.debian.org/debian bookworm main non-free-firmware
deb-src http://deb.debian.org/debian bookworm main non-free-firmware
deb http://deb.debian.org/debian bookworm-updates main non-free-firmware
deb-src http://deb.debian.org/debian bookworm-updates main non-free-firmware
deb http://security.debian.org/debian-security/ bookworm-security main non-free-firmware
deb-src http://security.debian.org/debian-security/ bookworm-security main non-free-firmware
''' # noqa: E501
list2 = '''
deb http://deb.debian.org/debian stable main non-free-firmware
deb-src http://deb.debian.org/debian stable main non-free-firmware
deb http://deb.debian.org/debian bookworm-updates main non-free-firmware
deb-src http://deb.debian.org/debian bookworm-updates main non-free-firmware
deb http://security.debian.org/debian-security/ bookworm-security main non-free-firmware
deb-src http://security.debian.org/debian-security/ bookworm-security main non-free-firmware
''' # noqa: E501
list3 = '''
deb http://deb.debian.org/debian unstable main
deb http://deb.debian.org/debian trixie main
'''
list4 = '''
deb http://deb.debian.org/debian sid main
deb http://deb.debian.org/debian trixie main
'''
list5 = '''
deb http://deb.debian.org/debian testing main
deb http://deb.debian.org/debian trixie main
'''
sources_list = tmp_path / 'sources.list'
module = 'plinth.modules.upgrades.utils'
with patch(f'{module}.sources_list', sources_list):
sources_list.write_text(list1)
assert utils.get_sources_list_codename() == 'bookworm'
sources_list.write_text(list2)
assert utils.get_sources_list_codename() is None
sources_list.write_text(list3)
assert utils.get_sources_list_codename() == 'unstable'
sources_list.write_text(list4)
assert utils.get_sources_list_codename() == 'unstable'
sources_list.write_text(list5)
assert utils.get_sources_list_codename() == 'testing'
@patch('subprocess.run')
def test_get_current_release(run):
"""Test that getting current release works."""
run.return_value.stdout = b'test-release\ntest-codename\n\n'
assert utils.get_current_release() == ('test-release', 'test-codename')
@patch('plinth.modules.upgrades.utils.get_sources_list_codename')
def test_is_distribution_unstable(get_sources_list_codename):
"""Test that checking for unstable distribution works."""
get_sources_list_codename.return_value = 'unstable'
assert utils.is_distribution_unstable()
get_sources_list_codename.return_value = 'sid'
assert utils.is_distribution_unstable()
get_sources_list_codename.return_value = 'testing'
assert not utils.is_distribution_unstable()
@patch('plinth.modules.upgrades.utils.get_current_release')
def test_is_distribution_rolling(get_current_release):
"""Test that checking for testing/unstable distribution works."""
for value in ['unstable', 'testing', 'n/a']:
get_current_release.return_value = (value, None)
assert utils.is_distribution_rolling()
get_current_release.return_value = ('forky', None)
assert not utils.is_distribution_rolling()
|