]> git.donarmstrong.com Git - dak.git/blob - tests/test_packagelist.py
The Binary field of source packages is comma-seperated.
[dak.git] / tests / test_packagelist.py
1 #! /usr/bin/python
2 #
3 # Copyright (C) 2014, Ansgar Burchardt <ansgar@debian.org>
4 #
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.
9 #
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.
14 #
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.
18
19 from base_test import DakTestCase
20 import unittest
21 from daklib.packagelist import PackageList, InvalidSource
22
23 class FakeArchitecture(object):
24     def __init__(self, name):
25         self.arch_string = name
26
27 class FakeSuite(object):
28     def __init__(self, *architectures):
29         self.architectures = [ FakeArchitecture(a) for a in architectures ]
30
31 source_all = {
32     'Package-List': '\n libdune-common-doc deb doc optional arch=all\n',
33     'Binary': 'libdune-common-doc\n',
34     }
35
36 source_any = {
37     'Package-List': '\n libdune-common-dev deb libdevel optional arch=any\n',
38     'Binary': 'libdune-common-dev\n',
39     }
40
41 source_all_any = {
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',
44     }
45
46 source_amd64 = {
47     'Package-List': '\n libdune-common-dev deb libdevel optional arch=amd64\n',
48     'Binary': 'libdune-common-dev\n',
49     }
50
51 source_linuxany = {
52     'Package-List': '\n libdune-common-dev deb libdevel optional arch=linux-any\n',
53     'Binary': 'libdune-common-dev\n',
54     }
55
56 source_noarch = {
57     'Package-List': '\n libdune-common-dev deb libdevel optional\n',
58     'Binary': 'libdune-common-dev\n',
59 }
60
61 source_fallback = {
62     'Binary': 'libdune-common-dev\n',
63 }
64
65 class TestPackageList(DakTestCase):
66     def testArchAll(self):
67         pl = PackageList(source_all)
68
69         self.assertTrue(pl.has_arch_indep_packages())
70         self.assertFalse(pl.has_arch_dep_packages())
71
72         suite_amd64 = FakeSuite('amd64')
73         p_amd64 = pl.packages_for_suite(suite_amd64)
74         self.assertEqual(len(p_amd64), 0)
75
76         suite_all = FakeSuite('all')
77         p_all = pl.packages_for_suite(suite_all)
78         self.assertEqual(len(p_all), 1)
79
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)
83
84     def testArchAny(self):
85         pl = PackageList(source_any)
86
87         self.assertFalse(pl.has_arch_indep_packages())
88         self.assertTrue(pl.has_arch_dep_packages())
89
90         suite_amd64 = FakeSuite('amd64')
91         p_amd64 = pl.packages_for_suite(suite_amd64)
92         self.assertEqual(len(p_amd64), 1)
93
94         suite_all = FakeSuite('all')
95         p_all = pl.packages_for_suite(suite_all)
96         self.assertEqual(len(p_all), 0)
97
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)
101
102     def testArchAnyAll(self):
103         pl = PackageList(source_all_any)
104
105         self.assertTrue(pl.has_arch_indep_packages())
106         self.assertTrue(pl.has_arch_dep_packages())
107
108         suite_amd64 = FakeSuite('amd64')
109         p_amd64 = pl.packages_for_suite(suite_amd64)
110         self.assertEqual(len(p_amd64), 1)
111
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)
115
116         suite_all = FakeSuite('all')
117         p_all = pl.packages_for_suite(suite_all)
118         self.assertEqual(len(p_all), 1)
119
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)
123
124     def testArchAmd64(self):
125         pl = PackageList(source_amd64)
126
127         self.assertFalse(pl.has_arch_indep_packages())
128         self.assertTrue(pl.has_arch_dep_packages())
129
130         suite_amd64 = FakeSuite('amd64')
131         p_amd64 = pl.packages_for_suite(suite_amd64)
132         self.assertEqual(len(p_amd64), 1)
133
134         suite_i386 = FakeSuite('i386')
135         p_i386 = pl.packages_for_suite(suite_i386)
136         self.assertEqual(len(p_i386), 0)
137
138     def testArchLinuxAny(self):
139         pl = PackageList(source_linuxany)
140
141         self.assertFalse(pl.has_arch_indep_packages())
142         self.assertTrue(pl.has_arch_dep_packages())
143
144         suite_amd64 = FakeSuite('amd64')
145         p_amd64 = pl.packages_for_suite(suite_amd64)
146         self.assertEqual(len(p_amd64), 1)
147
148         suite_i386 = FakeSuite('i386')
149         p_i386 = pl.packages_for_suite(suite_i386)
150         self.assertEqual(len(p_i386), 1)
151
152         suite_kfreebsdi386 = FakeSuite('kfreebsd-i386')
153         p_kfreebsdi386 = pl.packages_for_suite(suite_kfreebsdi386)
154         self.assertEqual(len(p_kfreebsdi386), 0)
155
156     def testNoArch(self):
157         pl = PackageList(source_noarch)
158
159         self.assertIsNone(pl.has_arch_indep_packages())
160         self.assertIsNone(pl.has_arch_dep_packages())
161
162         suite_amd64 = FakeSuite('amd64')
163         p_amd64 = pl.packages_for_suite(suite_amd64)
164         self.assertEqual(len(p_amd64), 1)
165
166     def testFallback(self):
167         pl = PackageList(source_fallback)
168
169         self.assertIsNone(pl.has_arch_indep_packages())
170         self.assertIsNone(pl.has_arch_dep_packages())
171
172         suite_amd64 = FakeSuite('amd64')
173         p_amd64 = pl.packages_for_suite(suite_amd64)
174         self.assertEqual(len(p_amd64), 1)
175
176 if __name__ == '__main__':
177     unittest.main()