source: yum/trunk/test/simpleobsoletestests.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: 29.0 KB
Line 
1from testbase import *
2
3class SimpleObsoletesTests(OperationsTests):
4
5 @staticmethod
6 def buildPkgs(pkgs, *args):
7 # installed
8 pkgs.installed_i386 = FakePackage('zsh', '1', '1', '0', 'i386')
9 pkgs.installed_x86_64 = FakePackage('zsh', '1', '1', '0', 'x86_64')
10 pkgs.installed_noarch = FakePackage('zsh', '1', '1', '0', 'noarch')
11 # obsoletes
12 pkgs.obsoletes_i386 = FakePackage('zsh-ng', '0.3', '1', '0', 'i386')
13 pkgs.obsoletes_i386.addObsoletes('zsh', None, (None, None, None))
14 pkgs.obsoletes_i386.addProvides('zzz')
15 pkgs.obsoletes_x86_64 = FakePackage('zsh-ng', '0.3', '1', '0', 'x86_64')
16 pkgs.obsoletes_x86_64.addObsoletes('zsh', None, (None, None, None))
17 pkgs.obsoletes_x86_64.addProvides('zzz')
18 pkgs.obsoletes_noarch = FakePackage('zsh-ng', '0.3', '1', '0', 'noarch')
19 pkgs.obsoletes_noarch.addObsoletes('zsh', None, (None, None, None))
20 pkgs.obsoletes_noarch.addProvides('zzz')
21 # requires obsoletes
22 pkgs.requires_obsoletes = FakePackage('superzippy', '3.5', '3', '0', 'noarch')
23 pkgs.requires_obsoletes.addRequires('zzz')
24
25 # noarch to X
26
27 def testObsoletenoarchTonoarch(self):
28 p = self.pkgs
29 res, msg = self.runOperation(['update'], [p.installed_noarch], [p.obsoletes_noarch])
30 self.assert_(res=='ok', msg)
31 self.assertResult((p.obsoletes_noarch,))
32 def testObsoletenoarchTonoarchForDependency(self):
33 p = self.pkgs
34 res, msg = self.runOperation(['install', 'superzippy'], [p.installed_noarch],
35 [p.obsoletes_noarch, p.requires_obsoletes])
36 self.assert_(res=='ok', msg)
37 self.assertResult((p.obsoletes_noarch, p.requires_obsoletes))
38
39 def testObsoletenoarchToi386(self):
40 p = self.pkgs
41 res, msg = self.runOperation(['update'], [p.installed_noarch], [p.obsoletes_i386])
42 self.assert_(res=='ok', msg)
43 self.assertResult((p.obsoletes_i386,))
44 def testObsoletenoarchToi386ForDependency(self):
45 p = self.pkgs
46 res, msg = self.runOperation(['install', 'superzippy'], [p.installed_noarch],
47 [p.obsoletes_i386, p.requires_obsoletes])
48 self.assert_(res=='ok', msg)
49 self.assertResult((p.obsoletes_i386, p.requires_obsoletes))
50
51 def testObsoletenoarchTox86_64(self):
52 p = self.pkgs
53 res, msg = self.runOperation(['update'], [p.installed_noarch], [p.obsoletes_x86_64])
54 self.assert_(res=='ok', msg)
55 self.assertResult((p.obsoletes_x86_64,))
56 def testObsoletenoarchTox86_64ForDependency(self):
57 p = self.pkgs
58 res, msg = self.runOperation(['install', 'superzippy'], [p.installed_noarch],
59 [p.obsoletes_x86_64, p.requires_obsoletes])
60 self.assert_(res=='ok', msg)
61 self.assertResult((p.obsoletes_x86_64, p.requires_obsoletes))
62
63 def testObsoletenoarchToMultiarch(self):
64 p = self.pkgs
65 res, msg = self.runOperation(['update'], [p.installed_noarch], [p.obsoletes_i386, p.obsoletes_x86_64])
66 self.assert_(res=='ok', msg)
67 if new_behavior:
68 self.assertResult((p.obsoletes_x86_64,), (p.obsoletes_i386,))
69 else:
70 self.assertResult((p.obsoletes_i386, p.obsoletes_x86_64))
71 def testObsoletenoarchToMultiarchForDependency(self):
72 p = self.pkgs
73 res, msg = self.runOperation(['install', 'superzippy'], [p.installed_noarch],
74 [p.obsoletes_i386, p.obsoletes_x86_64, p.requires_obsoletes])
75 self.assert_(res=='ok', msg)
76 self.assertResult((p.obsoletes_x86_64, p.requires_obsoletes), (p.obsoletes_i386,))
77
78 # i386 to X
79
80 def testObsoletei386Tonoarch(self):
81 p = self.pkgs
82 res, msg = self.runOperation(['update'], [p.installed_i386], [p.obsoletes_noarch])
83 self.assert_(res=='ok', msg)
84 self.assertResult((p.obsoletes_noarch,))
85 def testObsoletei386TonoarchForDependency(self):
86 p = self.pkgs
87 res, msg = self.runOperation(['install', 'superzippy'], [p.installed_i386], [p.obsoletes_noarch, p.requires_obsoletes])
88 self.assert_(res=='ok', msg)
89 self.assertResult((p.obsoletes_noarch, p.requires_obsoletes))
90
91 def testObsoletei386Toi386(self):
92 p = self.pkgs
93 res, msg = self.runOperation(['update'], [p.installed_i386], [p.obsoletes_i386])
94 self.assert_(res=='ok', msg)
95 self.assertResult((p.obsoletes_i386,))
96 def testObsoletei386Toi386ForDependency(self):
97 p = self.pkgs
98 res, msg = self.runOperation(['install', 'superzippy'], [p.installed_i386], [p.obsoletes_i386, p.requires_obsoletes])
99 self.assert_(res=='ok', msg)
100 self.assertResult((p.obsoletes_i386, p.requires_obsoletes))
101
102 def testObsoletei386Tox86_64(self):
103 p = self.pkgs
104 res, msg = self.runOperation(['update'], [p.installed_i386], [p.obsoletes_x86_64])
105 self.assert_(res=='ok', msg)
106 self.assertResult((p.obsoletes_x86_64,))
107 def testObsoletei386Tox86_64ForDependency(self):
108 p = self.pkgs
109 res, msg = self.runOperation(['install', 'superzippy'], [p.installed_i386], [p.obsoletes_x86_64, p.requires_obsoletes])
110 self.assert_(res=='ok', msg)
111 self.assertResult((p.obsoletes_x86_64, p.requires_obsoletes))
112
113
114 def testObsoletei386ToMultiarch(self):
115 p = self.pkgs
116 res, msg = self.runOperation(['update'], [p.installed_i386], [p.obsoletes_i386, p.obsoletes_x86_64])
117 self.assert_(res=='ok', msg)
118 self.assertResult((p.obsoletes_i386,))
119 def testObsoletei386ToMultiarchForDependency(self):
120 p = self.pkgs
121 res, msg = self.runOperation(['install', 'superzippy'], [p.installed_i386], [p.obsoletes_i386, p.obsoletes_x86_64, p.requires_obsoletes])
122 self.assert_(res=='ok', msg)
123 self.assertResult((p.obsoletes_i386, p.requires_obsoletes))
124
125 # x86_64 to X
126
127 def testObsoletex86_64Tonoarch(self):
128 p = self.pkgs
129 res, msg = self.runOperation(['update'], [p.installed_x86_64], [p.obsoletes_noarch])
130 self.assert_(res=='ok', msg)
131 self.assertResult((p.obsoletes_noarch,))
132 def testObsoletex86_64TonoarchForDependency(self):
133 p = self.pkgs
134 res, msg = self.runOperation(['install', 'superzippy'], [p.installed_x86_64], [p.obsoletes_noarch, p.requires_obsoletes])
135 self.assert_(res=='ok', msg)
136 self.assertResult((p.obsoletes_noarch, p.requires_obsoletes))
137
138 def testObsoletex86_64Toi386(self):
139 p = self.pkgs
140 res, msg = self.runOperation(['update'], [p.installed_x86_64], [p.obsoletes_i386])
141 self.assert_(res=='ok', msg)
142 self.assertResult((p.obsoletes_i386,))
143 def testObsoletex86_64Toi386ForDependency(self):
144 p = self.pkgs
145 res, msg = self.runOperation(['install', 'superzippy'], [p.installed_x86_64], [p.obsoletes_i386, p.requires_obsoletes])
146 self.assert_(res=='ok', msg)
147 self.assertResult((p.obsoletes_i386, p.requires_obsoletes))
148
149 def testObsoletex86_64Tox86_64(self):
150 p = self.pkgs
151 res, msg = self.runOperation(['update'], [p.installed_x86_64], [p.obsoletes_x86_64])
152 self.assert_(res=='ok', msg)
153 self.assertResult((p.obsoletes_x86_64,))
154 def testObsoletex86_64Tox86_64ForDependency(self):
155 p = self.pkgs
156 res, msg = self.runOperation(['install', 'superzippy'], [p.installed_x86_64], [p.obsoletes_x86_64, p.requires_obsoletes])
157 self.assert_(res=='ok', msg)
158 self.assertResult((p.obsoletes_x86_64, p.requires_obsoletes))
159
160 def testObsoletex86_64ToMultiarch1(self):
161 p = self.pkgs
162 res, msg = self.runOperation(['update'], [p.installed_x86_64], [p.obsoletes_i386, p.obsoletes_x86_64])
163 self.assert_(res=='ok', msg)
164 self.assertResult((p.obsoletes_x86_64,))
165 def testObsoletex86_64ToMultiarch2(self):
166 p = self.pkgs
167 res, msg = self.runOperation(['update'], [p.installed_x86_64], [p.obsoletes_x86_64, p.obsoletes_i386])
168 self.assert_(res=='ok', msg)
169 self.assertResult((p.obsoletes_x86_64,))
170 def testInstallObsoletex86_64ToMultiarch1(self):
171 # Found by BZ 593349, libgfortran43/44
172 p = self.pkgs
173 res, msg = self.runOperation(['install', 'zsh.x86_64'], [], [p.installed_x86_64, p.installed_i386, p.obsoletes_x86_64, p.obsoletes_i386])
174 self.assert_(res=='ok', msg)
175 self.assertResult((p.obsoletes_x86_64,))
176 def testInstallObsoletex86_64ToMultiarch2(self):
177 p = self.pkgs
178 res, msg = self.runOperation(['install', 'zsh.i386'], [], [p.installed_x86_64, p.installed_i386, p.obsoletes_x86_64, p.obsoletes_i386])
179 self.assert_(res=='ok', msg)
180 self.assertResult((p.obsoletes_i386,))
181 def testInstallObsoletex86_64ToMultiarch3(self):
182 p = self.pkgs
183 res, msg = self.runOperation(['install', 'zsh'], [], [p.installed_noarch, p.obsoletes_x86_64, p.obsoletes_i386])
184 self.assert_(res=='ok', msg)
185 self.assertResult((p.obsoletes_x86_64,))
186 def testObsoletex86_64ToMultiarchForDependency(self):
187 p = self.pkgs
188 res, msg = self.runOperation(['install', 'superzippy'],
189 [p.installed_x86_64], [p.obsoletes_i386, p.obsoletes_x86_64, p.requires_obsoletes])
190 self.assert_(res=='ok', msg)
191 self.assertResult((p.obsoletes_x86_64, p.requires_obsoletes))
192
193 # multiarch to X
194
195 def testObsoleteMultiarchTonoarch(self):
196 p = self.pkgs
197 res, msg = self.runOperation(['update'], [p.installed_i386, p.installed_x86_64], [p.obsoletes_noarch])
198 self.assert_(res=='ok', msg)
199 self.assertResult((p.obsoletes_noarch,))
200 def testObsoleteMultiarchTonoarchForDependency(self):
201 p = self.pkgs
202 res, msg = self.runOperation(['install', 'superzippy'], [p.installed_i386, p.installed_x86_64], [p.obsoletes_noarch, p.requires_obsoletes])
203 self.assert_(res=='ok', msg)
204 self.assertResult((p.obsoletes_noarch, p.requires_obsoletes))
205
206 def testObsoleteMultiarchToi386(self):
207 p = self.pkgs
208 res, msg = self.runOperation(['update'], [p.installed_i386, p.installed_x86_64], [p.obsoletes_i386])
209 self.assert_(res=='ok', msg)
210 self.assertResult((p.obsoletes_i386,))
211 def testObsoleteMultiarchToi386ForDependency(self):
212 p = self.pkgs
213 res, msg = self.runOperation(['install', 'superzippy'], [p.installed_i386, p.installed_x86_64], [p.obsoletes_i386, p.requires_obsoletes])
214 self.assert_(res=='ok', msg)
215 self.assertResult((p.obsoletes_i386, p.requires_obsoletes))
216
217 def testObsoleteMultiarchTox86_64(self):
218 p = self.pkgs
219 res, msg = self.runOperation(['update'], [p.installed_i386, p.installed_x86_64], [p.obsoletes_x86_64])
220 self.assert_(res=='ok', msg)
221 self.assertResult((p.obsoletes_x86_64,))
222 def testObsoleteMultiarchTox86_64ForDependency(self):
223 p = self.pkgs
224 res, msg = self.runOperation(['install', 'superzippy'], [p.installed_i386, p.installed_x86_64], [p.obsoletes_x86_64, p.requires_obsoletes])
225 self.assert_(res=='ok', msg)
226 self.assertResult((p.obsoletes_x86_64, p.requires_obsoletes))
227
228 def testObsoleteMultiarchToMultiarch(self):
229 p = self.pkgs
230 res, msg = self.runOperation(['update'], [p.installed_i386, p.installed_x86_64], [p.obsoletes_i386, p.obsoletes_x86_64])
231 self.assert_(res=='ok', msg)
232 self.assertResult((p.obsoletes_i386, p.obsoletes_x86_64))
233 def testObsoleteMultiarchToMultiarchForDependency(self):
234 p = self.pkgs
235 res, msg = self.runOperation(['install', 'superzippy'],
236 [p.installed_i386, p.installed_x86_64], [p.obsoletes_i386, p.obsoletes_x86_64, p.requires_obsoletes])
237 self.assert_(res=='ok', msg)
238 self.assertResult((p.obsoletes_i386, p.obsoletes_x86_64, p.requires_obsoletes))
239
240
241 def testInstallObsoletenoarchTonoarch(self):
242 p = self.pkgs
243 res, msg = self.runOperation(['install', 'zsh-ng'], [p.installed_noarch], [p.obsoletes_noarch])
244 self.assert_(res=='ok', msg)
245 self.assertResult((p.obsoletes_noarch,))
246
247 def _MultiObsHelper(self):
248 ret = {'zsh' : FakePackage('zsh', '1', '1', '0', 'noarch'),
249 'ksh' : FakePackage('ksh', '1', '1', '0', 'noarch'),
250 'nash' : FakePackage('nash', '1', '1', '0', 'noarch')}
251 ret['pi'] = [ret['zsh'], ret['ksh'], ret['nash']]
252
253 ret['fish'] = FakePackage('fish', '0.1', '1', '0', 'noarch')
254 ret['fish'].addObsoletes('zsh', None, (None, None, None))
255 ret['bigfish'] = FakePackage('bigfish', '0.2', '1', '0', 'noarch')
256 ret['bigfish'].addObsoletes('zsh', None, (None, None, None))
257 ret['bigfish'].addObsoletes('ksh', None, (None, None, None))
258 ret['shark'] = FakePackage('shark', '0.3', '1', '0', 'noarch')
259 ret['shark'].addObsoletes('zsh', None, (None, None, None))
260 ret['shark'].addObsoletes('ksh', None, (None, None, None))
261 ret['shark'].addObsoletes('nash', None, (None, None, None))
262
263 ret['po'] = [ret['fish'], ret['bigfish'], ret['shark']]
264 return ret
265
266 def testMultiObs1(self):
267 pkgs = self._MultiObsHelper()
268 res, msg = self.runOperation(['install', 'fish'],
269 pkgs['pi'], pkgs['po'])
270 self.assert_(res=='ok', msg)
271 self.assertResult((pkgs['ksh'],pkgs['nash'],pkgs['fish'],))
272
273 def testMultiObs2(self):
274 pkgs = self._MultiObsHelper()
275 res, msg = self.runOperation(['install', 'bigfish'],
276 pkgs['pi'], pkgs['po'])
277 self.assert_(res=='ok', msg)
278 self.assertResult((pkgs['nash'],pkgs['bigfish'],))
279
280 def testMultiObs3(self):
281 pkgs = self._MultiObsHelper()
282 res, msg = self.runOperation(['install', 'shark'],
283 pkgs['pi'], pkgs['po'])
284 self.assert_(res=='ok', msg)
285 self.assertResult((pkgs['shark'],))
286
287 def testMultiObs4(self):
288 # This tests update...
289 pkgs = self._MultiObsHelper()
290 oldshark = FakePackage('shark', '0.1', '1', '0', 'noarch')
291
292 res, msg = self.runOperation(['update', 'shark'],
293 pkgs['pi'] + [oldshark], pkgs['po'])
294 self.assert_(res=='ok', msg)
295 self.assertResult((pkgs['shark'],))
296
297 def testMultiObs5(self):
298 # This tests update of the to be obsoleted pkg...
299 pkgs = self._MultiObsHelper()
300 oldshark = FakePackage('shark', '0.1', '1', '0', 'noarch')
301
302 res, msg = self.runOperation(['update', 'nash'],
303 pkgs['pi'] + [oldshark], pkgs['po'])
304 self.assert_(res=='ok', msg)
305 self.assertResult((pkgs['shark'],))
306
307 # NOTE: Do we really want to remove the old kernel-xen? ... not 100% sure
308 def testMultiObsKern1(self):
309 # kernel + kernel-xen installed, and update kernel obsoletes kernel-xen
310 okern1 = FakePackage('kernel', '0.1', '1', '0', 'noarch')
311 okern2 = FakePackage('kernel', '0.2', '1', '0', 'noarch')
312 okernxen1 = FakePackage('kernel-xen', '0.1', '1', '0', 'noarch')
313 okernxen2 = FakePackage('kernel-xen', '0.2', '1', '0', 'noarch')
314 nkern = FakePackage('kernel', '0.8', '1', '0', 'noarch')
315 nkern.addObsoletes('kernel-xen', None, (None, None, None))
316
317 res, msg = self.runOperation(['update', 'kernel'],
318 [okern1, okernxen1,
319 okern2, okernxen2], [nkern])
320 self.assert_(res=='ok', msg)
321 self.assertResult((okern1,okern2,nkern,))
322
323 def testMultiObsKern2(self):
324 # kernel + kernel-xen installed, and update kernel obsoletes kernel-xen
325 okern1 = FakePackage('kernel', '0.1', '1', '0', 'noarch')
326 okern2 = FakePackage('kernel', '0.2', '1', '0', 'noarch')
327 okernxen1 = FakePackage('kernel-xen', '0.1', '1', '0', 'noarch')
328 okernxen2 = FakePackage('kernel-xen', '0.2', '1', '0', 'noarch')
329 nkern = FakePackage('kernel', '0.8', '1', '0', 'noarch')
330 nkern.addObsoletes('kernel-xen', None, (None, None, None))
331
332 res, msg = self.runOperation(['update', 'kernel-xen'],
333 [okern1, okernxen1,
334 okern2, okernxen2], [nkern])
335 self.assert_(res=='ok', msg)
336 self.assertResult((okern1,okern2,nkern,))
337
338 def testMultiObsKern3(self):
339 # kernel + kernel-xen installed, and update kernel obsoletes kernel-xen
340 okern1 = FakePackage('kernel', '0.1', '1', '0', 'noarch')
341 okern2 = FakePackage('kernel', '0.2', '1', '0', 'noarch')
342 okernxen1 = FakePackage('kernel-xen', '0.1', '1', '0', 'noarch')
343 okernxen2 = FakePackage('kernel-xen', '0.2', '1', '0', 'noarch')
344 nkern = FakePackage('kernel', '0.8', '1', '0', 'noarch')
345 nkern.addObsoletes('kernel-xen', None, (None, None, None))
346
347 res, msg = self.runOperation(['update'],
348 [okern1, okernxen1,
349 okern2, okernxen2], [nkern])
350 self.assert_(res=='ok', msg)
351 self.assertResult((okern1,okern2,nkern,))
352
353 def testIncluderObs1(self):
354 # We use an obsolete to include a new package Y for people with an
355 # installed pkg X. X satisfies deps. but isn't the normal best provider
356 # ... traditionally we've included the other dep. _as well_.
357 # The "main" offender has been postfix, which brings in exim.
358 pfix1 = FakePackage('postfix', '1', '1', '0', 'noarch')
359 pfix1.addProvides('/usr/bin/sendmail')
360 pfix2 = FakePackage('postfix', '1', '2', '0', 'noarch')
361 pfix2.addProvides('/usr/bin/sendmail')
362 pnewfix = FakePackage('postfix-blah', '1', '2', '0', 'noarch')
363 pnewfix.addObsoletes('postfix', 'LT', ('0', '1', '2'))
364 pnewfix.addRequires('postfix', 'EQ', ('0', '1', '2'))
365
366 dep = FakePackage('foo', '1', '1', '0', 'noarch')
367 dep.addRequires('/usr/bin/sendmail')
368
369 exim = FakePackage('exim', '1', '1', '0', 'noarch')
370 exim.addProvides('/usr/bin/sendmail')
371
372 res, msg = self.runOperation(['update', 'postfix'],
373 [pfix1, dep], [exim, pnewfix, pfix2, dep])
374 self.assert_(res=='ok', msg)
375 self.assertResult((dep, pfix2, pnewfix))
376
377 def testIncluderObs2(self):
378 # We use an obsolete to include a new package Y for people with an
379 # installed pkg X. X satisfies deps. but isn't the normal best provider
380 # ... traditionally we've included the other dep. _as well_.
381 # The "main" offender has been postfix, which brings in exim.
382 dep = FakePackage('foo', '1', '1', '0', 'noarch')
383 dep.addRequires('/usr/bin/sendmail')
384
385 pfix1 = FakePackage('postfix', '1', '1', '0', 'noarch')
386 pfix1.addProvides('/usr/bin/sendmail')
387 pfix2 = FakePackage('postfix', '1', '2', '0', 'noarch')
388 pfix2.addProvides('/usr/bin/sendmail')
389 pnewfix = FakePackage('postfix-blah', '1', '2', '0', 'noarch')
390 pnewfix.addObsoletes('postfix', 'LT', ('0', '1', '2'))
391 pnewfix.addRequires('postfix', 'EQ', ('0', '1', '2'))
392
393 exim = FakePackage('exim', '1', '1', '0', 'noarch')
394 exim.addProvides('/usr/bin/sendmail')
395
396 res, msg = self.runOperation(['update', 'postfix'],
397 [dep, pfix1], [dep, pfix2, pnewfix, exim])
398 self.assert_(res=='ok', msg)
399 self.assertResult((dep, pfix2, pnewfix))
400
401 def testIncluderObs3(self):
402 # We use an obsolete to include a new package Y for people with an
403 # installed pkg X. X satisfies deps. but isn't the normal best provider
404 # ... traditionally we've included the other dep. _as well_.
405 # The "main" offender has been postfix, which brings in exim.
406 dep = FakePackage('foo', '1', '1', '0', 'noarch')
407 dep.addRequires('/usr/bin/sendmail')
408
409 pfix1 = FakePackage('postfix', '1', '1', '0', 'noarch')
410 pfix1.addProvides('/usr/bin/sendmail')
411 pfix2 = FakePackage('postfix', '1', '2', '0', 'noarch')
412 pfix2.addProvides('/usr/bin/sendmail')
413 pnewfix = FakePackage('postfix-blah', '1', '2', '0', 'noarch')
414 pnewfix.addObsoletes('postfix', 'LT', ('0', '1', '2'))
415 pnewfix.addRequires('postfix', 'EQ', ('0', '1', '2'))
416
417 exim = FakePackage('exim', '1', '1', '0', 'noarch')
418 exim.addProvides('/usr/bin/sendmail')
419
420 res, msg = self.runOperation(['install', 'postfix-blah'],
421 [dep, pfix1], [dep, pfix2, pnewfix, exim])
422 self.assert_(res=='ok', msg)
423 self.assertResult((dep, pfix2, pnewfix))
424
425 def testConflictMultiplePkgs(self):
426 rp1 = FakePackage('foo', '1', '1', '0', 'noarch')
427
428 aop = FakePackage('bar', '1', '1', '0', 'noarch')
429 aop.addObsoletes('foo', 'LT', ('0', '1', '2'))
430 ap = FakePackage('baz', '1', '1', '0', 'noarch')
431 ap.addRequires('d1')
432 ap.addRequires('d2')
433 ap.addRequires('d3')
434
435 dep1 = FakePackage('d1', '1', '1', '0', 'noarch')
436 dep1.addConflicts('foo', 'LT', ('0', '1', '2'))
437 dep2 = FakePackage('d2', '1', '1', '0', 'noarch')
438 dep2.addConflicts('foo', 'LT', ('0', '1', '2'))
439 dep3 = FakePackage('d3', '1', '1', '0', 'noarch')
440 dep3.addConflicts('foo', 'LT', ('0', '1', '2'))
441
442 res, msg = self.runOperation(['install', 'baz'],
443 [rp1], [ap, aop, dep1, dep2, dep3])
444 self.assert_(res=='ok', msg)
445 self.assertResult((ap, aop, dep1, dep2, dep3))
446
447 def testMultipleObsoleters(self):
448 rp1 = FakePackage('foo', '1', '1', '0', 'noarch')
449
450 aop1 = FakePackage('bar', '1', '1', '0', 'noarch')
451 aop1.addObsoletes('foo', 'LT', ('0', '1', '2'))
452 aop1.addConflicts('bazing')
453 aop2 = FakePackage('bazing', '1', '1', '0', 'noarch')
454 aop2.addObsoletes('foo', 'LT', ('0', '1', '2'))
455 aop2.addConflicts('bar')
456
457 res, msg = self.runOperation(['update'],
458 [rp1], [aop1, aop2])
459 self.assert_(res=='err', msg)
460 # FIXME: This is really what should happen, but just sucking works too
461 # self.assert_(res=='ok', msg)
462 # self.assertResult((aop1,))
463
464 def _helperRLDaplMess(self):
465 rp1 = FakePackage('dapl', '1.2.1', '7', arch='i386')
466 rp2 = FakePackage('dapl-devel', '1.2.1', '7', arch='i386')
467 rp2.addRequires('dapl', 'EQ', ('0', '1.2.1', '7'))
468
469 arp1 = FakePackage('dapl', '1.2.1.1', '7', arch='i386')
470 arp2 = FakePackage('dapl-devel', '1.2.1.1', '7', arch='i386')
471 arp2.addRequires('dapl', 'EQ', ('0', '1.2.1.1', '7'))
472 arp3 = FakePackage('dapl', '2.0.15', '1.el4', arch='i386')
473 arp4 = FakePackage('dapl-devel', '2.0.15', '1.el4', arch='i386')
474 arp4.addRequires('dapl', 'EQ', ('0', '2.0.15', '1.el4'))
475
476 aop1 = FakePackage('compat-dapl-1.2.5', '2.0.7', '2.el4', arch='i386')
477 aop1.addObsoletes('dapl', 'LE', (None, '1.2.1.1', None))
478 aop2 = FakePackage('compat-dapl-devel-1.2.5', '2.0.7', '2.el4',
479 arch='i386')
480 aop2.addObsoletes('dapl-devel', 'LE', (None, '1.2.1.1', None))
481 aop2.addRequires('dapl', 'EQ', ('0', '2.0.7', '2.el4'))
482
483 aoop1 = FakePackage('compat-dapl', '2.0.15', '1.el4', arch='i386')
484 aoop1.addObsoletes('dapl', 'LE', (None, '1.2.1.1', None))
485 aoop1.addObsoletes('compat-dapl-1.2.5', None, (None, None, None))
486 aoop2 = FakePackage('compat-dapl-devel', '2.0.15', '1.el4', arch='i386')
487 aoop2.addObsoletes('dapl-devel', 'LE', (None, '1.2.1.1', None))
488 aoop2.addObsoletes('compat-dapl-devel-1.2.5', None, (None, None, None))
489 aoop2.addRequires('compat-dapl', 'EQ', ('0', '2.0.15', '1.el4'))
490
491 return [rp1, rp2], [arp1, arp2, arp3, arp4,
492 aop1, aop2, aoop1, aoop2], [aoop1, aoop2], locals()
493
494 def testRLDaplMess1(self):
495 rps, aps, ret, all = self._helperRLDaplMess()
496 res, msg = self.runOperation(['update'], rps, aps)
497
498 self.assert_(res=='ok', msg)
499 self.assertResult(ret)
500
501 def testRLDaplMess2(self):
502 rps, aps, ret, all = self._helperRLDaplMess()
503 res, msg = self.runOperation(['update', 'dapl'], rps, aps)
504
505 self.assert_(res=='ok', msg)
506 self.assertResult(ret)
507
508 def testRLDaplMess3(self):
509 rps, aps, ret, all = self._helperRLDaplMess()
510 res, msg = self.runOperation(['update', 'dapl-devel'], rps, aps)
511
512 self.assert_(res=='ok', msg)
513 self.assertResult(ret)
514
515 def testRLDaplMess4(self):
516 rps, aps, ret, all = self._helperRLDaplMess()
517 res, msg = self.runOperation(['install', 'compat-dapl'], rps, aps)
518
519 self.assert_(res=='ok', msg)
520 self.assertResult(ret)
521
522 def testRLDaplMess5(self):
523 rps, aps, ret, all = self._helperRLDaplMess()
524 res, msg = self.runOperation(['install', 'compat-dapl-devel'], rps, aps)
525
526 self.assert_(res=='ok', msg)
527 self.assertResult(ret)
528
529 def testRLDaplMess6(self):
530 rps, aps, ret, all = self._helperRLDaplMess()
531 res, msg = self.runOperation(['install', 'compat-dapl-1.2.5'], rps, aps)
532
533 self.assert_(res=='ok', msg)
534 self.assertResult(ret)
535
536 def testRLDaplMess7(self):
537 rps, aps, ret, all = self._helperRLDaplMess()
538 res, msg = self.runOperation(['install', 'compat-dapl-devel-1.2.5'],
539 rps, aps)
540
541 self.assert_(res=='ok', msg)
542 self.assertResult(ret)
543
544 # Now we get a bit weird, as we have obsoletes fighting with updates
545 def testRLDaplMessWeirdInst1(self):
546 rps, aps, ret, all = self._helperRLDaplMess()
547 res, msg = self.runOperation(['install', 'dapl-1.2.1.1-7'], rps, aps)
548
549 self.assert_(res=='ok', msg)
550 self.assertResult(ret)
551 def testRLDaplMessWeirdInst2(self):
552 rps, aps, ret, all = self._helperRLDaplMess()
553 res, msg = self.runOperation(['install', 'dapl-2.0.15',
554 'dapl-devel-2.0.15'], rps, aps)
555
556 self.assert_(res=='ok', msg)
557 self.assertResult((all['arp3'], all['arp4']))
558 def testRLDaplMessWeirdInst3(self):
559 rps, aps, ret, all = self._helperRLDaplMess()
560 res, msg = self.runOperation(['install', 'dapl-2.0.15'], rps, aps)
561
562 self.assert_(res=='ok', msg)
563 self.assertResult((all['arp3'], all['arp4']))
564 def testRLDaplMessWeirdUp1(self):
565 rps, aps, ret, all = self._helperRLDaplMess()
566 res, msg = self.runOperation(['update', 'dapl-1.2.1.1-7'], rps, aps)
567
568 self.assert_(res=='ok', msg)
569 self.assertResult(ret)
570 def testRLDaplMessWeirdUp2(self):
571 rps, aps, ret, all = self._helperRLDaplMess()
572 res, msg = self.runOperation(['update', 'dapl-2.0.15',
573 'dapl-devel-2.0.15'], rps, aps)
574
575 self.assert_(res=='ok', msg)
576 self.assertResult((all['arp3'], all['arp4']))
577 def testRLDaplMessWeirdUp3(self):
578 rps, aps, ret, all = self._helperRLDaplMess()
579 res, msg = self.runOperation(['update', 'dapl-2.0.15'], rps, aps)
580
581 self.assert_(res=='ok', msg)
582 self.assertResult((all['arp3'], all['arp4']))
583
584 def testRLDaplFixUpdateNotInstall(self):
585 rps, aps, ret, all = self._helperRLDaplMess()
586 res, msg = self.runOperation(['update', 'dapl-1.2.1*'], [], rps + aps)
587
588 # self.assert_(res=='err', msg)
589 self.assertResult([])
590
591class GitMetapackageObsoletesTests(OperationsTests):
592
593 @staticmethod
594 def buildPkgs(pkgs, *args):
595 # installed
596 pkgs.installed = FakePackage('git-core', '1.5.4.2', '1', '0', 'x86_64')
597 pkgs.metapackage = FakePackage('git', '1.5.4.2', '1', '0', 'x86_64')
598 # obsoletes
599 pkgs.new_git = FakePackage('git', '1.5.4.4', '1', '0', 'x86_64')
600 pkgs.new_git.addObsoletes('git-core', 'LE', ('0', '1.5.4.3', '1'))
601 pkgs.new_git.addProvides('git-core', 'EQ', ('0', '1.5.4', '1'))
602
603 pkgs.git_all = FakePackage('git-all', '1.5.4', '1', '0', 'x86_64')
604 pkgs.git_all.addObsoletes('git', 'LE', ('0', '1.5.4.3', '1'))
605
606
607 def testGitMetapackageOnlyCoreInstalled(self):
608 # Fedora had a package named 'git', which was a metapackage requiring
609 # all other git rpms. Most people wanted 'git-core' when they asked for
610 # git, so we renamed them.
611 # git-core became git, and provided git-core = version while obsoleting
612 # git-core < version
613 # git became git-all, obsoleting git < version
614
615 p = self.pkgs
616 res, msg = self.runOperation(['update'], [p.installed],
617 [p.new_git, p.git_all])
618 self.assert_(res=='ok', msg)
619 self.assertResult((p.new_git,))
620
621 def testGitMetapackageRenameMetapackageAndCoreInstalled(self):
622 p = self.pkgs
623 res, msg = self.runOperation(['update'], [p.installed, p.metapackage],
624 [p.new_git, p.git_all])
625 self.assert_(res=='ok', msg)
626 self.assertResult((p.new_git, p.git_all))
Note: See TracBrowser for help on using the repository browser.