311
313
('xenial/media-hub', 'Successfully built', None),
312
314
('yakkety/media-hub', 'Successfully built', None),
314
ticket = Mock(status='Preparing packages.')
317
status='Preparing packages.',
318
lockfile=join(self.tempdir, 'lockfile'))
315
319
manager = Manager(ticket)
317
321
ticket.set_status.assert_called_once_with(
347
351
('xenial/media-hub', 'Successfully built', None),
348
352
('yakkety/media-hub', 'Successfully built', None),
350
ticket = Mock(status='Preparing packages.')
355
status='Preparing packages.',
356
lockfile=join(self.tempdir, 'lockfile'))
351
357
manager = Manager(ticket)
353
359
ticket.set_status.assert_called_once_with(
368
374
('xenial/media-hub', 'Release pocket', '2'),
369
375
('yakkety/media-hub', 'Updates pocket', '3'),
371
ticket = Mock(status='Preparing packages.')
378
status='Preparing packages.',
379
lockfile=join(self.tempdir, 'lockfile'))
372
380
manager = Manager(ticket)
374
382
ticket.set_status.assert_called_once_with(
378
386
'"2", "yakkety": "3"}}')
379
387
Acts.finalize.assert_called_once_with(manager)
389
@patch('bileto.worker.manager.parallelize')
390
@patch('bileto.worker.manager.Manager.packages')
391
def test_manager_prepublish(self, packages, parallelize):
392
"""Allow publish to proceed."""
393
packages.return_value = {}
394
parallelize.return_value = [
395
('vivid/media-hub', None),
396
('xenial/media-hub', None),
397
('yakkety/media-hub', None),
400
manager = Manager(ticket)
401
manager.prepublish() # No exception raised
403
@patch('bileto.worker.manager.parallelize')
404
@patch('bileto.worker.manager.Manager.packages')
405
def test_manager_prepublish_abort(self, packages, parallelize):
406
"""Prevent publication when problems found."""
407
packages.return_value = {}
408
parallelize.return_value = [
409
('vivid/media-hub', 'Diff missing'),
410
('xenial/media-hub', 'Diff missing'),
411
('yakkety/media-hub', 'Dependency wait'),
414
manager = Manager(ticket)
415
with self.assertRaisesRegex(BiletoError, 'Publish failed: Dep'):
418
@patch('bileto.worker.manager.rename')
419
@patch('bileto.worker.manager.makedirs')
420
@patch('bileto.worker.manager.parallelize')
421
@patch('bileto.worker.manager.Manager.packages')
422
@patch('bileto.worker.manager.Package.manifest', ['a\n', 'b\n', 'c\n'])
423
def test_manager_publish(self, packages, parallelize, makedirs, rename):
424
"""Do publishy things."""
425
packages.return_value = {}
426
parallelize.return_value = [
427
('vivid/media-hub', None),
428
('xenial/media-hub', None),
429
('yakkety/media-hub', None),
431
ticket = Mock(siloname='ubuntu/landing-555')
432
manager = Manager(ticket)
434
makedirs.assert_called_once_with(
435
join(self.tempdir, 'publish'), exist_ok=True)
436
filename = 'packagelist_rsync_ubuntu-landing-555'
437
path = join(self.tempdir, 'publish', filename)
438
rename.assert_called_once_with(filename, path)
439
with open(filename, encoding='utf-8') as data:
440
self.assertEqual(data.read().strip(), 'a\nb\nc')
381
443
@patch('bileto.worker.manager.Manager.ppa')
382
444
@patch('bileto.worker.vcs.create_subprocess_exec', POST_NUKE)
383
445
def test_manager_nuke(self, ppa):