Mercurial > kallithea
changeset 5047:99f090563f5f
changeset status: fix common case where a reviewer did not yet review anything
When a reviewer did not yet make any review, its status for the changeset is
None, causing the code to crash. The unit tests also did not cover this case.
author | Thomas De Schampheleire <thomas.de.schampheleire@gmail.com> |
---|---|
date | Mon, 20 Apr 2015 17:02:42 +0200 |
parents | 7e5a0c784880 |
children | b13a1062ea9c |
files | kallithea/model/changeset_status.py kallithea/tests/models/test_changeset_status.py |
diffstat | 2 files changed, 12 insertions(+), 2 deletions(-) [+] |
line wrap: on
line diff
--- a/kallithea/model/changeset_status.py Mon Apr 20 22:52:23 2015 +0200 +++ b/kallithea/model/changeset_status.py Mon Apr 20 17:02:42 2015 +0200 @@ -75,10 +75,10 @@ if not statuses: return ChangesetStatus.STATUS_UNDER_REVIEW - if all(st.status == ChangesetStatus.STATUS_APPROVED for st in statuses): + if all(st and st.status == ChangesetStatus.STATUS_APPROVED for st in statuses): return ChangesetStatus.STATUS_APPROVED - if any(st.status == ChangesetStatus.STATUS_REJECTED for st in statuses): + if any(st and st.status == ChangesetStatus.STATUS_REJECTED for st in statuses): return ChangesetStatus.STATUS_REJECTED return ChangesetStatus.STATUS_UNDER_REVIEW
--- a/kallithea/tests/models/test_changeset_status.py Mon Apr 20 22:52:23 2015 +0200 +++ b/kallithea/tests/models/test_changeset_status.py Mon Apr 20 17:02:42 2015 +0200 @@ -32,6 +32,16 @@ ('reject_underreview', STATUS_REJECTED, [S(STATUS_REJECTED), S(STATUS_UNDER_REVIEW)]), ('reject_notreviewed', STATUS_REJECTED, [S(STATUS_REJECTED), S(STATUS_NOT_REVIEWED)]), ('notreviewed', STATUS_UNDER_REVIEW, [S(STATUS_NOT_REVIEWED)]), + ('approve_none', STATUS_UNDER_REVIEW, [S(STATUS_APPROVED), None]), + ('approve2_none', STATUS_UNDER_REVIEW, [S(STATUS_APPROVED), S(STATUS_APPROVED), None]), + ('approve_reject_none', STATUS_REJECTED, [S(STATUS_APPROVED), S(STATUS_REJECTED), None]), + ('approve_underreview_none', STATUS_UNDER_REVIEW, [S(STATUS_APPROVED), S(STATUS_UNDER_REVIEW), None]), + ('approve_notreviewed_none', STATUS_UNDER_REVIEW, [S(STATUS_APPROVED), S(STATUS_NOT_REVIEWED), None]), + ('underreview_none', STATUS_UNDER_REVIEW, [S(STATUS_UNDER_REVIEW), S(STATUS_UNDER_REVIEW), None]), + ('reject_none', STATUS_REJECTED, [S(STATUS_REJECTED), None]), + ('reject_underreview_none', STATUS_REJECTED, [S(STATUS_REJECTED), S(STATUS_UNDER_REVIEW), None]), + ('reject_notreviewed_none', STATUS_REJECTED, [S(STATUS_REJECTED), S(STATUS_NOT_REVIEWED), None]), + ('notreviewed_none', STATUS_UNDER_REVIEW, [S(STATUS_NOT_REVIEWED), None]), ]) def test_result(self, name, expected_result, statuses): result = self.m._calculate_status(statuses)