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)
85 self.assertEqual(p.name, 'libdune-common-doc')
86 self.assertEqual(p.type, 'deb')
87 self.assertEqual(p.section, 'doc')
88 self.assertEqual(p.component, 'main')
89 self.assertEqual(p.priority, 'optional')
90 self.assertEqual(p.architectures, ['all'])
92 def testArchAny(self):
93 pl = PackageList(source_any)
95 self.assertFalse(pl.has_arch_indep_packages())
96 self.assertTrue(pl.has_arch_dep_packages())
98 suite_amd64 = FakeSuite('amd64')
99 p_amd64 = pl.packages_for_suite(suite_amd64)
100 self.assertEqual(len(p_amd64), 1)
102 suite_all = FakeSuite('all')
103 p_all = pl.packages_for_suite(suite_all)
104 self.assertEqual(len(p_all), 0)
106 suite_all_amd64 = FakeSuite('amd64', 'all')
107 p_all_amd64 = pl.packages_for_suite(suite_all_amd64)
108 self.assertEqual(len(p_all_amd64), 1)
110 def testArchAnyAll(self):
111 pl = PackageList(source_all_any)
113 self.assertTrue(pl.has_arch_indep_packages())
114 self.assertTrue(pl.has_arch_dep_packages())
116 suite_amd64 = FakeSuite('amd64')
117 p_amd64 = pl.packages_for_suite(suite_amd64)
118 self.assertEqual(len(p_amd64), 1)
120 suite_amd64_i386 = FakeSuite('amd64', 'i386')
121 p_amd64_i386 = pl.packages_for_suite(suite_amd64_i386)
122 self.assertEqual(len(p_amd64_i386), 1)
124 suite_all = FakeSuite('all')
125 p_all = pl.packages_for_suite(suite_all)
126 self.assertEqual(len(p_all), 1)
128 suite_all_amd64 = FakeSuite('amd64', 'all')
129 p_all_amd64 = pl.packages_for_suite(suite_all_amd64)
130 self.assertEqual(len(p_all_amd64), 2)
132 def testArchAmd64(self):
133 pl = PackageList(source_amd64)
135 self.assertFalse(pl.has_arch_indep_packages())
136 self.assertTrue(pl.has_arch_dep_packages())
138 suite_amd64 = FakeSuite('amd64')
139 p_amd64 = pl.packages_for_suite(suite_amd64)
140 self.assertEqual(len(p_amd64), 1)
142 suite_i386 = FakeSuite('i386')
143 p_i386 = pl.packages_for_suite(suite_i386)
144 self.assertEqual(len(p_i386), 0)
146 def testArchLinuxAny(self):
147 pl = PackageList(source_linuxany)
149 self.assertFalse(pl.has_arch_indep_packages())
150 self.assertTrue(pl.has_arch_dep_packages())
152 suite_amd64 = FakeSuite('amd64')
153 p_amd64 = pl.packages_for_suite(suite_amd64)
154 self.assertEqual(len(p_amd64), 1)
156 suite_i386 = FakeSuite('i386')
157 p_i386 = pl.packages_for_suite(suite_i386)
158 self.assertEqual(len(p_i386), 1)
160 suite_kfreebsdi386 = FakeSuite('kfreebsd-i386')
161 p_kfreebsdi386 = pl.packages_for_suite(suite_kfreebsdi386)
162 self.assertEqual(len(p_kfreebsdi386), 0)
164 suite_source = FakeSuite('source')
165 p_source = pl.packages_for_suite(suite_source)
166 self.assertEqual(len(p_source), 0)
168 def testNoArch(self):
169 pl = PackageList(source_noarch)
171 self.assertIsNone(pl.has_arch_indep_packages())
172 self.assertIsNone(pl.has_arch_dep_packages())
174 suite_amd64 = FakeSuite('amd64')
175 p_amd64 = pl.packages_for_suite(suite_amd64)
176 self.assertEqual(len(p_amd64), 1)
178 def testFallback(self):
179 pl = PackageList(source_fallback)
181 self.assertIsNone(pl.has_arch_indep_packages())
182 self.assertIsNone(pl.has_arch_dep_packages())
184 suite_amd64 = FakeSuite('amd64')
185 p_amd64 = pl.packages_for_suite(suite_amd64)
186 self.assertEqual(len(p_amd64), 1)
188 if __name__ == '__main__':