/
test_os_release.py
139 lines (120 loc) · 4.1 KB
/
test_os_release.py
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
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
# -*- Mode:Python; indent-tabs-mode:nil; tab-width:4 -*-
#
# Copyright (C) 2015-2018 Canonical Ltd
#
# This program is free software: you can redistribute it and/or modify
# it under the terms of the GNU General Public License version 3 as
# published by the Free Software Foundation.
#
# 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 General Public License for more details.
#
# You should have received a copy of the GNU General Public License
# along with this program. If not, see <http://www.gnu.org/licenses/>.
from textwrap import dedent
from testtools.matchers import Equals
from snapcraft.internal import os_release, errors
from tests import unit
class OsReleaseTestCase(unit.TestCase):
def _write_os_release(self, contents):
path = "os-release"
with open(path, "w") as f:
f.write(contents)
return path
def test_blank_lines(self):
release = os_release.OsRelease(
os_release_file=self._write_os_release(
dedent(
"""\
NAME="Arch Linux"
PRETTY_NAME="Arch Linux"
ID=arch
ID_LIKE=archlinux
VERSION_ID="foo"
VERSION_CODENAME="bar"
"""
)
)
)
self.assertThat(release.id(), Equals("arch"))
self.assertThat(release.name(), Equals("Arch Linux"))
self.assertThat(release.version_id(), Equals("foo"))
self.assertThat(release.version_codename(), Equals("bar"))
def test_no_id(self):
release = os_release.OsRelease(
os_release_file=self._write_os_release(
dedent(
"""\
NAME="Arch Linux"
PRETTY_NAME="Arch Linux"
ID_LIKE=archlinux
VERSION_ID="foo"
VERSION_CODENAME="bar"
"""
)
)
)
self.assertRaises(errors.OsReleaseIdError, release.id)
def test_no_name(self):
release = os_release.OsRelease(
os_release_file=self._write_os_release(
dedent(
"""\
ID=arch
PRETTY_NAME="Arch Linux"
ID_LIKE=archlinux
VERSION_ID="foo"
VERSION_CODENAME="bar"
"""
)
)
)
self.assertRaises(errors.OsReleaseNameError, release.name)
def test_no_version_id(self):
release = os_release.OsRelease(
os_release_file=self._write_os_release(
dedent(
"""\
NAME="Arch Linux"
ID=arch
PRETTY_NAME="Arch Linux"
ID_LIKE=archlinux
VERSION_CODENAME="bar"
"""
)
)
)
self.assertRaises(errors.OsReleaseVersionIdError, release.version_id)
def test_no_version_codename(self):
"""Test that version codename can also come from VERSION_ID"""
release = os_release.OsRelease(
os_release_file=self._write_os_release(
dedent(
"""\
NAME="Ubuntu"
VERSION="14.04.5 LTS, Trusty Tahr"
ID=ubuntu
ID_LIKE=debian
PRETTY_NAME="Ubuntu 14.04.5 LTS"
VERSION_ID="14.04"
"""
)
)
)
self.assertThat(release.version_codename(), Equals("trusty"))
def test_no_version_codename_or_version_id(self):
release = os_release.OsRelease(
os_release_file=self._write_os_release(
dedent(
"""\
NAME="Ubuntu"
ID=ubuntu
ID_LIKE=debian
PRETTY_NAME="Ubuntu 16.04.3 LTS"
"""
)
)
)
self.assertRaises(errors.OsReleaseCodenameError, release.version_codename)