180
177
def test_does_not_find_inactive_publication(self):
181
178
distroseries = self.factory.makeDistroSeries()
183
(status, self.makeSPPH(distroseries=distroseries, status=status))
184
for status in inactive_publishing_status)
179
for status in inactive_publishing_status:
180
self.makeSPPH(distroseries=distroseries, status=status)
185
181
query = compose_sql_find_latest_source_package_releases(distroseries)
186
182
self.assertContentEqual([], Store.of(distroseries).execute(query))
218
214
layer = ZopelessDatabaseLayer
220
216
def test_baseline(self):
221
query = compose_sql_find_differences(self.makeDerivedDistroSeries())
217
dsp = self.makeDerivedDistroSeries()
218
query = compose_sql_find_differences(
219
dsp.derived_series, dsp.parent_series)
222
220
self.assertIsInstance(query, basestring)
224
222
def test_finds_nothing_for_empty_distroseries(self):
225
distroseries = self.makeDerivedDistroSeries()
226
query = compose_sql_find_differences(distroseries)
227
self.assertContentEqual([], Store.of(distroseries).execute(query))
223
dsp = self.makeDerivedDistroSeries()
224
query = compose_sql_find_differences(
225
dsp.derived_series, dsp.parent_series)
226
self.assertContentEqual(
227
[], Store.of(dsp.derived_series).execute(query))
229
229
def test_does_not_find_grandparents_packages(self):
230
parent = self.makeDerivedDistroSeries()
231
distroseries = self.factory.makeDistroSeries(previous_series=parent)
232
self.makeSPPH(distroseries=parent.previous_series)
233
query = compose_sql_find_differences(distroseries)
234
self.assertContentEqual([], Store.of(distroseries).execute(query))
230
dsp = self.makeDerivedDistroSeries()
231
grandparent = self.factory.makeDistroSeriesParent(
232
derived_series=dsp.parent_series)
233
self.makeSPPH(distroseries=grandparent.parent_series)
234
query = compose_sql_find_differences(
235
dsp.derived_series, dsp.parent_series)
236
self.assertContentEqual(
237
[], Store.of(dsp.derived_series).execute(query))
236
239
def test_does_not_find_identical_releases(self):
237
distroseries = self.makeDerivedDistroSeries()
240
dsp = self.makeDerivedDistroSeries()
238
241
spr = self.factory.makeSourcePackageRelease()
240
distroseries=distroseries.previous_series, sourcepackagerelease=spr)
243
distroseries=dsp.parent_series, sourcepackagerelease=spr)
242
distroseries=distroseries, sourcepackagerelease=spr)
243
query = compose_sql_find_differences(distroseries)
244
self.assertContentEqual([], Store.of(distroseries).execute(query))
245
distroseries=dsp.derived_series, sourcepackagerelease=spr)
246
query = compose_sql_find_differences(
247
dsp.derived_series, dsp.parent_series)
248
self.assertContentEqual(
249
[], Store.of(dsp.derived_series).execute(query))
246
251
def test_ignores_releases_for_same_version(self):
247
derived_series = self.makeDerivedDistroSeries()
252
dsp = self.makeDerivedDistroSeries()
253
derived_series = dsp.derived_series
248
254
version_string = self.factory.getUniqueString()
249
previous_series = derived_series.previous_series
255
parent_series = dsp.parent_series
250
256
package = self.factory.makeSourcePackageName()
252
258
distroseries=derived_series,
254
260
sourcepackagename=package, distroseries=derived_series,
255
261
version=version_string))
257
distroseries=previous_series,
263
distroseries=parent_series,
258
264
sourcepackagerelease=self.factory.makeSourcePackageRelease(
259
sourcepackagename=package, distroseries=previous_series,
265
sourcepackagename=package, distroseries=parent_series,
260
266
version=version_string))
261
query = compose_sql_find_differences(derived_series)
267
query = compose_sql_find_differences(derived_series, parent_series)
262
268
self.assertContentEqual([], Store.of(derived_series).execute(query))
264
270
def test_finds_release_missing_in_derived_series(self):
265
distroseries = self.makeDerivedDistroSeries()
266
spph = self.makeSPPH(distroseries=distroseries.previous_series)
267
query = compose_sql_find_differences(distroseries)
271
dsp = self.makeDerivedDistroSeries()
272
spph = self.makeSPPH(distroseries=dsp.parent_series)
273
query = compose_sql_find_differences(
274
dsp.derived_series, dsp.parent_series)
268
275
self.assertContentEqual(
270
277
spph.sourcepackagerelease.sourcepackagenameID,
272
279
spph.sourcepackagerelease.version,
274
Store.of(distroseries).execute(query))
281
Store.of(dsp.derived_series).execute(query))
276
283
def test_finds_release_unique_to_derived_series(self):
277
distroseries = self.makeDerivedDistroSeries()
284
dsp = self.makeDerivedDistroSeries()
285
distroseries = dsp.derived_series
278
286
spph = self.makeSPPH(distroseries=distroseries)
279
query = compose_sql_find_differences(distroseries)
287
query = compose_sql_find_differences(distroseries, dsp.parent_series)
280
288
self.assertContentEqual(
282
290
spph.sourcepackagerelease.sourcepackagenameID,
286
294
Store.of(distroseries).execute(query))
288
296
def test_does_not_conflate_releases_of_different_packages(self):
289
distroseries = self.makeDerivedDistroSeries()
290
parent_spph = self.makeSPPH(distroseries=distroseries.previous_series)
297
dsp = self.makeDerivedDistroSeries()
298
distroseries = dsp.derived_series
299
parent_spph = self.makeSPPH(distroseries=dsp.parent_series)
291
300
derived_spph = self.makeSPPH(distroseries=distroseries)
292
query = compose_sql_find_differences(distroseries)
301
query = compose_sql_find_differences(distroseries, dsp.parent_series)
293
302
self.assertEqual(2, Store.of(distroseries).execute(query).rowcount)
294
303
self.assertContentEqual([(
295
304
parent_spph.sourcepackagerelease.sourcepackagenameID,
303
312
Store.of(distroseries).execute(query))
305
314
def test_finds_different_releases_of_same_package(self):
306
distroseries = self.makeDerivedDistroSeries()
307
previous_series = distroseries.previous_series
315
dsp = self.makeDerivedDistroSeries()
316
distroseries = dsp.derived_series
317
parent_series = dsp.parent_series
308
318
spn = self.factory.makeSourcePackageName()
309
319
parent_spph = self.makeSPPH(
310
distroseries=previous_series,
320
distroseries=parent_series,
311
321
sourcepackagerelease=self.factory.makeSourcePackageRelease(
312
distroseries=previous_series, sourcepackagename=spn))
322
distroseries=parent_series, sourcepackagename=spn))
313
323
derived_spph = self.makeSPPH(
314
324
distroseries=distroseries,
315
325
sourcepackagerelease=self.factory.makeSourcePackageRelease(
316
326
distroseries=distroseries, sourcepackagename=spn))
317
query = compose_sql_find_differences(distroseries)
327
query = compose_sql_find_differences(distroseries, parent_series)
318
328
self.assertContentEqual(
320
330
parent_spph.sourcepackagerelease.sourcepackagenameID,
324
334
Store.of(distroseries).execute(query))
326
336
def test_finds_newer_release_even_when_same_release_also_exists(self):
327
derived_series = self.makeDerivedDistroSeries()
328
previous_series = derived_series.previous_series
337
dsp = self.makeDerivedDistroSeries()
338
derived_series = dsp.derived_series
339
parent_series = dsp.parent_series
329
340
spn = self.factory.makeSourcePackageName()
330
341
shared_spr = self.factory.makeSourcePackageRelease(
331
distroseries=previous_series, sourcepackagename=spn)
342
distroseries=parent_series, sourcepackagename=spn)
332
343
parent_spph = self.makeSPPH(
333
distroseries=previous_series,
344
distroseries=parent_series,
334
345
sourcepackagerelease=shared_spr)
335
derived_spph = self.makeSPPH(
336
347
distroseries=derived_series,
337
348
sourcepackagerelease=shared_spr)
338
349
newer_spr = self.factory.makeSourcePackageRelease(
339
350
distroseries=derived_series, sourcepackagename=spn)
341
352
distroseries=derived_series, sourcepackagerelease=newer_spr)
342
query = compose_sql_find_differences(derived_series)
353
query = compose_sql_find_differences(derived_series, parent_series)
343
354
self.assertContentEqual(
345
356
parent_spph.sourcepackagerelease.sourcepackagenameID,
408
419
self.assertNotIn(distroseries, find_derived_series())
410
421
def test_finds_derived_distroseries(self):
411
self.assertIn(self.makeDerivedDistroSeries(), find_derived_series())
422
dsp = self.makeDerivedDistroSeries()
423
self.assertIn(dsp.derived_series, find_derived_series())
413
425
def test_ignores_parent_within_same_distro(self):
414
426
previous_series = self.factory.makeDistroSeries()
424
436
layer = LaunchpadFunctionalLayer
426
438
def test_baseline(self):
427
distroseries = self.factory.makeDistroSeries()
428
query = compose_sql_populate_distroseriesdiff(distroseries, "tmp")
439
dsp = self.factory.makeDistroSeriesParent()
440
query = compose_sql_populate_distroseriesdiff(
441
dsp.derived_series, dsp.parent_series, "tmp")
429
442
self.assertIsInstance(query, basestring)
431
444
def test_creates_distroseriesdifference(self):
432
distroseries = self.makeDerivedDistroSeries()
433
spph = self.makeSPPH(distroseries=distroseries)
434
populate_distroseriesdiff(DevNullLogger(), distroseries)
435
store = Store.of(distroseries)
436
dsd = self.getDistroSeriesDiff(distroseries).one()
445
dsp = self.makeDerivedDistroSeries()
446
spph = self.makeSPPH(distroseries=dsp.derived_series)
447
populate_distroseriesdiff(
448
DevNullLogger(), dsp.derived_series, dsp.parent_series)
449
dsd = self.getDistroSeriesDiff(dsp.derived_series).one()
437
450
spr = spph.sourcepackagerelease
438
451
self.assertEqual(spr.sourcepackagename, dsd.source_package_name)
439
452
self.assertEqual(
440
453
DistroSeriesDifferenceStatus.NEEDS_ATTENTION, dsd.status)
442
455
def test_does_not_overwrite_distroseriesdifference(self):
443
distroseries = self.makeDerivedDistroSeries()
456
dsp = self.makeDerivedDistroSeries()
457
distroseries = dsp.derived_series
444
458
changelog = self.factory.makeChangelog(versions=['3.1', '3.141'])
445
459
parent_changelog = self.factory.makeChangelog(
446
460
versions=['3.1', '3.14'])
524
538
def test_finds_distroseries(self):
525
spph = self.makeSPPH(distroseries=self.makeDerivedDistroSeries())
539
dsp = self.makeDerivedDistroSeries()
540
spph = self.makeSPPH(distroseries=dsp.derived_series)
526
541
script = self.makeScript([
527
542
'--distribution', spph.distroseries.distribution.name,
528
543
'--series', spph.distroseries.name,
530
self.assertEqual([spph.distroseries], script.getDistroSeries())
546
[spph.distroseries], script.getDistroSeries().keys())
532
548
def test_finds_all_distroseries(self):
534
self.makeSPPH(self.makeDerivedDistroSeries())
535
for counter in xrange(2)]
550
for counter in xrange(2):
551
dsp = self.makeDerivedDistroSeries()
552
spphs.append(self.makeSPPH(dsp.derived_series))
536
553
script = self.makeScript(['--all'])
537
554
distroseries = script.getDistroSeries()
538
555
for spph in spphs:
539
556
self.assertIn(spph.distroseries, distroseries)
541
558
def test_populates_for_distroseries(self):
542
spph = self.makeSPPH(distroseries=self.makeDerivedDistroSeries())
559
dsp = self.makeDerivedDistroSeries()
560
spph = self.makeSPPH(distroseries=dsp.derived_series)
543
561
script = self.makeScript([
544
562
'--distribution', spph.distroseries.distribution.name,
545
563
'--series', spph.distroseries.name,
549
567
0, self.getDistroSeriesDiff(spph.distroseries).count())
551
569
def test_commits_changes(self):
552
spph = self.makeSPPH(distroseries=self.makeDerivedDistroSeries())
570
dsp = self.makeDerivedDistroSeries()
571
spph = self.makeSPPH(distroseries=dsp.derived_series)
553
572
script = self.makeScript([
554
573
'--distribution', spph.distroseries.distribution.name,
555
574
'--series', spph.distroseries.name,
562
581
0, self.getDistroSeriesDiff(spph.distroseries).count())
564
583
def test_dry_run_goes_through_the_motions(self):
565
spph = self.makeSPPH(distroseries=self.makeDerivedDistroSeries())
584
dsp = self.makeDerivedDistroSeries()
585
self.makeSPPH(distroseries=dsp.derived_series)
566
586
script = self.makeScript(['--all', '--dry-run'])
567
587
script.processDistroSeries = FakeMethod
569
589
self.assertNotEqual(0, script.processDistroSeries.call_count)
571
591
def test_dry_run_does_not_commit_changes(self):
572
spph = self.makeSPPH(distroseries=self.makeDerivedDistroSeries())
592
dsp = self.makeDerivedDistroSeries()
593
spph = self.makeSPPH(distroseries=dsp.derived_series)
573
594
transaction.commit()
574
595
script = self.makeScript([
575
596
'--distribution', spph.distroseries.distribution.name,
590
612
self.assertIn(expected_series_name, script.logger.getLogBuffer())
592
614
def test_calls_update(self):
593
distroseries = self.makeDerivedDistroSeries()
615
dsp = self.makeDerivedDistroSeries()
616
distroseries = dsp.derived_series
594
617
self.makeSPPH(distroseries=distroseries)
595
618
script = self.makeScript([
596
619
'--distribution', distroseries.distribution.name,
601
624
self.assertEqual(
602
625
[((distroseries,), {})], script.update.calls)
627
def _makePublication(self, distroseries, package, version):
628
spr = self.factory.makeSourcePackageRelease(
629
distroseries=distroseries, sourcepackagename=package,
631
spph = self.makeSPPH(
632
distroseries=distroseries, sourcepackagerelease=spr)
604
635
def test_fixes_base_versions(self):
605
distroseries = self.makeDerivedDistroSeries()
636
# Test that the script sets base_version on the DSDs.
638
# Create a package in parent and child that has some history in
640
dsp = self.makeDerivedDistroSeries()
641
distroseries = dsp.derived_series
606
642
package = self.factory.makeSourcePackageName()
607
derived_spr = self.factory.makeSourcePackageRelease(
608
distroseries=distroseries, sourcepackagename=package)
610
distroseries=distroseries,
611
sourcepackagerelease=derived_spr)
612
parent_spr = self.factory.makeSourcePackageRelease(
613
distroseries=distroseries.previous_series,
614
sourcepackagename=package)
616
distroseries=distroseries.previous_series,
617
sourcepackagerelease=parent_spr)
643
spph = self._makePublication(distroseries, package, '1.2')
644
parent_spph = self._makePublication(dsp.parent_series, package, '1.1')
645
naked_spr = removeSecurityProxy(spph.sourcepackagerelease)
646
naked_spr.changelog = self.factory.makeChangelog(
647
package.name, ['1.2', '1.1'])
648
naked_parent_spr = removeSecurityProxy(
649
parent_spph.sourcepackagerelease)
650
naked_parent_spr.changelog = self.factory.makeChangelog(
651
package.name, ['1.1'])
652
# Commit so the librarian gets the changelogs.
618
655
script = self.makeScript([
619
656
'--distribution', distroseries.distribution.name,
620
657
'--series', distroseries.name,
623
660
dsd = self.getDistroSeriesDiff(distroseries)[0]
624
dsd._updateBaseVersion = FakeMethod()
625
script.update(distroseries)
626
self.assertEqual(1, dsd._updateBaseVersion.call_count)
661
self.assertEqual('1.1', dsd.base_version)