The proposal to merge lp:~wallyworld/launchpad/reviews-without-reviewer into 
lp:launchpad/devel has been updated.

Description changed to:

Bug 636688 says that if no reviewer is passed in to the addLandingTarget 
method, then a review should be requested from the default review team of the 
target branch. Also while doing this change, the default reviewer added to the 
form should be removed. This way the user only needs to specify a reviewer if 
they are not the default.

Implementation

The addLanding target method now assigns the default reviewer of the target 
branch (accessed via the code_reviewer property) to the merge proposal. 

Other business logic needed refactoring as a result of the change. In 
particular, consider the processMergeProposal() method in codehandler.py - this 
method creates a new merge proposal from an email message. The reviewer may or 
may not be specified in the message. The original email processing logic 
provided these functions:
1. explicitly set the default reviewer if the newly created merge proposal 
didn't have one. 
2. allow a user to specify a reviewer for an existing merge proposal. 

To handle both cases, extra code was added to the merge proposal creation logic 
to parse and extract from the email body any reviewer which may have been 
specified. The new code makes use of existing functionality in the codehandler 
methods. The extracted reviewer is passed to addLandingTarget() to create the 
merge proposal, using the same logic as when a web based request is processed 
by the addLandingTarget() method.

Once the merge proposal is created from the email message, any other commands 
in the email body are processed. At the moment when creating a merge proposal, 
I don't think there are any expected commands except 'reviewer', but the old 
business logic still allowed for such a scenario and so this behaviour is being 
retained. That way, new commands can be added without needing to change any 
processMergeProposal() logic.

*** 
If it is deemed that there is no valid case to retain the current logic of 
allowing commands other than "reviewer" in the merge proposal creation email, 
then the result of the refactoring for this unit of work means that some extra 
(unnecessary) business logic can be easily deleted.
***

Note that the existing AddReviewerEmail command, while no longer used when 
creating a merge proposal, is still needed to process requests to set the 
reviewer on existing merge proposals.  

Tests

    The easy part of this change was the actual implementation. As a result of 
merge proposals now always being created with a reviewer by virtue of the fact 
that the reviewer defaults to the target branch owner, a large number of tests 
started to fail.

    The tests executed were:

    bin/test -vvt test_branch
    bin/test -vvt test_branchmergeproposal
    bin/test -vvt xx-branchmergeproposal
    bin/test -vvt test_codehandler
    bin/test -vvt test_mergedetection

    New tests:

    Instead of just TestRegisterBranchMergeProposalView, a new test class has 
been added:
    TestRegisterBranchWithADefaultReviewerMergeProposalView. These 2 classes 
run merge proposal tests for a
    target branch without, and with, a default reviewer assigned respectively.

    The BranchAddLandingTarget class has new tests:
    - test_default_reviewer
    - test_default_reviewer_when_owner
    - test_default_reviewer_with_review_type
    - test_notify_on_default_reviewer

   Changed tests:

   A *large* number of tests needed to be refactored since the logic in the 
tests assumed a newly created merge proposal (from factory or not) would have 
no reviewer unless one were specified. This included tests in:
       lp.code.browser.tests.test_branchmergeproposal
       lp.code.browser.tests.test_branchmergeproposallisting
       lp.code.mail.tests.test_branchmergeproposal
       lp.code.mail.tests.test_codehandler
       lp.code.model.tests.test_branch
       lp.code.model.tests.test_branchmergeproposal
       xx-branchmergeproposals.txt

    The lp.testing.factory makeBranchMergeProposal() method was changed to 
accept an optional default reviewer and review type. To still allow testing of 
functionality on merge proposals with no reviewers, a new factory method 
makeBranchMergeProposalWithNoReviewers() was created.


= Launchpad lint =

Checking for conflicts and issues in changed files.

Linting changed files:
  lib/lp/code/browser/branch.py
  lib/lp/code/browser/tests/test_branchmergeproposal.py
  lib/lp/code/interfaces/branch.py
  lib/lp/code/interfaces/branchmergeproposal.py
  lib/lp/code/mail/codehandler.py
  lib/lp/code/model/branch.py
  lib/lp/code/model/tests/test_branch.py
  lib/lp/code/stories/branches/xx-branchmergeproposals.txt

./lib/lp/code/stories/branches/xx-branchmergeproposals.txt
     208: source exceeds 78 characters.
     216: want exceeds 78 characters.
     664: source exceeds 78 characters.

./lib/lp/code/mail/tests/test_codehandler.py
     257: W291 trailing whitespace
     627: W291 trailing whitespace
     771: E202 whitespace before ')'
     860: E202 whitespace before ')'
     883: E202 whitespace before ')'
    1161: E301 expected 1 blank line, found 2
    1163: W291 trailing whitespace
     241: Line exceeds 78 characters.
     257: Line has trailing whitespace.
     617: Line exceeds 78 characters.
     623: Line exceeds 78 characters.
     627: Line has trailing whitespace.
    1163: Line has trailing whitespace.


-- 
https://code.launchpad.net/~wallyworld/launchpad/reviews-without-reviewer/+merge/36651
Your team Launchpad code reviewers is requested to review the proposed merge of 
lp:~wallyworld/launchpad/reviews-without-reviewer into lp:launchpad/devel.

_______________________________________________
Mailing list: https://launchpad.net/~launchpad-reviewers
Post to     : [email protected]
Unsubscribe : https://launchpad.net/~launchpad-reviewers
More help   : https://help.launchpad.net/ListHelp

Reply via email to