Merge lp:~bjornt/landscape-client/apt-multi-arch-tests into lp:~landscape/landscape-client/trunk

Proposed by Björn Tillenius
Status: Merged
Approved by: Free Ekanayaka
Approved revision: 458
Merged at revision: 447
Proposed branch: lp:~bjornt/landscape-client/apt-multi-arch-tests
Merge into: lp:~landscape/landscape-client/trunk
Prerequisite: lp:~bjornt/landscape-client/apt-check-changes
Diff against target: 138 lines (+34/-41)
1 file modified
landscape/package/tests/test_facade.py (+34/-41)
To merge this branch: bzr merge lp:~bjornt/landscape-client/apt-multi-arch-tests
Reviewer Review Type Date Requested Status
Free Ekanayaka (community) Approve
Alberto Donato (community) Approve
Review via email: mp+91097@code.launchpad.net

Description of the change

Re-enable multi-arch tests for AptFacade.

The main issue was that the packages were lacking Multi-Arch headers,
which meant that the i386 and amd64 versions conflicted with each other.
I also fixed the test to correctly request upgrade, by also requesting
that the old version to be removed.

In the DependencyError test I made things simpler by having only the
multi-arch package and request a global upgrade, instead of trying to
get an upgrade of another package to trigger an upgrade of the
multi-arch one.

To post a comment you must log in.
Revision history for this message
Alberto Donato (ack) wrote :

+1!

review: Approve
Revision history for this message
Free Ekanayaka (free.ekanayaka) wrote :

Nice work, +1!

review: Approve

Preview Diff

[H/L] Next/Prev Comment, [J/K] Next/Prev File, [N/P] Next/Prev Hunk
1=== modified file 'landscape/package/tests/test_facade.py'
2--- landscape/package/tests/test_facade.py 2012-02-01 14:57:26 +0000
3+++ landscape/package/tests/test_facade.py 2012-02-01 14:57:26 +0000
4@@ -979,12 +979,7 @@
5 self.facade.perform_changes()
6 self.assertEqual(foo1, foo1.package.candidate)
7
8- # XXX: The following test has been disabled, since the test setup
9- # results in the "multi-arch" package being broken, so it's not
10- # testing a valid scenario. This results in the test failing with
11- # the fix for bug 921664, even though it shouldn't.
12- # Bug 922511 has been filed to fix this test.
13- def disabled_test_wb_mark_install_upgrade_non_main_arch(self):
14+ def test_wb_mark_install_upgrade_non_main_arch(self):
15 """
16 If C{mark_install} is used to upgrade a package, its non-main
17 architecture version of the package will be upgraded as well, if
18@@ -996,15 +991,19 @@
19 apt_pkg.config.set("APT::Architectures::", "i386")
20 deb_dir = self.makeDir()
21 self._add_system_package(
22- "multi-arch", architecture="amd64", version="1.0")
23+ "multi-arch", architecture="amd64", version="1.0",
24+ control_fields={"Multi-Arch": "same"})
25 self._add_system_package(
26- "multi-arch", architecture="i386", version="1.0")
27+ "multi-arch", architecture="i386", version="1.0",
28+ control_fields={"Multi-Arch": "same"})
29 self._add_system_package(
30 "single-arch", architecture="amd64", version="1.0")
31 self._add_package_to_deb_dir(
32- deb_dir, "multi-arch", architecture="amd64", version="2.0")
33+ deb_dir, "multi-arch", architecture="amd64", version="2.0",
34+ control_fields={"Multi-Arch": "same"})
35 self._add_package_to_deb_dir(
36- deb_dir, "multi-arch", architecture="i386", version="2.0")
37+ deb_dir, "multi-arch", architecture="i386", version="2.0",
38+ control_fields={"Multi-Arch": "same"})
39 self._add_package_to_deb_dir(
40 deb_dir, "single-arch", architecture="amd64", version="2.0")
41 self._add_package_to_deb_dir(
42@@ -1016,24 +1015,21 @@
43 self.facade.get_packages_by_name("multi-arch"))
44 single_arch1, single_arch2 = sorted(
45 self.facade.get_packages_by_name("single-arch"))
46+ self.facade.mark_remove(multi_arch1)
47 self.facade.mark_install(multi_arch2)
48+ self.facade.mark_remove(single_arch1)
49 self.facade.mark_install(single_arch2)
50 self.facade._cache.commit = lambda fetch_progress: None
51 self.facade.perform_changes()
52 changes = [
53- (pkg.name, pkg.candidate.version)
54+ (pkg.name, pkg.candidate.version, pkg.marked_upgrade)
55 for pkg in self.facade._cache.get_changes()]
56 self.assertEqual(
57- [("multi-arch", "2.0"), ("multi-arch:i386", "2.0"),
58- ("single-arch", "2.0")],
59+ [("multi-arch", "2.0", True), ("multi-arch:i386", "2.0", True),
60+ ("single-arch", "2.0", True)],
61 sorted(changes))
62
63- # XXX: The following test has been disabled, since the test setup
64- # results in the "multi-arch" package being broken, so it's not
65- # testing a valid scenario. This results in the test failing with
66- # the fix for bug 921664, even though it shouldn't.
67- # Bug 922511 has been filed to fix this test.
68- def disabled_test_wb_mark_install_upgrade_non_main_arch_dependency_error(self):
69+ def test_wb_mark_install_upgrade_non_main_arch_dependency_error(self):
70 """
71 If a non-main architecture is automatically upgraded, and the
72 main architecture versions hasn't been marked for installation,
73@@ -1046,36 +1042,33 @@
74 apt_pkg.config.set("APT::Architectures::", "i386")
75 deb_dir = self.makeDir()
76 self._add_system_package(
77- "multi-arch", architecture="amd64", version="1.0")
78- self._add_system_package(
79- "multi-arch", architecture="i386", version="1.0")
80- self._add_system_package(
81- "single-arch", architecture="amd64", version="1.0",
82- control_fields={"Depends": "multi-arch"})
83- self._add_package_to_deb_dir(
84- deb_dir, "multi-arch", architecture="amd64", version="2.0")
85- self._add_package_to_deb_dir(
86- deb_dir, "multi-arch", architecture="i386", version="2.0")
87- self._add_package_to_deb_dir(
88- deb_dir, "single-arch", architecture="amd64", version="2.0")
89+ "multi-arch", architecture="amd64", version="1.0",
90+ control_fields={"Multi-Arch": "same"})
91+ self._add_system_package(
92+ "multi-arch", architecture="i386", version="1.0",
93+ control_fields={"Multi-Arch": "same"})
94+ self._add_package_to_deb_dir(
95+ deb_dir, "multi-arch", architecture="amd64", version="2.0",
96+ control_fields={"Multi-Arch": "same"})
97+ self._add_package_to_deb_dir(
98+ deb_dir, "multi-arch", architecture="i386", version="2.0",
99+ control_fields={"Multi-Arch": "same"})
100 self.facade.add_channel_apt_deb("file://%s" % deb_dir, "./")
101 self.facade.reload_channels()
102
103- multi_arch2 = sorted(
104- self.facade.get_packages_by_name("multi-arch"))[1]
105- single_arch2 = sorted(
106- self.facade.get_packages_by_name("single-arch"))[1]
107- self.facade.mark_install(single_arch2)
108+ multi_arch1, multi_arch2 = sorted(
109+ self.facade.get_packages_by_name("multi-arch"))
110+ self.facade.mark_global_upgrade()
111 self.facade._cache.commit = lambda fetch_progress: None
112 exception = self.assertRaises(
113 DependencyError, self.facade.perform_changes)
114- self.assertEqual([multi_arch2], exception.packages)
115+ self.assertEqual(
116+ sorted([multi_arch1, multi_arch2]), sorted(exception.packages))
117 changes = [
118 (pkg.name, pkg.candidate.version)
119 for pkg in self.facade._cache.get_changes()]
120 self.assertEqual(
121- [("multi-arch", "2.0"), ("multi-arch:i386", "2.0"),
122- ("single-arch", "2.0")],
123+ [("multi-arch", "2.0"), ("multi-arch:i386", "2.0")],
124 sorted(changes))
125
126 def test_mark_global_upgrade(self):
127@@ -1750,9 +1743,9 @@
128 # was added to python-apt. So if it's not there, it means that
129 # multi-arch support isn't available.
130 skip_message = "multi-arch not supported"
131- disabled_test_wb_mark_install_upgrade_non_main_arch_dependency_error.skip = (
132+ test_wb_mark_install_upgrade_non_main_arch_dependency_error.skip = (
133 skip_message)
134- disabled_test_wb_mark_install_upgrade_non_main_arch.skip = skip_message
135+ test_wb_mark_install_upgrade_non_main_arch.skip = skip_message
136
137
138 class SmartFacadeTest(LandscapeTest):

Subscribers

People subscribed via source and target branches

to all changes: