3 # Copyright (C) 2014, Ansgar Burchardt <ansgar@debian.org>
5 # This program is free software; you can redistribute it and/or modify
6 # it under the terms of the GNU General Public License as published by
7 # the Free Software Foundation; either version 2 of the License, or
8 # (at your option) any later version.
10 # This program is distributed in the hope that it will be useful,
11 # but WITHOUT ANY WARRANTY; without even the implied warranty of
12 # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
13 # GNU General Public License for more details.
15 # You should have received a copy of the GNU General Public License along
16 # with this program; if not, write to the Free Software Foundation, Inc.,
17 # 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
19 from base_test import DakTestCase
21 from daklib.packagelist import PackageList, InvalidSource
23 class FakeArchitecture(object):
24 def __init__(self, name):
25 self.arch_string = name
27 class FakeSuite(object):
28 def __init__(self, *architectures):
29 self.architectures = [ FakeArchitecture(a) for a in architectures ]
32 'Package-List': '\n libdune-common-doc deb doc optional arch=all\n',
33 'Binary': 'libdune-common-doc\n',
37 'Package-List': '\n libdune-common-dev deb libdevel optional arch=any\n',
38 'Binary': 'libdune-common-dev\n',
42 'Package-List': '\n libdune-common-dev deb libdevel optional arch=any\nlibdune-common-doc deb doc optional arch=all\n',
43 'Binary': 'libdune-common-dev libdune-common-doc\n',
47 'Package-List': '\n libdune-common-dev deb libdevel optional arch=amd64\n',
48 'Binary': 'libdune-common-dev\n',
52 'Package-List': '\n libdune-common-dev deb libdevel optional arch=linux-any\n',
53 'Binary': 'libdune-common-dev\n',
57 'Package-List': '\n libdune-common-dev deb libdevel optional\n',
58 'Binary': 'libdune-common-dev\n',
62 'Binary': 'libdune-common-dev\n',
65 class TestPackageList(DakTestCase):
66 def testArchAll(self):
67 pl = PackageList(source_all)
69 self.assertTrue(pl.has_arch_indep_packages())
70 self.assertFalse(pl.has_arch_dep_packages())
72 suite_amd64 = FakeSuite('amd64')
73 p_amd64 = pl.packages_for_suite(suite_amd64)
74 self.assertEqual(len(p_amd64), 0)
76 suite_all = FakeSuite('all')
77 p_all = pl.packages_for_suite(suite_all)
78 self.assertEqual(len(p_all), 1)
80 suite_all_amd64 = FakeSuite('amd64', 'all')
81 p_all_amd64 = pl.packages_for_suite(suite_all_amd64)
82 self.assertEqual(len(p_all_amd64), 1)
84 def testArchAny(self):
85 pl = PackageList(source_any)
87 self.assertFalse(pl.has_arch_indep_packages())
88 self.assertTrue(pl.has_arch_dep_packages())
90 suite_amd64 = FakeSuite('amd64')
91 p_amd64 = pl.packages_for_suite(suite_amd64)
92 self.assertEqual(len(p_amd64), 1)
94 suite_all = FakeSuite('all')
95 p_all = pl.packages_for_suite(suite_all)
96 self.assertEqual(len(p_all), 0)
98 suite_all_amd64 = FakeSuite('amd64', 'all')
99 p_all_amd64 = pl.packages_for_suite(suite_all_amd64)
100 self.assertEqual(len(p_all_amd64), 1)
102 def testArchAnyAll(self):
103 pl = PackageList(source_all_any)
105 self.assertTrue(pl.has_arch_indep_packages())
106 self.assertTrue(pl.has_arch_dep_packages())
108 suite_amd64 = FakeSuite('amd64')
109 p_amd64 = pl.packages_for_suite(suite_amd64)
110 self.assertEqual(len(p_amd64), 1)
112 suite_amd64_i386 = FakeSuite('amd64', 'i386')
113 p_amd64_i386 = pl.packages_for_suite(suite_amd64_i386)
114 self.assertEqual(len(p_amd64_i386), 1)
116 suite_all = FakeSuite('all')
117 p_all = pl.packages_for_suite(suite_all)
118 self.assertEqual(len(p_all), 1)
120 suite_all_amd64 = FakeSuite('amd64', 'all')
121 p_all_amd64 = pl.packages_for_suite(suite_all_amd64)
122 self.assertEqual(len(p_all_amd64), 2)
124 def testArchAmd64(self):
125 pl = PackageList(source_amd64)
127 self.assertFalse(pl.has_arch_indep_packages())
128 self.assertTrue(pl.has_arch_dep_packages())
130 suite_amd64 = FakeSuite('amd64')
131 p_amd64 = pl.packages_for_suite(suite_amd64)
132 self.assertEqual(len(p_amd64), 1)
134 suite_i386 = FakeSuite('i386')
135 p_i386 = pl.packages_for_suite(suite_i386)
136 self.assertEqual(len(p_i386), 0)
138 def testArchLinuxAny(self):
139 pl = PackageList(source_linuxany)
141 self.assertFalse(pl.has_arch_indep_packages())
142 self.assertTrue(pl.has_arch_dep_packages())
144 suite_amd64 = FakeSuite('amd64')
145 p_amd64 = pl.packages_for_suite(suite_amd64)
146 self.assertEqual(len(p_amd64), 1)
148 suite_i386 = FakeSuite('i386')
149 p_i386 = pl.packages_for_suite(suite_i386)
150 self.assertEqual(len(p_i386), 1)
152 suite_kfreebsdi386 = FakeSuite('kfreebsd-i386')
153 p_kfreebsdi386 = pl.packages_for_suite(suite_kfreebsdi386)
154 self.assertEqual(len(p_kfreebsdi386), 0)
156 def testNoArch(self):
157 pl = PackageList(source_noarch)
159 self.assertIsNone(pl.has_arch_indep_packages())
160 self.assertIsNone(pl.has_arch_dep_packages())
162 suite_amd64 = FakeSuite('amd64')
163 p_amd64 = pl.packages_for_suite(suite_amd64)
164 self.assertEqual(len(p_amd64), 1)
166 def testFallback(self):
167 pl = PackageList(source_fallback)
169 self.assertIsNone(pl.has_arch_indep_packages())
170 self.assertIsNone(pl.has_arch_dep_packages())
172 suite_amd64 = FakeSuite('amd64')
173 p_amd64 = pl.packages_for_suite(suite_amd64)
174 self.assertEqual(len(p_amd64), 1)
176 if __name__ == '__main__':