Merge lp:~zyga/checkbox/fix-1477095 into lp:checkbox

Proposed by Zygmunt Krynicki
Status: Merged
Approved by: Sylvain Pineau
Approved revision: 3914
Merged at revision: 3913
Proposed branch: lp:~zyga/checkbox/fix-1477095
Merge into: lp:checkbox
Prerequisite: lp:~zyga/checkbox/fix-1476678
Diff against target: 189 lines (+143/-5)
2 files modified
plainbox/plainbox/impl/unit/packaging.py (+17/-5)
plainbox/plainbox/impl/unit/test_packging.py (+126/-0)
To merge this branch: bzr merge lp:~zyga/checkbox/fix-1477095
Reviewer Review Type Date Requested Status
Sylvain Pineau (community) Approve
Review via email: mp+265522@code.launchpad.net
To post a comment you must log in.
lp:~zyga/checkbox/fix-1477095 updated
3910. By Zygmunt Krynicki

"automatic merge of lp:~zyga/checkbox/fix-1477131/ by tarmac [r=sylvain-pineau][bug=1477131][author=zyga]"

3911. By Jonathan Cave

"automatic merge of lp:~jocave/checkbox/modem-resource-job/ by tarmac [r=sylvain-pineau,kissiel][bug=][author=jocave]"

3912. By Zygmunt Krynicki

"automatic merge of lp:~zyga/checkbox/fix-1476678/ by tarmac [r=sylvain-pineau][bug=1476678][author=zyga]"

3913. By Zygmunt Krynicki

plainbox:unit:packaging: correct logging

Signed-off-by: Zygmunt Krynicki <email address hidden>

3914. By Zygmunt Krynicki

plainbox:unit:packaging: don't assume /etc/os-release is correct

Fixes: https://bugs.launchpad.net/plainbox/+bug/1477095
Signed-off-by: Zygmunt Krynicki <email address hidden>

Revision history for this message
Sylvain Pineau (sylvain-pineau) wrote :

thanks for fixing the packaging units, +1

review: Approve

Preview Diff

[H/L] Next/Prev Comment, [J/K] Next/Prev File, [N/P] Next/Prev Hunk
1=== modified file 'plainbox/plainbox/impl/unit/packaging.py'
2--- plainbox/plainbox/impl/unit/packaging.py 2015-07-22 13:30:04 +0000
3+++ plainbox/plainbox/impl/unit/packaging.py 2015-07-22 14:19:38 +0000
4@@ -281,21 +281,33 @@
5
6 def _strategy_id_version(unit, os_release):
7 _logger.debug(_("Considering strategy: %s"),
8- _("os-id == ID and os-version-id == VERSION"))
9- return (unit.os_id == os_release['ID']
10- and unit.os_version_id == os_release['VERSION_ID'])
11+ _("os-id == ID and os-version-id == VERSION_ID"))
12+ return (
13+ 'ID' in os_release
14+ and unit.os_id == os_release['ID']
15+ and 'VERSION_ID' in os_release
16+ and unit.os_version_id == os_release['VERSION_ID']
17+ )
18
19
20 def _strategy_id(unit, os_release):
21 _logger.debug(_("Considering strategy: %s"),
22 _("os-id == ID and os-version-id == undefined"))
23- return unit.os_id == os_release['ID'] and unit.os_version_id is None
24+ return (
25+ 'ID' in os_release
26+ and unit.os_id == os_release['ID']
27+ and unit.os_version_id is None
28+ )
29
30
31 def _strategy_id_like(unit, os_release):
32 _logger.debug(_("Considering strategy: %s"),
33 _("os-id == ID_LIKE and os-version-id == undefined"))
34- return unit.os_id == os_release['ID_LIKE'] and unit.os_version_id is None
35+ return (
36+ 'ID_LIKE' in os_release
37+ and unit.os_id == os_release['ID_LIKE']
38+ and unit.os_version_id is None
39+ )
40
41
42 class PackagingDriverBase(IPackagingDriver):
43
44=== modified file 'plainbox/plainbox/impl/unit/test_packging.py'
45--- plainbox/plainbox/impl/unit/test_packging.py 2015-07-22 13:30:04 +0000
46+++ plainbox/plainbox/impl/unit/test_packging.py 2015-07-22 14:19:38 +0000
47@@ -22,12 +22,47 @@
48
49 from plainbox.impl.unit.packaging import DebianPackagingDriver
50 from plainbox.impl.unit.packaging import PackagingMetaDataUnit
51+from plainbox.impl.unit.packaging import _strategy_id
52+from plainbox.impl.unit.packaging import _strategy_id_like
53+from plainbox.impl.unit.packaging import _strategy_id_version
54
55
56 class DebianPackagingDriverTests(TestCase):
57
58 """Tests for the DebianPackagingDriver class."""
59
60+ DEBIAN_JESSIE = {
61+ 'PRETTY_NAME': "Debian GNU/Linux 8 (jessie)",
62+ 'NAME': "Debian GNU/Linux",
63+ 'VERSION_ID': "8",
64+ 'VERSION': "8 (jessie)",
65+ 'ID': 'debian',
66+ 'HOME_URL': "http://www.debian.org/",
67+ 'SUPPORT_URL': "http://www.debian.org/support/",
68+ 'BUG_REPORT_URL': "https://bugs.debian.org/",
69+ }
70+
71+ DEBIAN_SID = {
72+ 'PRETTY_NAME': "Debian GNU/Linux stretch/sid",
73+ 'NAME': "Debian GNU/Linux",
74+ 'ID': 'debian',
75+ 'HOME_URL': "https://www.debian.org/",
76+ 'SUPPORT_URL': "https://www.debian.org/support/",
77+ 'BUG_REPORT_URL': "https://bugs.debian.org/",
78+ }
79+
80+ UBUNTU_VIVID = {
81+ 'NAME': "Ubuntu",
82+ 'VERSION': "15.04 (Vivid Vervet)",
83+ 'ID': 'ubuntu',
84+ 'ID_LIKE': 'debian',
85+ 'PRETTY_NAME': "Ubuntu 15.04",
86+ 'VERSION_ID': "15.04",
87+ 'HOME_URL': "http://www.ubuntu.com/",
88+ 'SUPPORT_URL': "http://help.ubuntu.com/",
89+ 'BUG_REPORT_URL': "http://bugs.launchpad.net/ubuntu/",
90+ }
91+
92 def test_fix_1476678(self):
93 """Check https://bugs.launchpad.net/plainbox/+bug/1476678."""
94 driver = DebianPackagingDriver({})
95@@ -52,3 +87,94 @@
96 'wodim'
97 ])
98 self.assertEqual(driver._suggests, [])
99+
100+ def test_fix_1477095(self):
101+ """Check https://bugs.launchpad.net/plainbox/+bug/1477095."""
102+ # This unit is supposed to for Debian (any version) and derivatives.
103+ # Note below that id match lets both Debian Jessie and Debian Sid pass
104+ # and that id_like match also lets Ubuntu Vivid pass.
105+ unit = PackagingMetaDataUnit({
106+ 'os-id': 'debian',
107+ })
108+ # Using id and version match
109+ self.assertFalse(_strategy_id_version(unit, {}))
110+ self.assertFalse(_strategy_id_version(unit, self.DEBIAN_SID))
111+ self.assertFalse(_strategy_id_version(unit, self.DEBIAN_JESSIE))
112+ self.assertFalse(_strategy_id_version(unit, self.UBUNTU_VIVID))
113+ # Using id match
114+ self.assertFalse(_strategy_id(unit, {}))
115+ self.assertTrue(_strategy_id(unit, self.DEBIAN_SID))
116+ self.assertTrue(_strategy_id(unit, self.DEBIAN_JESSIE))
117+ self.assertFalse(_strategy_id(unit, self.UBUNTU_VIVID))
118+ # Using id like
119+ self.assertFalse(_strategy_id_like(unit, {}))
120+ self.assertFalse(_strategy_id_like(unit, self.DEBIAN_SID))
121+ self.assertFalse(_strategy_id_like(unit, self.DEBIAN_JESSIE))
122+ self.assertTrue(_strategy_id_like(unit, self.UBUNTU_VIVID))
123+ # This unit is supposed to for Debian Jessie only. Note below that
124+ # only Debian Jessie is passed and only by id and version match.
125+ # Nothing else is allowed.
126+ unit = PackagingMetaDataUnit({
127+ 'os-id': 'debian',
128+ 'os-version-id': '8'
129+ })
130+ # Using id and version match
131+ self.assertFalse(_strategy_id_version(unit, {}))
132+ self.assertFalse(_strategy_id_version(unit, self.DEBIAN_SID))
133+ self.assertTrue(_strategy_id_version(unit, self.DEBIAN_JESSIE))
134+ self.assertFalse(_strategy_id_version(unit, self.UBUNTU_VIVID))
135+ # Using id match
136+ self.assertFalse(_strategy_id(unit, {}))
137+ self.assertFalse(_strategy_id(unit, self.DEBIAN_SID))
138+ self.assertFalse(_strategy_id(unit, self.DEBIAN_JESSIE))
139+ self.assertFalse(_strategy_id(unit, self.UBUNTU_VIVID))
140+ # Using id like
141+ self.assertFalse(_strategy_id_like(unit, {}))
142+ self.assertFalse(_strategy_id_like(unit, self.DEBIAN_SID))
143+ self.assertFalse(_strategy_id_like(unit, self.DEBIAN_JESSIE))
144+ self.assertFalse(_strategy_id_like(unit, self.UBUNTU_VIVID))
145+ # This unit is supposed to for Ubuntu (any version) and derivatives.
146+ # Note that None of the Debian versions pass anymore and the only
147+ # version that is allowed here is the one Vivid version we test for.
148+ # (If there was an Elementary test here it would have passed as well, I
149+ # hope).
150+ unit = PackagingMetaDataUnit({
151+ 'os-id': 'ubuntu',
152+ })
153+ # Using id and version match
154+ self.assertFalse(_strategy_id_version(unit, {}))
155+ self.assertFalse(_strategy_id_version(unit, self.DEBIAN_SID))
156+ self.assertFalse(_strategy_id_version(unit, self.DEBIAN_JESSIE))
157+ self.assertFalse(_strategy_id_version(unit, self.UBUNTU_VIVID))
158+ # Using id match
159+ self.assertFalse(_strategy_id(unit, {}))
160+ self.assertFalse(_strategy_id(unit, self.DEBIAN_SID))
161+ self.assertFalse(_strategy_id(unit, self.DEBIAN_JESSIE))
162+ self.assertTrue(_strategy_id(unit, self.UBUNTU_VIVID))
163+ # Using id like
164+ self.assertFalse(_strategy_id_like(unit, {}))
165+ self.assertFalse(_strategy_id_like(unit, self.DEBIAN_SID))
166+ self.assertFalse(_strategy_id_like(unit, self.DEBIAN_JESSIE))
167+ self.assertFalse(_strategy_id_like(unit, self.UBUNTU_VIVID))
168+ # This unit is supposed to for Ubuntu Vivid only. Note that it behaves
169+ # exactly like the Debian Jessie test above. Only Ubuntu Vivid is
170+ # passed and only by the id and version match.
171+ unit = PackagingMetaDataUnit({
172+ 'os-id': 'ubuntu',
173+ 'os-version-id': '15.04'
174+ })
175+ # Using id and version match
176+ self.assertFalse(_strategy_id_version(unit, {}))
177+ self.assertFalse(_strategy_id_version(unit, self.DEBIAN_SID))
178+ self.assertFalse(_strategy_id_version(unit, self.DEBIAN_JESSIE))
179+ self.assertTrue(_strategy_id_version(unit, self.UBUNTU_VIVID))
180+ # Using id match
181+ self.assertFalse(_strategy_id(unit, {}))
182+ self.assertFalse(_strategy_id(unit, self.DEBIAN_SID))
183+ self.assertFalse(_strategy_id(unit, self.DEBIAN_JESSIE))
184+ self.assertFalse(_strategy_id(unit, self.UBUNTU_VIVID))
185+ # Using id like
186+ self.assertFalse(_strategy_id_like(unit, {}))
187+ self.assertFalse(_strategy_id_like(unit, self.DEBIAN_SID))
188+ self.assertFalse(_strategy_id_like(unit, self.DEBIAN_JESSIE))
189+ self.assertFalse(_strategy_id_like(unit, self.UBUNTU_VIVID))

Subscribers

People subscribed via source and target branches