source: yum/trunk/test/depsolvetests.py@ 1569

Last change on this file since 1569 was 516, checked in by Yuri Dario, 11 years ago

yum: update trunk to 3.4.3.

  • Property svn:eol-style set to native
File size: 45.3 KB
Line 
1import unittest
2from testbase import *
3from rpmUtils import arch
4
5import rpmUtils.arch
6
7class DepsolveTests(DepsolveTests):
8 def testEmpty(self):
9 po = FakePackage('zsh', '1', '1', None, 'i386')
10 self.tsInfo.addInstall(po)
11 self.tsInfo.remove(po.pkgtup)
12 self.assertEquals('empty', *self.resolveCode())
13
14 def testInstallSinglePackageNoRequires(self):
15 po = FakePackage('zsh', '1', '1', None, 'i386')
16 self.tsInfo.addInstall(po)
17
18 self.assertEquals('ok', *self.resolveCode())
19 self.assertResult((po,))
20
21 def testInstallSinglePackageRequireNotProvided(self):
22 po = FakePackage('zsh', '1', '1', None, 'i386')
23 po.addRequires('zip', None, (None, None, None))
24 self.tsInfo.addInstall(po)
25
26 self.assertEquals('err', *self.resolveCode())
27
28 def testInstallSinglePackageRequireInstalled(self):
29 po = FakePackage('zsh', '1', '1', None, 'i386')
30 po.addRequires('zip', None, (None, None, None))
31 self.tsInfo.addInstall(po)
32
33 ipo = FakePackage('zip', '1', '1', None, 'i386')
34 self.rpmdb.addPackage(ipo)
35
36 self.assertEquals('ok', *self.resolveCode())
37 self.assertResult((po, ipo))
38
39 def testInstallSinglePackageRequireInstalledRequireNotProvided(self):
40 po = FakePackage('zsh', '1', '1', None, 'i386')
41 po.addRequires('zip', None, (None, None, None))
42 self.tsInfo.addInstall(po)
43
44 ipo = FakePackage('zip', '1', '2', None, 'i386')
45 po.addRequires('zap', None, (None, None, None))
46 self.rpmdb.addPackage(ipo)
47
48 self.assertEquals('err', *self.resolveCode())
49
50 def testInstallSinglePackageRequireInstalledRequireInstall(self):
51 po = FakePackage('zsh', '1', '1', None, 'i386')
52 po.addRequires('zip', None, (None, None, None))
53 self.tsInfo.addInstall(po)
54 po2 = FakePackage('zap', '1', '2', None, 'i386')
55 self.tsInfo.addInstall(po2)
56
57 ipo = FakePackage('zip', '1', '3', None, 'i386')
58 po.addRequires('zap', None, (None, None, None))
59 self.rpmdb.addPackage(ipo)
60
61 self.assertEquals('ok', *self.resolveCode())
62 self.assertResult((po, po2, ipo))
63
64
65 def testInstallSinglePackageRequireVer1NotProvided(self):
66 po = FakePackage('zsh', '1', '1', None, 'i386')
67 po.addRequires('zip', 'EQ', (None, '1.3', '2'))
68 self.tsInfo.addInstall(po)
69
70 ipo = FakePackage('zip', '1.0', '2', None, 'i386')
71 self.rpmdb.addPackage(ipo)
72
73 self.assertEquals('err', *self.resolveCode())
74
75 def testInstallSinglePackageRequireVer1Installed(self):
76 po = FakePackage('zsh', '1', '1', None, 'i386')
77 po.addRequires('zip', 'EQ', (None, '1.3', '2'))
78 self.tsInfo.addInstall(po)
79
80 ipo = FakePackage('zip', '1.3', '2', None, 'i386')
81 self.rpmdb.addPackage(ipo)
82
83 self.assertEquals('ok', *self.resolveCode())
84 self.assertResult((po, ipo))
85
86 def testInstallSinglePackageRequireVer2NotProvided(self):
87 po = FakePackage('zsh', '1', '1', None, 'i386')
88 po.addRequires('zip', 'EQ', (None, '1.3', '4'))
89 self.tsInfo.addInstall(po)
90
91 ipo = FakePackage('zip', '1.3', '2', None, 'i386')
92 self.rpmdb.addPackage(ipo)
93
94 self.assertEquals('err', *self.resolveCode())
95
96 def testInstallSinglePackageRequireVer2Installed(self):
97 po = FakePackage('zsh', '1', '1', None, 'i386')
98 po.addRequires('zip', 'EQ', (None, '1.3', '4'))
99 self.tsInfo.addInstall(po)
100
101 ipo = FakePackage('zip', '1.3', '4', None, 'i386')
102 self.rpmdb.addPackage(ipo)
103
104 self.assertEquals('ok', *self.resolveCode())
105 self.assertResult((po, ipo))
106
107 def testInstallSinglePackageRequireVer3NotProvided(self):
108 po = FakePackage('zsh', '1', '1', None, 'i386')
109 po.addRequires('zip', 'GE', ('1', '1.3', '4'))
110 self.tsInfo.addInstall(po)
111
112 ipo = FakePackage('zip', '1.3', '4', '0', 'i386')
113 self.rpmdb.addPackage(ipo)
114
115 self.assertEquals('err', *self.resolveCode())
116
117 def testInstallSinglePackageRequireVer3Installed(self):
118 po = FakePackage('zsh', '1', '1', None, 'i386')
119 po.addRequires('zip', 'GE', ('2', '1.3', '4'))
120 self.tsInfo.addInstall(po)
121
122 ipo = FakePackage('zip', '1.3', '4', '2', 'i386')
123 self.rpmdb.addPackage(ipo)
124
125 self.assertEquals('ok', *self.resolveCode())
126 self.assertResult((po, ipo))
127
128 def testInstallSinglePackageRequireVer4NotProvided(self):
129 po = FakePackage('zsh', '1', '1', None, 'i386')
130 po.addRequires('zip', 'LT', ('2', '1.3', '4'))
131 self.tsInfo.addInstall(po)
132
133 ipo = FakePackage('zip', '1.3', '4', '2', 'i386')
134 self.rpmdb.addPackage(ipo)
135
136 self.assertEquals('err', *self.resolveCode())
137
138 def testInstallSinglePackageRequireVer4_1Installed(self):
139 po = FakePackage('zsh', '1', '1', None, 'i386')
140 po.addRequires('zip', 'LT', ('2', '1.3', '4'))
141 self.tsInfo.addInstall(po)
142
143 ipo = FakePackage('zip', '1.0', '4', '2', 'i386')
144 self.rpmdb.addPackage(ipo)
145
146 self.assertEquals('ok', *self.resolveCode())
147 self.assertResult((po, ipo))
148 def testInstallSinglePackageRequireVer4_2Installed(self):
149 po = FakePackage('zsh', '1', '1', None, 'i386')
150 po.addRequires('zip', 'LT', ('2', '1.3', '4'))
151 self.tsInfo.addInstall(po)
152
153 ipo = FakePackage('zip', '1.3', '3', '2', 'i386')
154 self.rpmdb.addPackage(ipo)
155
156 self.assertEquals('ok', *self.resolveCode())
157 self.assertResult((po, ipo))
158 def testInstallSinglePackageRequireVer4_3Installed(self):
159 po = FakePackage('zsh', '1', '1', None, 'i386')
160 po.addRequires('zip', 'LT', ('2', '1.3', '4'))
161 self.tsInfo.addInstall(po)
162
163 ipo = FakePackage('zip', '1.3', '4', None, 'i386')
164 self.rpmdb.addPackage(ipo)
165
166 self.assertEquals('ok', *self.resolveCode())
167 self.assertResult((po, ipo))
168 def testInstallSinglePackageRequireVer4_4Installed(self):
169 po = FakePackage('zsh', '1', '1', None, 'i386')
170 po.addRequires('zip', 'LT', ('2', '1.3', '4'))
171 self.tsInfo.addInstall(po)
172
173 ipo = FakePackage('zip', '1.3', '4', '1', 'i386')
174 self.rpmdb.addPackage(ipo)
175
176 self.assertEquals('ok', *self.resolveCode())
177 self.assertResult((po, ipo))
178 def testInstallSinglePackageRequireVer4_5Installed(self):
179 po = FakePackage('zsh', '1', '1', None, 'i386')
180 po.addRequires('zip', 'LT', ('2', '1.3', '4'))
181 self.tsInfo.addInstall(po)
182
183 ipo = FakePackage('zip', '0.3', '4', '2', 'i386')
184 self.rpmdb.addPackage(ipo)
185
186 self.assertEquals('ok', *self.resolveCode())
187 self.assertResult((po, ipo))
188
189 def testInstallSinglePackageRequireXtraBadVer(self):
190 po = FakePackage('zsh', '1', '1', None, 'i386')
191 po.addRequires('zip', 'EQ', ('2', '1.3', '4'))
192 po.addRequires('zap', 'EQ', ('2', '1.3', '4'))
193 self.tsInfo.addInstall(po)
194
195 ipo = FakePackage('zip', '1.3', '4', '2', 'i386')
196 self.rpmdb.addPackage(ipo)
197
198 xpo = FakePackage('zap', '1.3', '4', '0', 'i386')
199 self.xsack.addPackage(xpo)
200
201 self.assertEquals('err', *self.resolveCode())
202
203 def testInstallSinglePackageRequireXtra(self):
204 po = FakePackage('zsh', '1', '1', None, 'i386')
205 po.addRequires('zip', 'EQ', ('2', '1.3', '4'))
206 po.addRequires('zap', 'EQ', ('4', '2.6', '8'))
207 self.tsInfo.addInstall(po)
208
209 ipo = FakePackage('zip', '1.3', '4', '2', 'i386')
210 self.rpmdb.addPackage(ipo)
211
212 xpo = FakePackage('zap', '2.6', '8', '4', 'i386')
213 self.xsack.addPackage(xpo)
214
215 self.assertEquals('ok', *self.resolveCode())
216 self.assertResult((po, ipo, xpo))
217
218 def testInstallSinglePackageRequireInstalledRequireXtra(self):
219 po = FakePackage('zsh', '1', '1', None, 'i386')
220 po.addRequires('zip', 'EQ', ('2', '1.3', '4'))
221 self.tsInfo.addInstall(po)
222
223 ipo = FakePackage('zip', '1.3', '4', '2', 'i386')
224 ipo.addRequires('zap', 'EQ', ('4', '2.6', '8'))
225 self.rpmdb.addPackage(ipo)
226
227 xpo = FakePackage('zap', '2.6', '8', '4', 'i386')
228 self.xsack.addPackage(xpo)
229
230 self.assertEquals('ok', *self.resolveCode())
231 self.assertResult((po, ipo))
232
233 def testInstallSinglePackageRequireUpgradeRequireXtraErr(self):
234 po = FakePackage('zsh', '1', '1', None, 'i386')
235 po.addRequires('zip', 'EQ', ('4', '2.6', '8'))
236 self.tsInfo.addInstall(po)
237
238 ipo = FakePackage('zip', '1.3', '4', '2', 'i386')
239 ipo.addRequires('zap', 'EQ', ('2', '1.3', '3'))
240 self.rpmdb.addPackage(ipo)
241
242 xpo = FakePackage('zip', '2.6', '8', '4', 'i386')
243 xpo.addRequires('zap', 'EQ', ('2', '1.3', '4'))
244 self.xsack.addPackage(xpo)
245 xpo = FakePackage('zap', '1.3', '4', '2', 'i386')
246 xpo.addRequires('zsh', 'EQ', ('2', '4', '8'))
247 self.xsack.addPackage(xpo)
248
249 self.assertEquals('err', *self.resolveCode())
250
251 def testInstallSinglePackageRequireUpgradeRequireXtraOk(self):
252 po = FakePackage('zsh', '1', '1', None, 'i386')
253 po.addRequires('zip', 'EQ', ('4', '2.6', '8'))
254 self.tsInfo.addInstall(po)
255
256 ipo = FakePackage('zip', '1.3', '4', '2', 'i386')
257 ipo.addRequires('zap', 'EQ', ('2', '1.3', '3'))
258 self.rpmdb.addPackage(ipo)
259
260 xpo = FakePackage('zip', '2.6', '8', '4', 'i386')
261 xpo.addRequires('zap', 'EQ', ('2', '1.3', '4'))
262 self.xsack.addPackage(xpo)
263 xpo2 = FakePackage('zap', '1.3', '4', '2', 'i386')
264 self.xsack.addPackage(xpo2)
265
266 self.assertEquals('ok', *self.resolveCode())
267 self.assertResult((po, xpo, xpo2))
268
269 def testInstallSinglePackageRequireMultiXtra(self):
270 po = FakePackage('zsh', '1', '1', None, 'i386')
271 po.addRequires('zip', 'EQ', ('4', '2.6', '8'))
272 self.tsInfo.addInstall(po)
273
274 xpo = FakePackage('zip', '2.6', '8', '4', 'i386')
275 xpo.addRequires('zap', 'EQ', ('2', '1.3', '4'))
276 self.xsack.addPackage(xpo)
277
278 xpo2 = FakePackage('zap', '1.3', '4', '2', 'i386')
279 self.xsack.addPackage(xpo2)
280
281 self.assertEquals('ok', *self.resolveCode())
282 self.assertResult((po, xpo, xpo2))
283
284 def testInstallSinglePackageRequireInstalledMultiLib(self):
285 po = FakePackage('zsh', '1', '1', None, 'x86_64')
286 po.addRequires('zip', None, (None, None, None))
287 self.tsInfo.addInstall(po)
288
289 ipo = FakePackage('zip', '1', '3', None, 'i386')
290 self.rpmdb.addPackage(ipo)
291
292 xpo = FakePackage('zip', '1', '3', None, 'x86_64')
293 self.xsack.addPackage(xpo)
294
295 self.assertEquals('ok', *self.resolveCode())
296 self.assertResult((po, ipo))
297
298 def testInstallSinglePackageRequireXtra1MultiLib(self):
299 po = FakePackage('zsh', '1', '1', None, 'x86_64')
300 po.addRequires('zip', None, (None, None, None))
301 self.tsInfo.addInstall(po)
302
303 xpo = FakePackage('zip', '1', '3', None, 'i386')
304 self.xsack.addPackage(xpo)
305 self.assertEquals('ok', *self.resolveCode())
306 self.assertResult((po, xpo))
307
308 def testInstallSinglePackageRequireXtra2_64MultiLib(self):
309 po = FakePackage('zsh', '1', '1', None, 'x86_64')
310 po.addRequires('zip', None, (None, None, None))
311 self.tsInfo.addInstall(po)
312
313 xpo = FakePackage('zip', '1', '3', None, 'i386')
314 self.xsack.addPackage(xpo)
315 xpo64 = FakePackage('zip', '1', '3', None, 'x86_64')
316 self.xsack.addPackage(xpo64)
317
318 self.assertEquals('ok', *self.resolveCode())
319 self.assertResult((po, xpo64))
320
321 def testInstallSinglePackageRequireXtra2_32MultiLib(self):
322 po = FakePackage('zsh', '1', '1', None, 'i386')
323 po.addRequires('zip', None, (None, None, None))
324 self.tsInfo.addInstall(po)
325
326 xpo = FakePackage('zip', '1', '3', None, 'i386')
327 self.xsack.addPackage(xpo)
328 xpo64 = FakePackage('zip', '1', '3', None, 'x86_64')
329 self.xsack.addPackage(xpo64)
330
331 self.assertEquals('ok', *self.resolveCode())
332 self.assertResult((po, xpo64))
333
334 def testUpdateSinglePackage(self):
335 ipo = FakePackage('zsh', '1', '1', None, 'i386')
336 self.rpmdb.addPackage(ipo)
337
338 po = FakePackage('zsh', '1', '3', None, 'i386')
339 self.tsInfo.addUpdate(po, oldpo=ipo)
340
341 self.assertEquals('ok', *self.resolveCode())
342 self.assertResult((po,))
343
344 def testUpdateForDependency(self):
345 po = FakePackage('zsh', '1', '1', '0', 'i386')
346 po.addRequires('zip', 'EQ', ('0', '2', '1'))
347 self.tsInfo.addInstall(po)
348
349 installedpo = FakePackage('zip', '1', '1', '0', 'i386')
350 self.rpmdb.addPackage(installedpo)
351
352 updatepo = FakePackage('zip', '2', '1', '0', 'i386')
353 self.xsack.addPackage(updatepo)
354
355 self.assertEquals('ok', *self.resolveCode())
356 self.assertResult((po, updatepo))
357
358 def testUpdateSplitPackage(self):
359 po = FakePackage('zsh', '1', '1', '0', 'i386')
360 po.addRequires('libzip', 'EQ', ('0', '2', '1'))
361 self.tsInfo.addInstall(po)
362
363 installedpo = FakePackage('zip', '1', '1', '0', 'i386')
364 installedpo.addProvides('libzip', 'EQ', ('0', '1', '1'))
365 self.rpmdb.addPackage(installedpo)
366
367 updatepo = FakePackage('zip', '2', '1', '0', 'i386')
368 updatepo.addRequires('zip-libs', 'EQ', ('0', '2', '1'))
369 self.xsack.addPackage(updatepo)
370 updatepo2 = FakePackage('zip-libs', '2', '1', '0', 'i386')
371 updatepo2.addProvides('libzip', 'EQ', ('0', '2', '1'))
372 self.xsack.addPackage(updatepo2)
373
374 self.assertEquals('ok', *self.resolveCode())
375 #self.assertResult((po, updatepo, updatepo2)) # XXX obsolete needed?
376 self.assertResult((po, installedpo, updatepo2))
377
378 def testUpdateSinglePackageNewRequires(self):
379 ipo = FakePackage('zsh', '1', '1', None, 'i386')
380 self.rpmdb.addPackage(ipo)
381
382 po = FakePackage('zsh', '1', '3', None, 'i386')
383 po.addRequires('zip', None, (None, None, None))
384 self.tsInfo.addUpdate(po, oldpo=ipo)
385
386 xpo = FakePackage('zip', '1', '3', None, 'x86_64')
387 self.xsack.addPackage(xpo)
388
389 self.assertEquals('ok', *self.resolveCode())
390 self.assertResult((po, xpo))
391
392 def testUpdateSinglePackageOldRequires(self):
393 ipo = FakePackage('zsh', '1', '1', None, 'i386')
394 ipo.addRequires('zip', None, (None, None, None))
395 self.rpmdb.addPackage(ipo)
396
397 xpo = FakePackage('zip', '1', '3', None, 'x86_64')
398 self.rpmdb.addPackage(xpo)
399
400 po = FakePackage('zsh', '1', '3', None, 'i386')
401 po.addRequires('zip', None, (None, None, None))
402 self.tsInfo.addUpdate(po, oldpo=ipo)
403
404 self.assertEquals('ok', *self.resolveCode())
405 self.assertResult((po, xpo))
406
407 def testUpdateSinglePackageOldRequiresGone(self):
408 ipo = FakePackage('zsh', '1', '1', None, 'i386')
409 ipo.addRequires('zip', None, (None, None, None))
410 self.rpmdb.addPackage(ipo)
411
412 xpo = FakePackage('zip', '1', '3', None, 'x86_64')
413 self.rpmdb.addPackage(xpo)
414
415 po = FakePackage('zsh', '1', '3', None, 'i386')
416 self.tsInfo.addUpdate(po, oldpo=ipo)
417
418 self.assertEquals('ok', *self.resolveCode())
419 self.assertResult((po, xpo))
420
421 def testUpdateSinglePackageObsoletesOldRequirement(self):
422 ipo = FakePackage('zsh', '1', '1', None, 'i386')
423 ipo.addRequires('zip', None, (None, None, None))
424 self.rpmdb.addPackage(ipo)
425
426 opo = FakePackage('zip', '1', '1', None, 'i386')
427 self.rpmdb.addPackage(opo)
428
429 po = FakePackage('zsh', '1', '3', None, 'i386')
430 ipo.addObsoletes('zip', None, (None, None, None))
431
432 self.tsInfo.addUpdate(po, oldpo=ipo)
433
434 self.tsInfo.addObsoleting(po, opo)
435 self.tsInfo.addObsoleted(opo, po)
436
437 self.assertEquals('ok', *self.resolveCode())
438 self.assertResult((po,))
439
440 def testUpdateForConflict(self):
441 po = FakePackage('zsh', '1', '1', '0', 'i386')
442 po.addConflicts('zip', 'LE', ('0', '1', '1'))
443 self.tsInfo.addInstall(po)
444
445 installedpo = FakePackage('zip', '1', '1', '0', 'i386')
446 self.rpmdb.addPackage(installedpo)
447
448 updatepo = FakePackage('zip', '2', '1', '0', 'i386')
449 self.xsack.addPackage(updatepo)
450
451 self.assertEquals('ok', *self.resolveCode())
452 self.assertResult((po, updatepo))
453
454 def testUpdateForConflict2(self):
455 po = FakePackage('zsh', '1', '1', '0', 'i386')
456 self.tsInfo.addInstall(po)
457
458 installedpo = FakePackage('zip', '1', '1', '0', 'i386')
459 installedpo.addConflicts('zsh', 'LE', ('0', '1', '1'))
460 self.rpmdb.addPackage(installedpo)
461
462 updatepo = FakePackage('zip', '2', '1', '0', 'i386')
463 self.xsack.addPackage(updatepo)
464
465 self.assertEquals('ok', *self.resolveCode())
466 self.assertResult((po, updatepo))
467
468 def testUpdateForConflictProvide(self):
469 po = FakePackage('zsh', '1', '1', '0', 'i386')
470 po.addConflicts('zippy', 'LE', ('0', '1', '1'))
471 self.tsInfo.addInstall(po)
472
473 installedpo = FakePackage('zip', '1', '1', '0', 'i386')
474 installedpo.addProvides('zippy', 'EQ', ('0', '1', '1'))
475 self.rpmdb.addPackage(installedpo)
476
477 updatepo = FakePackage('zip', '2', '1', '0', 'i386')
478 self.xsack.addPackage(updatepo)
479
480 self.assertEquals('ok', *self.resolveCode())
481 self.assertResult((po, updatepo))
482
483 def testUpdateForConflictProvide2(self):
484 po = FakePackage('zsh', '1', '1', '0', 'i386')
485 po.addProvides('zippy', 'EQ', ('0', '2', '1'))
486 self.tsInfo.addInstall(po)
487
488 installedpo = FakePackage('zip', '1', '1', '0', 'i386')
489 installedpo.addConflicts('zippy', 'GT', ('0', '1', '1'))
490 installedpo.addConflicts('zippy', 'LT', ('0', '1', '1'))
491 self.rpmdb.addPackage(installedpo)
492
493 updatepo = FakePackage('zip', '2', '1', '0', 'i386')
494 updatepo.addConflicts('zippy', 'GT', ('0', '2', '1'))
495 updatepo.addConflicts('zippy', 'LT', ('0', '2', '1'))
496 self.xsack.addPackage(updatepo)
497
498 self.assertEquals('ok', *self.resolveCode())
499 self.assertResult((po, updatepo))
500
501 def testEraseSinglePackage(self):
502 po = FakePackage('zsh', '1', '1', '0', 'i386')
503 self.rpmdb.addPackage(po)
504 self.tsInfo.addErase(po)
505
506 self.assertEquals('ok', *self.resolveCode())
507 self.assertResult(())
508
509 def testEraseSinglePackageRequiredByOneInstalled(self):
510 po = FakePackage('zippy', '1', '1', '0', 'i386')
511 po.addRequires('zsh', None, (None, None, None))
512 self.rpmdb.addPackage(po)
513
514 po = FakePackage('zsh', '1', '1', '0', 'i386')
515 self.rpmdb.addPackage(po)
516 self.tsInfo.addErase(po)
517
518 self.assertEquals('ok', *self.resolveCode())
519 self.assertResult(())
520
521 def _setup_FakeMultilibReqs(self):
522 po = FakePackage('abcd', '1', '0', '0', 'x86_64')
523 po.addRequires('libxyz-1.so.0(64bit)', None, (None, None, None))
524 po.addRequires('libxyz-1.so.0', None, (None, None, None))
525 po.addRequires('libxyz-1.so.0(XYZ_1.1)(64bit)', None, (None,None,None))
526 po.addRequires('libxyz-1.so.0(XYZ_1.2)(64bit)', None, (None,None,None))
527 self.tsInfo.addInstall(po)
528
529 xpo1 = FakePackage('libxyz', '1', '1', '0', 'x86_64')
530 xpo1.addProvides('libxyz-1.so.0(64bit)', None,(None,None,None))
531 xpo1.addProvides('libxyz-1.so.0(XYZ_1.1)(64bit)', None,(None,None,None))
532 self.xsack.addPackage(xpo1)
533 ipo1 = FakePackage('libxyz', '1', '1', '0', 'i386')
534 ipo1.addProvides('libxyz-1.so.0', None,(None,None,None))
535 ipo1.addProvides('libxyz-1.so.0(XYZ_1.1)', None,(None,None,None))
536 self.xsack.addPackage(ipo1)
537 xpo2 = FakePackage('libxyz', '1', '2', '0', 'x86_64')
538 xpo2.addProvides('libxyz-1.so.0(64bit)', None,(None,None,None))
539 xpo2.addProvides('libxyz-1.so.0(XYZ_1.1)(64bit)', None,(None,None,None))
540 xpo2.addProvides('libxyz-1.so.0(XYZ_1.2)(64bit)', None,(None,None,None))
541 self.xsack.addPackage(xpo2)
542 ipo2 = FakePackage('libxyz', '1', '2', '0', 'i386')
543 ipo2.addProvides('libxyz-1.so.0', None,(None,None,None))
544 ipo2.addProvides('libxyz-1.so.0(XYZ_1.1)', None,(None,None,None))
545 ipo2.addProvides('libxyz-1.so.0(XYZ_1.2)', None,(None,None,None))
546 self.xsack.addPackage(ipo2)
547
548 return (po, xpo1, xpo2, ipo1, ipo2)
549
550 def testFakeMultilibReqsInstall(self):
551 (po, xpo1, xpo2, ipo1, ipo2) = self._setup_FakeMultilibReqs()
552
553 self.assertEquals('ok', *self.resolveCode())
554 self.assertResult((po, xpo2, ipo2))
555
556 def testFakeMultilibReqsUpdate1a(self):
557 (po, xpo1, xpo2, ipo1, ipo2) = self._setup_FakeMultilibReqs()
558 self.rpmdb.addPackage(xpo1)
559
560 self.assertEquals('ok', *self.resolveCode())
561 self.assertResult((po, xpo2, ipo2))
562
563 def testFakeMultilibReqsUpdate1b(self):
564 (po, xpo1, xpo2, ipo1, ipo2) = self._setup_FakeMultilibReqs()
565 self.rpmdb.addPackage(xpo1)
566 # This doesn't suffer from the testFakeMultilibReqsUpdate1a()
567 # problem because we have 2 32bit deps. ... and so the second one
568 # wins.
569 po.addRequires('libxyz-1.so.0(XYZ_1.1)', None, (None, None, None))
570
571 self.assertEquals('ok', *self.resolveCode())
572 self.assertResult((po, xpo2, ipo2))
573
574 def testFakeMultilibReqsUpdate2(self):
575 (po, xpo1, xpo2, ipo1, ipo2) = self._setup_FakeMultilibReqs()
576 self.rpmdb.addPackage(ipo1)
577
578 self.assertEquals('ok', *self.resolveCode())
579 self.assertResult((po, xpo2, ipo2))
580
581 def testFakeMultilibReqsUpdate3(self):
582 (po, xpo1, xpo2, ipo1, ipo2) = self._setup_FakeMultilibReqs()
583 self.rpmdb.addPackage(xpo1)
584 self.rpmdb.addPackage(ipo1)
585
586 self.assertEquals('ok', *self.resolveCode())
587 self.assertResult((po, xpo2, ipo2))
588
589 def _setup_CompareProviders(self, name="libbar", arch="x86_64"):
590 po = FakePackage('abcd', arch=arch)
591 po.addRequires('libxyz-1.so.0(64bit)', None, (None, None, None))
592 self.tsInfo.addInstall(po)
593
594 po1 = FakePackage('libfoo', arch=arch)
595 po1.addProvides('libxyz-1.so.0(64bit)', None,(None,None,None))
596 self.xsack.addPackage(po1)
597 po2 = FakePackage(name, arch=arch)
598 po2.addProvides('libxyz-1.so.0(64bit)', None,(None,None,None))
599 self.xsack.addPackage(po2)
600 return (po, po1, po2)
601
602 def testCompareProvidersSameLen1_64(self):
603 (po, po1, po2) = self._setup_CompareProviders()
604
605 self.assertEquals('ok', *self.resolveCode())
606 self.assertResult((po, po1))
607
608 def testCompareProvidersSameLen1_noarch(self):
609 (po, po1, po2) = self._setup_CompareProviders(arch='noarch')
610
611 self.assertEquals('ok', *self.resolveCode())
612 self.assertResult((po,), (po1,po2))
613
614 def testCompareProvidersSameLen2_64(self):
615 # Make sure they are still ok, the other way around
616 po = FakePackage('abcd', arch='x86_64')
617 po.addRequires('libxyz-1.so.0(64bit)', None, (None, None, None))
618 self.tsInfo.addInstall(po)
619
620 po2 = FakePackage('libbar', arch='x86_64')
621 po2.addProvides('libxyz-1.so.0(64bit)', None,(None,None,None))
622 self.xsack.addPackage(po2)
623 po1 = FakePackage('libfoo', arch='x86_64')
624 po1.addProvides('libxyz-1.so.0(64bit)', None,(None,None,None))
625 self.xsack.addPackage(po1)
626
627 self.assertEquals('ok', *self.resolveCode())
628 self.assertResult((po, po1))
629
630 def testCompareProvidersSameLen2_noarch(self):
631 # Make sure they are still ok, the other way around
632 po = FakePackage('abcd', arch='noarch')
633 po.addRequires('libxyz-1.so.0', None, (None, None, None))
634 self.tsInfo.addInstall(po)
635
636 po2 = FakePackage('libbar', arch='noarch')
637 po2.addProvides('libxyz-1.so.0', None,(None,None,None))
638 self.xsack.addPackage(po2)
639 po1 = FakePackage('libfoo', arch='noarch')
640 po1.addProvides('libxyz-1.so.0', None,(None,None,None))
641 self.xsack.addPackage(po1)
642
643 self.assertEquals('ok', *self.resolveCode())
644 self.assertResult((po,), (po1,po2))
645
646 def testCompareProvidersSameLen2_noarch_to_64_1(self):
647 # Make sure they are still ok, the other way around
648
649 po = FakePackage('abcd', arch='noarch')
650 po.addRequires('libxyz-1.so.0', None, (None, None, None))
651 self.tsInfo.addInstall(po)
652
653 po2 = FakePackage('libbar', arch='i386')
654 po2.addProvides('libxyz-1.so.0', None,(None,None,None))
655 self.xsack.addPackage(po2)
656 po1 = FakePackage('libfoo', arch='x86_64')
657 po1.addProvides('libxyz-1.so.0', None,(None,None,None))
658 self.xsack.addPackage(po1)
659
660 self.assertEquals('ok', *self.resolveCode())
661 self.assertResult((po, po1))
662
663
664 def testCompareProvidersSameLen2_noarch_to_64_2(self):
665 # Make sure they are still ok, the other way around
666
667 po = FakePackage('abcd', arch='noarch')
668 po.addRequires('libxyz-1.so.0', None, (None, None, None))
669 self.tsInfo.addInstall(po)
670
671 po2 = FakePackage('libbar', arch='x86_64')
672 po2.addProvides('libxyz-1.so.0', None,(None,None,None))
673 self.xsack.addPackage(po2)
674 po1 = FakePackage('libfoo', arch='i386')
675 po1.addProvides('libxyz-1.so.0', None,(None,None,None))
676 self.xsack.addPackage(po1)
677
678 self.assertEquals('ok', *self.resolveCode())
679 self.assertResult((po, po2))
680
681
682 def testCompareProvidersDiffLen_64(self):
683 (po, po1, po2) = self._setup_CompareProviders(name='libbarf')
684
685 self.assertEquals('ok', *self.resolveCode())
686 self.assertResult((po, po1))
687
688 def testCompareProvidersDiffLen_noarch(self):
689 (po, po1, po2) = self._setup_CompareProviders(name='libbarf',
690 arch='noarch')
691
692 self.assertEquals('ok', *self.resolveCode())
693 self.assertResult((po, po1))
694
695 def testCompareProvidersSrcRpm_64(self):
696 (po, po1, po2) = self._setup_CompareProviders(name='libbarf')
697 po.sourcerpm = "abcd.src.rpm"
698 po2.sourcerpm = "abcd.src.rpm"
699
700 self.assertEquals('ok', *self.resolveCode())
701 self.assertResult((po, po2))
702
703 def testCompareProvidersSrcRpm_noarch(self):
704 (po, po1, po2) = self._setup_CompareProviders(name='libbarf',
705 arch='noarch')
706 po.sourcerpm = "abcd.src.rpm"
707 po2.sourcerpm = "abcd.src.rpm"
708
709 self.assertEquals('ok', *self.resolveCode())
710 self.assertResult((po, po2))
711
712 def testCompareProvidersPrefix_64(self):
713 (po, po1, po2) = self._setup_CompareProviders(name='abcd-libbarf')
714
715 self.assertEquals('ok', *self.resolveCode())
716 self.assertResult((po, po2))
717
718 def testCompareProvidersPrefix_noarch(self):
719 (po, po1, po2) = self._setup_CompareProviders(name='abcd-libbarf',
720 arch='noarch')
721
722 self.assertEquals('ok', *self.resolveCode())
723 self.assertResult((po, po2))
724
725 def testCompareProvidersArchVSLen(self):
726 po = FakePackage('abcd', arch='i386')
727 po.addRequires('foo', None, (None, None, None))
728 self.tsInfo.addInstall(po)
729
730 po1 = FakePackage('foo-bigger', arch='i686')
731 po1.addProvides('foo', None,(None,None,None))
732 po2 = FakePackage('foo-big', arch='i586')
733 po2.addProvides('foo', None,(None,None,None))
734 po3 = FakePackage('foo-xen', arch='i586')
735 po3.addProvides('foo', None,(None,None,None))
736 self.xsack.addPackage(po1)
737 self.xsack.addPackage(po2)
738 self.xsack.addPackage(po3)
739
740 self.assertEquals('ok', *self.resolveCode())
741 self.assertResult((po, po1))
742
743 def testSelfObsInstall(self):
744 xpo = FakePackage('abcd', version='2', arch='noarch')
745 xpo.addObsoletes('abcd-Foo', None, (None, None, None))
746 xpo.addProvides('abcd-Foo', None, (None, None, None))
747 self.tsInfo.addInstall(xpo)
748
749 self.assertEquals('ok', *self.resolveCode())
750 self.assertResult((xpo,))
751
752 def testSelfObsUpgrade(self):
753 ipo = FakePackage('abcd', arch='noarch')
754 ipo.addObsoletes('abcd-Foo', None, (None, None, None))
755 ipo.addProvides('abcd-Foo', None, (None, None, None))
756 self.rpmdb.addPackage(ipo)
757
758 xpo = FakePackage('abcd', version='2', arch='noarch')
759 xpo.addObsoletes('abcd-Foo', None, (None, None, None))
760 xpo.addProvides('abcd-Foo', None, (None, None, None))
761 self.tsInfo.addUpdate(xpo, oldpo=ipo)
762
763 self.assertEquals('ok', *self.resolveCode())
764 self.assertResult((xpo,))
765
766
767 def testMultiPkgVersions1(self):
768 ipo1 = FakePackage('abcd', arch='noarch')
769 ipo1.addRequires('Foo', 'EQ', ('0', '1', '1'))
770 self.rpmdb.addPackage(ipo1)
771 ipo2 = FakePackage('Foo', arch='noarch')
772 self.rpmdb.addPackage(ipo2)
773
774 xpo = FakePackage('abcd', version='2', arch='noarch')
775 xpo.addRequires('Foo', 'GE', ('0', '2', '1'))
776 self.tsInfo.addUpdate(xpo, oldpo=ipo1)
777
778 po1 = FakePackage('Foo', arch='noarch')
779 self.xsack.addPackage(po1)
780 po2 = FakePackage('Foo', version='2', arch='noarch')
781 self.xsack.addPackage(po2)
782 po3 = FakePackage('Foo', version='3', arch='noarch')
783 self.xsack.addPackage(po3)
784
785 self.assertEquals('ok', *self.resolveCode())
786 self.assertResult((xpo, po3))
787
788 def testMultiPkgVersions2(self):
789 ipo1 = FakePackage('abcd', arch='i586')
790 ipo1.addRequires('Foo', 'EQ', ('0', '1', '1'))
791 self.rpmdb.addPackage(ipo1)
792 ipo2 = FakePackage('Foo', arch='i586')
793 self.rpmdb.addPackage(ipo2)
794
795 xpo = FakePackage('abcd', version='2', arch='i586')
796 xpo.addRequires('Foo', 'GE', ('0', '2', '1'))
797 self.tsInfo.addUpdate(xpo, oldpo=ipo1)
798
799 po1 = FakePackage('Foo', arch='i586')
800 self.xsack.addPackage(po1)
801 po2 = FakePackage('Foo', version='2', arch='i586')
802 self.xsack.addPackage(po2)
803 po3 = FakePackage('Foo', version='2', arch='i586')
804 self.xsack.addPackage(po3)
805
806 self.assertEquals('ok', *self.resolveCode())
807 self.assertResult((xpo, po3))
808
809 def testMultiPkgVersions3(self):
810 ipo1 = FakePackage('abcd', arch='i586')
811 ipo1.addRequires('Foo', 'EQ', ('0', '1', '1'))
812 self.rpmdb.addPackage(ipo1)
813 ipo2 = FakePackage('Foo', arch='i586')
814 self.rpmdb.addPackage(ipo2)
815
816 xpo = FakePackage('abcd', version='2', arch='i586')
817 xpo.addRequires('Foo', 'GE', ('0', '2', '1'))
818 self.tsInfo.addUpdate(xpo, oldpo=ipo1)
819
820 po1 = FakePackage('Foo', arch='i586')
821 self.xsack.addPackage(po1)
822 po2 = FakePackage('Foo', version='2', arch='i686')
823 self.xsack.addPackage(po2)
824 po3 = FakePackage('Foo', version='2', arch='i586')
825 self.xsack.addPackage(po3)
826
827 self.assertEquals('ok', *self.resolveCode())
828 self.assertResult((xpo, po2))
829
830 def testMultiPkgVersions4(self):
831 ipo1 = FakePackage('abcd', arch='i386')
832 ipo1.addRequires('Foo', 'EQ', ('0', '1', '1'))
833 self.rpmdb.addPackage(ipo1)
834 ipo2 = FakePackage('Foo', arch='i386')
835 self.rpmdb.addPackage(ipo2)
836
837 xpo = FakePackage('abcd', version='2', arch='i386')
838 xpo.addRequires('Foo', 'GE', ('0', '2', '1'))
839 self.tsInfo.addUpdate(xpo, oldpo=ipo1)
840
841 po1 = FakePackage('Foo', arch='i386')
842 self.xsack.addPackage(po1)
843 po2 = FakePackage('Foo', version='2', arch='i686')
844 self.xsack.addPackage(po2)
845 po3 = FakePackage('Foo', version='2', arch='i386')
846 self.xsack.addPackage(po3)
847
848 self.assertEquals('ok', *self.resolveCode())
849 self.assertResult((xpo, po2))
850
851 def testMultiPkgVersions5(self):
852 ipo1 = FakePackage('abcd', arch='i386')
853 ipo1.addRequires('Foo', 'EQ', ('0', '1', '1'))
854 self.rpmdb.addPackage(ipo1)
855 ipo2 = FakePackage('Foo', arch='i386')
856 self.rpmdb.addPackage(ipo2)
857
858 xpo = FakePackage('abcd', version='2', arch='i386')
859 xpo.addRequires('Foo', 'GE', ('0', '2', '1'))
860 self.tsInfo.addUpdate(xpo, oldpo=ipo1)
861
862 po1 = FakePackage('Foo', arch='i386')
863 self.xsack.addPackage(po1)
864 po2 = FakePackage('Foo', version='2', arch='i686')
865 po3 = FakePackage('Foo', version='2', arch='i386')
866 self.xsack.addPackage(po3)
867 self.xsack.addPackage(po2)
868
869 self.assertEquals('ok', *self.resolveCode())
870 self.assertResult((xpo, po2))
871
872 # Test from "Real Life" because we just can't think like they do
873 def testRL_unison1(self):
874 xpo = FakePackage('abcd', version='2', arch='i386')
875 xpo.addRequires('unison', None, (None, None, None))
876 self.tsInfo.addInstall(xpo)
877
878 po1 = FakePackage('unison213', version='2.13.16', release='9')
879 po1.addProvides('unison', 'EQ', ('0', '2.13.16', '9'))
880 po1.addObsoletes('unison', 'LT', ('0', '2.27.57', '3'))
881 self.xsack.addPackage(po1)
882 po2 = FakePackage('unison227', version='2.27.57', release='7')
883 po2.addProvides('unison', 'EQ', ('0', '2.27.57', '7'))
884 po2.addObsoletes('unison', 'LT', ('0', '2.27.57', '3'))
885 self.xsack.addPackage(po2)
886
887 self.assertEquals('ok', *self.resolveCode())
888 self.assertResult((xpo, po2))
889
890 def testRL_unison2(self):
891 xpo = FakePackage('abcd', version='2', arch='i386')
892 xpo.addRequires('unison', None, (None, None, None))
893 self.tsInfo.addInstall(xpo)
894
895 po1 = FakePackage('unison213', version='2.13.16', release='9')
896 po1.addProvides('unison', 'EQ', ('0', '2.13.16', '9'))
897 po1.addObsoletes('unison', 'LT', ('0', '2.27.57', '3'))
898 po2 = FakePackage('unison227', version='2.27.57', release='7')
899 po2.addProvides('unison', 'EQ', ('0', '2.27.57', '7'))
900 po2.addObsoletes('unison', 'LT', ('0', '2.27.57', '3'))
901 self.xsack.addPackage(po2)
902 self.xsack.addPackage(po1)
903
904 self.assertEquals('ok', *self.resolveCode())
905 self.assertResult((xpo, po2))
906
907 def test_min_inst_and_dep(self):
908 ipo1 = FakePackage('bar', version='2')
909 self.tsInfo.addInstall(ipo1)
910
911 ipo2 = FakePackage('foo')
912 ipo2.addRequires('bar', 'GE', (None, '3', '0'))
913 self.tsInfo.addInstall(ipo2)
914
915 po1 = FakePackage('foo')
916 self.xsack.addPackage(po1)
917 po2 = FakePackage('bar', version='2')
918 self.xsack.addPackage(po2)
919 po3 = FakePackage('bar', version='3')
920 self.xsack.addPackage(po3)
921 po4 = FakePackage('bar', version='4')
922 self.xsack.addPackage(po4)
923
924 self.assertEquals('ok', *self.resolveCode())
925 self.assertResult((ipo2, po4))
926
927 def test_min_up_and_dep1(self):
928 rpo1 = FakePackage('bar', version='1')
929 self.rpmdb.addPackage(rpo1)
930
931 ipo1 = FakePackage('bar', version='2')
932 self.tsInfo.addUpdate(ipo1, oldpo=rpo1)
933
934 ipo2 = FakePackage('foo')
935 ipo2.addRequires('bar', 'GE', (None, '3', '0'))
936 self.tsInfo.addInstall(ipo2)
937
938 po1 = FakePackage('foo')
939 self.xsack.addPackage(po1)
940 po2 = FakePackage('bar', version='2')
941 self.xsack.addPackage(po2)
942 po3 = FakePackage('bar', version='3')
943 self.xsack.addPackage(po3)
944 po4 = FakePackage('bar', version='4')
945 self.xsack.addPackage(po4)
946
947 self.assertEquals('ok', *self.resolveCode())
948 self.assertResult((ipo2, po4))
949
950 def test_min_up_and_dep2(self):
951 rpo1 = FakePackage('bar', version='1')
952 self.rpmdb.addPackage(rpo1)
953
954 ipo1 = FakePackage('bar', version='2')
955
956 ipo2 = FakePackage('foo')
957 ipo2.addRequires('bar', 'GE', (None, '3', '0'))
958 self.tsInfo.addInstall(ipo2)
959 self.tsInfo.addUpdate(ipo1, oldpo=rpo1)
960
961 po1 = FakePackage('foo')
962 po2 = FakePackage('bar', version='2')
963 po3 = FakePackage('bar', version='3')
964 po4 = FakePackage('bar', version='4')
965 self.xsack.addPackage(po4)
966 self.xsack.addPackage(po3)
967 self.xsack.addPackage(po2)
968 self.xsack.addPackage(po1)
969
970 self.assertEquals('ok', *self.resolveCode())
971 self.assertResult((ipo2, po4))
972
973 def test_min_up_and_dep3(self):
974 rpo1 = FakePackage('bar', version='1')
975 self.rpmdb.addPackage(rpo1)
976 rpo2 = FakePackage('bar-blah', version='1')
977 rpo2.addRequires('bar', 'EQ', ('0', '1', '1'))
978 self.rpmdb.addPackage(rpo2)
979
980 ipo1 = FakePackage('bar', version='2')
981 self.tsInfo.addUpdate(ipo1, oldpo=rpo1)
982 ipo2 = FakePackage('bar-blah', version='2')
983 ipo2.addRequires('bar', 'EQ', ('0', '2', '1'))
984 self.tsInfo.addUpdate(ipo2, oldpo=rpo2)
985
986 ipo3 = FakePackage('foo')
987 ipo3.addRequires('bar', 'GE', (None, '3', '0'))
988 self.tsInfo.addInstall(ipo3)
989
990 po1 = FakePackage('foo')
991 po1.addRequires('bar', 'GE', (None, '3', '0'))
992 self.xsack.addPackage(po1)
993 po2 = FakePackage('bar', version='2')
994 self.xsack.addPackage(po2)
995 po3 = FakePackage('bar', version='3')
996 self.xsack.addPackage(po3)
997 po4 = FakePackage('bar', version='4')
998 self.xsack.addPackage(po4)
999 po5 = FakePackage('bar-blah', version='2')
1000 po5.addRequires('bar', 'EQ', ('0', '2', '1'))
1001 self.xsack.addPackage(po5)
1002 po6 = FakePackage('bar-blah', version='3')
1003 po6.addRequires('bar', 'EQ', ('0', '3', '1'))
1004 self.xsack.addPackage(po6)
1005 po7 = FakePackage('bar-blah', version='4')
1006 po7.addRequires('bar', 'EQ', ('0', '4', '1'))
1007 self.xsack.addPackage(po7)
1008
1009 self.assertEquals('ok', *self.resolveCode())
1010 self.assertResult((ipo3, po4, po7))
1011
1012 def test_multi_inst_dep1(self):
1013 ipo1 = FakePackage('foo')
1014 ipo1.addRequires('bar-prov1', None, (None, None, None))
1015 ipo1.addRequires('bar-prov2', 'EQ', ('0', '1', '0'))
1016 self.tsInfo.addInstall(ipo1)
1017
1018 po1 = FakePackage('bar')
1019 po1.addProvides('bar-prov1', None, (None, None, None))
1020 po1.addProvides('bar-prov2', 'EQ', ('0', '1', '0'))
1021 self.xsack.addPackage(po1)
1022 po2 = FakePackage('bar', version='2')
1023 po2.addProvides('bar-prov1', None, (None, None, None))
1024 po2.addProvides('bar-prov2', 'EQ', ('0', '2', '0'))
1025 self.xsack.addPackage(po2)
1026
1027 self.assertEquals('ok', *self.resolveCode())
1028 self.assertResult((ipo1, po1))
1029
1030 def test_multi_inst_dep2(self):
1031 ipo1 = FakePackage('foo')
1032 ipo1.addRequires('bar-prov1', None, (None, None, None))
1033 ipo1.addRequires('bar-prov2', 'EQ', ('0', '1', '0'))
1034 self.tsInfo.addInstall(ipo1)
1035
1036 po1 = FakePackage('bar')
1037 po1.addProvides('bar-prov1', None, (None, None, None))
1038 po1.addProvides('bar-prov2', 'EQ', ('0', '1', '0'))
1039 po2 = FakePackage('bar', version='2')
1040 po2.addProvides('bar-prov1', None, (None, None, None))
1041 po2.addProvides('bar-prov2', 'EQ', ('0', '2', '0'))
1042 self.xsack.addPackage(po2)
1043 self.xsack.addPackage(po1)
1044
1045 self.assertEquals('ok', *self.resolveCode())
1046 self.assertResult((ipo1, po1))
1047
1048 def test_multi_inst_dep3(self):
1049 ipo1 = FakePackage('foo')
1050 ipo1.addRequires('libbar-prov1.so.0()', None, (None, None, None))
1051 ipo1.addRequires('bar-prov2', None, (None, None, None))
1052 self.tsInfo.addInstall(ipo1)
1053
1054 po1 = FakePackage('bar')
1055 po1.addProvides('libbar-prov1.so.0()', None, (None, None, None))
1056 po1.addProvides('bar-prov2', None, (None, None, None))
1057 self.xsack.addPackage(po1)
1058 po2 = FakePackage('bar', version='2')
1059 po2.addProvides('libbar-prov1.so.0()', None, (None, None, None))
1060 self.xsack.addPackage(po2)
1061
1062 self.assertEquals('ok', *self.resolveCode())
1063 self.assertResult((ipo1, po1))
1064
1065 def test_multi_inst_dep4(self):
1066 ipo1 = FakePackage('foo')
1067 ipo1.addRequires('libbar-prov1.so.0()', None, (None, None, None))
1068 ipo1.addRequires('bar-prov2', None, (None, None, None))
1069 self.tsInfo.addInstall(ipo1)
1070
1071 po1 = FakePackage('bar')
1072 po1.addProvides('libbar-prov1.so.0()', None, (None, None, None))
1073 po1.addProvides('bar-prov2', None, (None, None, None))
1074 self.xsack.addPackage(po1)
1075 po2 = FakePackage('baz')
1076 po2.addProvides('libbar-prov1.so.0()', None, (None, None, None))
1077 self.xsack.addPackage(po2)
1078
1079 self.assertEquals('ok', *self.resolveCode())
1080 self.assertResult((ipo1, po1))
1081
1082 def test_multi_inst_dep5(self):
1083 ipo1 = FakePackage('foo')
1084 ipo1.addRequires('libbar-prov1.so.0()', None, (None, None, None))
1085 ipo1.addRequires('bar-prov2', None, (None, None, None))
1086 self.tsInfo.addInstall(ipo1)
1087
1088 po1 = FakePackage('bar')
1089 po1.addProvides('libbar-prov1.so.0()', None, (None, None, None))
1090 po1.addProvides('bar-prov2', None, (None, None, None))
1091 po2 = FakePackage('baz')
1092 po2.addProvides('libbar-prov1.so.0()', None, (None, None, None))
1093 self.xsack.addPackage(po2)
1094 self.xsack.addPackage(po1)
1095
1096 self.assertEquals('ok', *self.resolveCode())
1097 self.assertResult((ipo1, po1))
1098
1099 def test_inst_require_conflict1(self):
1100 ipo1 = FakePackage('foo')
1101 ipo1.addRequires('bar', None, (None, None, None))
1102 ipo1.addConflicts('bar', None, (None, None, None))
1103 self.tsInfo.addInstall(ipo1)
1104
1105 po1 = FakePackage('bar')
1106 self.xsack.addPackage(po1)
1107
1108 self.assertEquals('err', *self.resolveCode())
1109
1110 def test_inst_require_conflict_me1(self):
1111 ipo1 = FakePackage('foo')
1112 ipo1.addRequires('bar', None, (None, None, None))
1113 self.tsInfo.addInstall(ipo1)
1114
1115 po1 = FakePackage('bar')
1116 po1.addConflicts('foo', None, (None, None, None))
1117 self.xsack.addPackage(po1)
1118
1119 self.assertEquals('err', *self.resolveCode())
1120
1121 def test_inst_require_obsoletes1(self):
1122 ipo1 = FakePackage('foo')
1123 ipo1.addRequires('bar', None, (None, None, None))
1124 ipo1.addObsoletes('bar', None, (None, None, None))
1125 self.tsInfo.addInstall(ipo1)
1126
1127 po1 = FakePackage('bar')
1128 self.xsack.addPackage(po1)
1129
1130 # FIXME: Does it make sense to ignore the obsoletes here? esp. as we
1131 # don't ignore the conflicts above? ... I'm guessing ignoring it is
1132 # by accident too? bah.
1133 # self.assertEquals('err', *self.resolveCode())
1134 self.assertEquals('ok', *self.resolveCode())
1135 self.assertResult((ipo1, po1))
1136
1137 def testUpdate_so_req_diff_arch(self):
1138 rpo1 = FakePackage('foozoomer')
1139 rpo1.addRequires('libbar.so.1()', None, (None, None, None))
1140 rpo1.addObsoletes('zoom', 'LT', ('8', '8', '8'))
1141 self.rpmdb.addPackage(rpo1)
1142 rpo2 = FakePackage('bar')
1143 rpo2.addProvides('libbar.so.1()', None, (None, None, None))
1144 self.rpmdb.addPackage(rpo2)
1145 rpo3 = FakePackage('zoom', arch='i386')
1146 self.rpmdb.addPackage(rpo3)
1147
1148 apo1 = FakePackage('foozoomer', version=2)
1149 apo1.addRequires('libbar.so.2()', None, (None, None, None))
1150 apo1.addObsoletes('zoom', 'LT', ('8', '8', '8'))
1151 self.xsack.addPackage(apo1)
1152 apo2 = FakePackage('bar', version=2)
1153 apo2.addProvides('libbar.so.2()', None, (None, None, None))
1154 self.xsack.addPackage(apo2)
1155
1156 self.tsInfo.addUpdate(apo2, oldpo=rpo2)
1157
1158 self.assertEquals('ok', *self.resolveCode())
1159 self.assertResult((apo1, apo2))
1160
1161 def testInstalllib_oldbad_prov1(self):
1162 # old version of X provides foo, as does foo itself
1163 # new version of X doesn't provide foo
1164 # So X shouldn't be installed as a provider of foo.
1165 apo1 = FakePackage('X')
1166 apo1.addProvides('libfoo.so.2()', None, (None, None, None))
1167 self.xsack.addPackage(apo1)
1168 apo2 = FakePackage('X', version=2)
1169 self.xsack.addPackage(apo2)
1170 apo3 = FakePackage('libfoo')
1171 apo3.addProvides('libfoo.so.2()', None, (None, None, None))
1172 self.xsack.addPackage(apo3)
1173
1174 ipo1 = FakePackage('bar')
1175 ipo1.addRequires('libfoo.so.2()', None, (None, None, None))
1176 self.tsInfo.addInstall(ipo1)
1177
1178 self.assertEquals('ok', *self.resolveCode())
1179 self.assertResult((ipo1, apo3))
1180
1181 def testCompareProvidersNoarchWithHigherVer_to_64(self):
1182
1183 po = FakePackage('abcd', arch='x86_64')
1184 po.addRequires('libxyz-1.so.0', None, (None, None, None))
1185 self.tsInfo.addInstall(po)
1186
1187 po3 = FakePackage('libbar', version='1.1', arch='x86_64')
1188 po3.addProvides('libxyz-1.so.0', None,(None,None,None))
1189 self.xsack.addPackage(po3)
1190 po2 = FakePackage('libbar', version='1.2', arch='noarch')
1191 po2.addProvides('libxyz-1.so.0', None,(None,None,None))
1192 self.xsack.addPackage(po2)
1193 po1 = FakePackage('libbar', version='1.1', arch='i386')
1194 po1.addProvides('libxyz-1.so.0', None,(None,None,None))
1195 self.xsack.addPackage(po1)
1196
1197 self.assertEquals('ok', *self.resolveCode())
1198 self.assertResult((po, po2))
1199
1200 def testRL_dcbd1(self):
1201 xpo = FakePackage('dcbd-devel', version='1', arch='i386')
1202 xpo.addRequires('dcbd', None, (None, None, None))
1203 self.tsInfo.addInstall(xpo)
1204
1205 po1 = FakePackage('dcbd', version='1')
1206 po1.addProvides('dcbd', 'EQ', ('0', '1', '0'))
1207 po2 = FakePackage('lldpad', version='2')
1208 po2.addObsoletes('dcbd', 'LT', ('0', '2', '0'))
1209 po3 = FakePackage('lldpad-devel', version='2')
1210 self.xsack.addPackage(po3)
1211 self.xsack.addPackage(po2)
1212 self.xsack.addPackage(po1)
1213
1214 self.assertEquals('err', *self.resolveCode())
Note: See TracBrowser for help on using the repository browser.