]> git.decadent.org.uk Git - dak.git/blob - tests/test_packagelist.py
Merge remote-tracking branch 'jcristau/formatone-no-tar-sig'
[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         p = p_all[0]
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'])
91
92     def testArchAny(self):
93         pl = PackageList(source_any)
94
95         self.assertFalse(pl.has_arch_indep_packages())
96         self.assertTrue(pl.has_arch_dep_packages())
97
98         suite_amd64 = FakeSuite('amd64')
99         p_amd64 = pl.packages_for_suite(suite_amd64)
100         self.assertEqual(len(p_amd64), 1)
101
102         suite_all = FakeSuite('all')
103         p_all = pl.packages_for_suite(suite_all)
104         self.assertEqual(len(p_all), 0)
105
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)
109
110     def testArchAnyAll(self):
111         pl = PackageList(source_all_any)
112
113         self.assertTrue(pl.has_arch_indep_packages())
114         self.assertTrue(pl.has_arch_dep_packages())
115
116         suite_amd64 = FakeSuite('amd64')
117         p_amd64 = pl.packages_for_suite(suite_amd64)
118         self.assertEqual(len(p_amd64), 1)
119
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)
123
124         suite_all = FakeSuite('all')
125         p_all = pl.packages_for_suite(suite_all)
126         self.assertEqual(len(p_all), 1)
127
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)
131
132     def testArchAmd64(self):
133         pl = PackageList(source_amd64)
134
135         self.assertFalse(pl.has_arch_indep_packages())
136         self.assertTrue(pl.has_arch_dep_packages())
137
138         suite_amd64 = FakeSuite('amd64')
139         p_amd64 = pl.packages_for_suite(suite_amd64)
140         self.assertEqual(len(p_amd64), 1)
141
142         suite_i386 = FakeSuite('i386')
143         p_i386 = pl.packages_for_suite(suite_i386)
144         self.assertEqual(len(p_i386), 0)
145
146     def testArchLinuxAny(self):
147         pl = PackageList(source_linuxany)
148
149         self.assertFalse(pl.has_arch_indep_packages())
150         self.assertTrue(pl.has_arch_dep_packages())
151
152         suite_amd64 = FakeSuite('amd64')
153         p_amd64 = pl.packages_for_suite(suite_amd64)
154         self.assertEqual(len(p_amd64), 1)
155
156         suite_i386 = FakeSuite('i386')
157         p_i386 = pl.packages_for_suite(suite_i386)
158         self.assertEqual(len(p_i386), 1)
159
160         suite_kfreebsdi386 = FakeSuite('kfreebsd-i386')
161         p_kfreebsdi386 = pl.packages_for_suite(suite_kfreebsdi386)
162         self.assertEqual(len(p_kfreebsdi386), 0)
163
164         suite_source = FakeSuite('source')
165         p_source = pl.packages_for_suite(suite_source)
166         self.assertEqual(len(p_source), 0)
167
168     def testNoArch(self):
169         pl = PackageList(source_noarch)
170
171         self.assertIsNone(pl.has_arch_indep_packages())
172         self.assertIsNone(pl.has_arch_dep_packages())
173
174         suite_amd64 = FakeSuite('amd64')
175         p_amd64 = pl.packages_for_suite(suite_amd64)
176         self.assertEqual(len(p_amd64), 1)
177
178     def testFallback(self):
179         pl = PackageList(source_fallback)
180
181         self.assertIsNone(pl.has_arch_indep_packages())
182         self.assertIsNone(pl.has_arch_dep_packages())
183
184         suite_amd64 = FakeSuite('amd64')
185         p_amd64 = pl.packages_for_suite(suite_amd64)
186         self.assertEqual(len(p_amd64), 1)
187
188 if __name__ == '__main__':
189     unittest.main()