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
=== modified file 'landscape/package/tests/test_facade.py'
--- landscape/package/tests/test_facade.py 2012-02-01 14:57:26 +0000
+++ landscape/package/tests/test_facade.py 2012-02-01 14:57:26 +0000
@@ -979,12 +979,7 @@
979 self.facade.perform_changes()979 self.facade.perform_changes()
980 self.assertEqual(foo1, foo1.package.candidate)980 self.assertEqual(foo1, foo1.package.candidate)
981981
982 # XXX: The following test has been disabled, since the test setup982 def test_wb_mark_install_upgrade_non_main_arch(self):
983 # results in the "multi-arch" package being broken, so it's not
984 # testing a valid scenario. This results in the test failing with
985 # the fix for bug 921664, even though it shouldn't.
986 # Bug 922511 has been filed to fix this test.
987 def disabled_test_wb_mark_install_upgrade_non_main_arch(self):
988 """983 """
989 If C{mark_install} is used to upgrade a package, its non-main984 If C{mark_install} is used to upgrade a package, its non-main
990 architecture version of the package will be upgraded as well, if985 architecture version of the package will be upgraded as well, if
@@ -996,15 +991,19 @@
996 apt_pkg.config.set("APT::Architectures::", "i386")991 apt_pkg.config.set("APT::Architectures::", "i386")
997 deb_dir = self.makeDir()992 deb_dir = self.makeDir()
998 self._add_system_package(993 self._add_system_package(
999 "multi-arch", architecture="amd64", version="1.0")994 "multi-arch", architecture="amd64", version="1.0",
995 control_fields={"Multi-Arch": "same"})
1000 self._add_system_package(996 self._add_system_package(
1001 "multi-arch", architecture="i386", version="1.0")997 "multi-arch", architecture="i386", version="1.0",
998 control_fields={"Multi-Arch": "same"})
1002 self._add_system_package(999 self._add_system_package(
1003 "single-arch", architecture="amd64", version="1.0")1000 "single-arch", architecture="amd64", version="1.0")
1004 self._add_package_to_deb_dir(1001 self._add_package_to_deb_dir(
1005 deb_dir, "multi-arch", architecture="amd64", version="2.0")1002 deb_dir, "multi-arch", architecture="amd64", version="2.0",
1003 control_fields={"Multi-Arch": "same"})
1006 self._add_package_to_deb_dir(1004 self._add_package_to_deb_dir(
1007 deb_dir, "multi-arch", architecture="i386", version="2.0")1005 deb_dir, "multi-arch", architecture="i386", version="2.0",
1006 control_fields={"Multi-Arch": "same"})
1008 self._add_package_to_deb_dir(1007 self._add_package_to_deb_dir(
1009 deb_dir, "single-arch", architecture="amd64", version="2.0")1008 deb_dir, "single-arch", architecture="amd64", version="2.0")
1010 self._add_package_to_deb_dir(1009 self._add_package_to_deb_dir(
@@ -1016,24 +1015,21 @@
1016 self.facade.get_packages_by_name("multi-arch"))1015 self.facade.get_packages_by_name("multi-arch"))
1017 single_arch1, single_arch2 = sorted(1016 single_arch1, single_arch2 = sorted(
1018 self.facade.get_packages_by_name("single-arch"))1017 self.facade.get_packages_by_name("single-arch"))
1018 self.facade.mark_remove(multi_arch1)
1019 self.facade.mark_install(multi_arch2)1019 self.facade.mark_install(multi_arch2)
1020 self.facade.mark_remove(single_arch1)
1020 self.facade.mark_install(single_arch2)1021 self.facade.mark_install(single_arch2)
1021 self.facade._cache.commit = lambda fetch_progress: None1022 self.facade._cache.commit = lambda fetch_progress: None
1022 self.facade.perform_changes()1023 self.facade.perform_changes()
1023 changes = [1024 changes = [
1024 (pkg.name, pkg.candidate.version)1025 (pkg.name, pkg.candidate.version, pkg.marked_upgrade)
1025 for pkg in self.facade._cache.get_changes()]1026 for pkg in self.facade._cache.get_changes()]
1026 self.assertEqual(1027 self.assertEqual(
1027 [("multi-arch", "2.0"), ("multi-arch:i386", "2.0"),1028 [("multi-arch", "2.0", True), ("multi-arch:i386", "2.0", True),
1028 ("single-arch", "2.0")],1029 ("single-arch", "2.0", True)],
1029 sorted(changes))1030 sorted(changes))
10301031
1031 # XXX: The following test has been disabled, since the test setup1032 def test_wb_mark_install_upgrade_non_main_arch_dependency_error(self):
1032 # results in the "multi-arch" package being broken, so it's not
1033 # testing a valid scenario. This results in the test failing with
1034 # the fix for bug 921664, even though it shouldn't.
1035 # Bug 922511 has been filed to fix this test.
1036 def disabled_test_wb_mark_install_upgrade_non_main_arch_dependency_error(self):
1037 """1033 """
1038 If a non-main architecture is automatically upgraded, and the1034 If a non-main architecture is automatically upgraded, and the
1039 main architecture versions hasn't been marked for installation,1035 main architecture versions hasn't been marked for installation,
@@ -1046,36 +1042,33 @@
1046 apt_pkg.config.set("APT::Architectures::", "i386")1042 apt_pkg.config.set("APT::Architectures::", "i386")
1047 deb_dir = self.makeDir()1043 deb_dir = self.makeDir()
1048 self._add_system_package(1044 self._add_system_package(
1049 "multi-arch", architecture="amd64", version="1.0")1045 "multi-arch", architecture="amd64", version="1.0",
1050 self._add_system_package(1046 control_fields={"Multi-Arch": "same"})
1051 "multi-arch", architecture="i386", version="1.0")1047 self._add_system_package(
1052 self._add_system_package(1048 "multi-arch", architecture="i386", version="1.0",
1053 "single-arch", architecture="amd64", version="1.0",1049 control_fields={"Multi-Arch": "same"})
1054 control_fields={"Depends": "multi-arch"})1050 self._add_package_to_deb_dir(
1055 self._add_package_to_deb_dir(1051 deb_dir, "multi-arch", architecture="amd64", version="2.0",
1056 deb_dir, "multi-arch", architecture="amd64", version="2.0")1052 control_fields={"Multi-Arch": "same"})
1057 self._add_package_to_deb_dir(1053 self._add_package_to_deb_dir(
1058 deb_dir, "multi-arch", architecture="i386", version="2.0")1054 deb_dir, "multi-arch", architecture="i386", version="2.0",
1059 self._add_package_to_deb_dir(1055 control_fields={"Multi-Arch": "same"})
1060 deb_dir, "single-arch", architecture="amd64", version="2.0")
1061 self.facade.add_channel_apt_deb("file://%s" % deb_dir, "./")1056 self.facade.add_channel_apt_deb("file://%s" % deb_dir, "./")
1062 self.facade.reload_channels()1057 self.facade.reload_channels()
10631058
1064 multi_arch2 = sorted(1059 multi_arch1, multi_arch2 = sorted(
1065 self.facade.get_packages_by_name("multi-arch"))[1]1060 self.facade.get_packages_by_name("multi-arch"))
1066 single_arch2 = sorted(1061 self.facade.mark_global_upgrade()
1067 self.facade.get_packages_by_name("single-arch"))[1]
1068 self.facade.mark_install(single_arch2)
1069 self.facade._cache.commit = lambda fetch_progress: None1062 self.facade._cache.commit = lambda fetch_progress: None
1070 exception = self.assertRaises(1063 exception = self.assertRaises(
1071 DependencyError, self.facade.perform_changes)1064 DependencyError, self.facade.perform_changes)
1072 self.assertEqual([multi_arch2], exception.packages)1065 self.assertEqual(
1066 sorted([multi_arch1, multi_arch2]), sorted(exception.packages))
1073 changes = [1067 changes = [
1074 (pkg.name, pkg.candidate.version)1068 (pkg.name, pkg.candidate.version)
1075 for pkg in self.facade._cache.get_changes()]1069 for pkg in self.facade._cache.get_changes()]
1076 self.assertEqual(1070 self.assertEqual(
1077 [("multi-arch", "2.0"), ("multi-arch:i386", "2.0"),1071 [("multi-arch", "2.0"), ("multi-arch:i386", "2.0")],
1078 ("single-arch", "2.0")],
1079 sorted(changes))1072 sorted(changes))
10801073
1081 def test_mark_global_upgrade(self):1074 def test_mark_global_upgrade(self):
@@ -1750,9 +1743,9 @@
1750 # was added to python-apt. So if it's not there, it means that1743 # was added to python-apt. So if it's not there, it means that
1751 # multi-arch support isn't available.1744 # multi-arch support isn't available.
1752 skip_message = "multi-arch not supported"1745 skip_message = "multi-arch not supported"
1753 disabled_test_wb_mark_install_upgrade_non_main_arch_dependency_error.skip = (1746 test_wb_mark_install_upgrade_non_main_arch_dependency_error.skip = (
1754 skip_message)1747 skip_message)
1755 disabled_test_wb_mark_install_upgrade_non_main_arch.skip = skip_message1748 test_wb_mark_install_upgrade_non_main_arch.skip = skip_message
17561749
17571750
1758class SmartFacadeTest(LandscapeTest):1751class SmartFacadeTest(LandscapeTest):

Subscribers

People subscribed via source and target branches

to all changes: