def test_invalid_reviewers_fails_the_stack_validation_check(self, check_reviewers): class Args: def __init__(self): self.force = False def fail_gonzo(reviewers): # Replace the check_for_invalid_reviewers() function with something that # fails if "gonzo" is in the reviewers list. if "gonzo" in reviewers["request"]: return [dict(name="gonzo")] elif "goober" in reviewers["request"]: return [dict(name="goober", until="string")] else: return [] check_reviewers.side_effect = fail_gonzo repo = repository.Repository("", "", "dummy") repo.args = Args() self._assertError( repo.check_commits_for_submit, "- gonzo is not a valid reviewer's name", ( # Build a stack with an invalid reviewer in the middle. [ commit("1", (["alice"], [])), commit("2", (["bob", "gonzo"], [])), commit("3", (["charlie"], [])), ] ), ) self._assertError( repo.check_commits_for_submit, "- goober is not available until string", ( # Build a stack with an unavailable reviewer in the middle. [ commit("1", (["alice"], [])), commit("2", (["bob", "goober"], [])), commit("3", (["charlie"], [])), ] ), ) repo.args.force = True self._assertNoError( repo.check_commits_for_submit, ( [ commit("1", (["alice"], [])), commit("2", (["bob", "goober"], [])), commit("3", (["charlie"], [])), ] ), )
def test_validate_duplicate_revision(self, check_reviewers, get_revisions): check_reviewers.return_value = [] get_revisions.return_value = [True] repo = repository.Repository("", "", "dummy") self._assertNoError( repo.check_commits_for_submit, ([ commit("1", (["r"], []), name="a"), commit("2", (["r"], []), name="b"), commit("3", (["r"], []), name="c"), ]), ) self._assertNoError( repo.check_commits_for_submit, ([ commit("1", (["r"], []), rev_id="1", name="a"), commit("2", (["r"], []), rev_id="2", name="b"), commit("3", (["r"], []), rev_id="3", name="c"), ]), ) self._assertError( repo.check_commits_for_submit, "Phabricator revisions should be unique, " "but the following commits refer to the same one (D1):\n" "* a\n" "* c", ([ commit("1", (["r"], []), rev_id="1", name="a"), commit("2", (["r"], []), rev_id="2", name="b"), commit("3", (["r"], []), rev_id="1", name="c"), ]), ) self._assertError( repo.check_commits_for_submit, "Phabricator revisions should be unique, " "but the following commits refer to the same one (D1):\n" "* a\n" "* c" "\n\n\n" "Phabricator revisions should be unique, " "but the following commits refer to the same one (D2):\n" "* b\n" "* d", ([ commit("1", (["r"], []), rev_id="1", name="a"), commit("2", (["r"], []), rev_id="2", name="b"), commit("3", (["r"], []), rev_id="1", name="c"), commit("4", (["r"], []), rev_id="2", name="d"), ]), )
def test_commit_validation(self, m_whoami, m_get_revs, check_reviewers): check_reviewers.return_value = [] repo = repository.Repository("", "", "dummy") check = repo.check_commits_for_submit self._assertNoError(check, []) self._assertNoError(check, [commit("1", (["r"], []))]) self._assertNoError( check, [ commit("1", (["r1"], [])), commit("2", (["r1"], [])), commit("3", (["r1", "r2"], [])), ], ) self._assertNoError(check, [commit("1", None)]) self._assertNoError( check, [commit("1", (["r"], [])), commit("1", None)]) self._assertError(check, "- missing bug-id", [commit(None, (["r"], []))]) self._assertNoError(check, [commit(None, (["r"], []))], require_bug=False) self._assertError(check, "- missing bug-id", [commit("", (["r"], []))]) self._assertError( check, "- missing bug-id", [commit("1", (["r"], [])), commit("", (["r"], []))], ) self._assertNoError( check, [commit("1", (["r"], [])), commit("", (["r"], []))], require_bug=False, ) self._assertError( check, "- contains arc fields", [commit("1", (["r"], []), body="Summary: blah\nReviewers: r")], ) m_whoami.return_value = dict(phid="PHID-1") m_get_revs.return_value = [dict(fields=dict(authorPHID="PHID-1"))] self._assertNoError(check, [commit(bug_id=1, rev_id=1)]) m_whoami.return_value = dict(phid="PHID-2") self._assertNoError(check, [commit(bug_id=1, rev_id=1)])
def test_single_fails_with_end_rev(self): # --single is working with one SHA1 provided only repo = repository.Repository("", "", "dummy") class Args: def __init__(self, end_rev=environment.DEFAULT_END_REV): self.single = True self.end_rev = end_rev self._assertNoError(repo.set_args, Args()) self._assertError( repo.set_args, "Option --single can be used with only one identifier.", Args("endrev"), )
def get_revs(): mozphab.conduit.set_repo(repository.Repository("", "", "dummy")) return mozphab.conduit.get_revisions