6
6
"""Test the sendbranchmail script"""
11
10
from canonical.testing import ZopelessAppServerLayer
12
11
from lp.testing import TestCaseWithFactory
13
12
from canonical.launchpad.scripts.tests import run_script
14
from lp.code.model.branchmergeproposal import BranchMergeProposal
15
from lp.code.model.branchmergeproposaljob import MergeProposalCreatedJob
18
class TestDiffBMPs(TestCaseWithFactory):
15
class TestMergeProposalJobScript(TestCaseWithFactory):
20
17
layer = ZopelessAppServerLayer
22
def test_mpcreationjobs(self):
23
"""Ensure mpcreationjobs runs and generates diffs."""
25
target, target_tree = self.createMirroredBranchAndTree()
26
target_tree.bzrdir.root_transport.put_bytes('foo', 'foo\n')
27
target_tree.add('foo')
28
target_tree.commit('added foo')
29
target.linkBug(self.factory.makeBug(), target.registrant)
30
source, source_tree = self.createMirroredBranchAndTree()
31
source_tree.pull(target_tree.branch)
32
source_tree.bzrdir.root_transport.put_bytes('foo', 'foo\nbar\n')
33
source_tree.commit('added bar')
34
# Add a fake revisions so the proposal is ready.
35
self.factory.makeRevisionsForBranch(source, count=1)
36
source.linkBug(self.factory.makeBug(), source.registrant)
37
bmp = BranchMergeProposal(
38
source_branch=source, target_branch=target,
39
registrant=source.owner)
40
job = MergeProposalCreatedJob.create(bmp)
41
self.assertIs(None, bmp.preview_diff)
19
def test_script_runs(self):
20
"""Ensure merge-proposal-jobs script runs."""
43
21
retcode, stdout, stderr = run_script(
44
'cronscripts/mpcreationjobs.py', [])
22
'cronscripts/merge-proposal-jobs.py', [])
45
23
self.assertEqual(0, retcode)
46
24
self.assertEqual('', stdout)
48
'INFO creating lockfile\n'
49
'INFO Ran 1 MergeProposalCreatedJobs.\n', stderr)
50
self.assertIs(None, bmp.review_diff)
51
self.assertIsNot(None, bmp.preview_diff)
53
def test_mpcreationjobs_records_oops(self):
54
"""Ensure mpcreationjobs logs an oops if the job fails."""
55
bmp = self.factory.makeBranchMergeProposal()
56
self.factory.makeRevisionsForBranch(bmp.source_branch, count=1)
57
job = MergeProposalCreatedJob.create(bmp)
59
retcode, stdout, stderr = run_script(
60
'cronscripts/mpcreationjobs.py', [])
61
self.assertEqual(0, retcode)
62
self.assertEqual('', stdout)
64
'INFO Ran 0 MergeProposalCreatedJobs.\n', stderr)
66
'INFO Job resulted in OOPS:', stderr)
26
'INFO Creating lockfile:'
27
' /var/lock/launchpad-merge-proposal-jobs.lock\n'
28
'INFO Running through Twisted.\n', stderr)
69
31
return unittest.TestLoader().loadTestsFromName(__name__)