コード例 #1
0
ファイル: test_submit.py プロジェクト: zalun/review
    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"], [])),
                ]
            ),
        )
コード例 #2
0
    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"),
            ]),
        )
コード例 #3
0
    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)])
コード例 #4
0
    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"),
        )
コード例 #5
0
def get_revs():
    mozphab.conduit.set_repo(repository.Repository("", "", "dummy"))
    return mozphab.conduit.get_revisions