File: test_utils.py

package info (click to toggle)
freedombox 26.3
  • links: PTS, VCS
  • area: main
  • in suites: forky, sid
  • size: 83,092 kB
  • sloc: python: 48,542; javascript: 1,730; xml: 481; makefile: 290; sh: 137; php: 32
file content (95 lines) | stat: -rw-r--r-- 3,430 bytes parent folder | download | duplicates (2)
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()