# HG changeset patch # User Thomas De Schampheleire # Date 1429542162 -7200 # Node ID 99f090563f5f413b0672677bbe527e694903152a # Parent 7e5a0c784880bf8da968710948f3aa617403bf5a 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. diff -r 7e5a0c784880 -r 99f090563f5f kallithea/model/changeset_status.py --- 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 diff -r 7e5a0c784880 -r 99f090563f5f kallithea/tests/models/test_changeset_status.py --- 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)