From e83902c2a36ae15a2872f94091a1718c3bc6e487 Mon Sep 17 00:00:00 2001 From: Antoine Lambert Date: Thu, 12 Sep 2019 23:54:13 +0200 Subject: [PATCH] phabricator/lister: Fix get_next_target_from_response return type Without that fix, errors are raised when one wants to list Phabricator repositories in a specific index range. The issue is due to a comparison between a string and an integer. So convert next extracted repository index to integer to match the corresponding model type. Closes T1997 --- swh/lister/phabricator/lister.py | 5 ++--- swh/lister/phabricator/tests/test_lister.py | 11 +++++++++++ 2 files changed, 13 insertions(+), 3 deletions(-) diff --git a/swh/lister/phabricator/lister.py b/swh/lister/phabricator/lister.py index ebf5fcf..3a852d7 100644 --- a/swh/lister/phabricator/lister.py +++ b/swh/lister/phabricator/lister.py @@ -80,9 +80,8 @@ class PhabricatorLister(IndexingHttpLister): def get_next_target_from_response(self, response): body = response.json()['result']['cursor'] - if body['after'] != 'null': - return body['after'] - return None + if body['after'] and body['after'] != 'null': + return int(body['after']) def transport_response_simplified(self, response): repos = response.json() diff --git a/swh/lister/phabricator/tests/test_lister.py b/swh/lister/phabricator/tests/test_lister.py index bd2297a..4b59d16 100644 --- a/swh/lister/phabricator/tests/test_lister.py +++ b/swh/lister/phabricator/tests/test_lister.py @@ -84,3 +84,14 @@ class PhabricatorListerTester(HttpListerTester, unittest.TestCase): ingested_repos = list(fl.db_query_range(self.first_index, self.last_index)) self.assertEqual(len(ingested_repos), self.entries_per_page) + + @requests_mock.Mocker() + def test_range_listing(self, http_mocker): + fl = self.create_fl_with_db(http_mocker) + + fl.run(max_bound=self.last_index - 1) + + self.assertEqual(fl.db_last_index(), self.last_index - 1) + ingested_repos = list(fl.db_query_range(self.first_index, + self.last_index)) + self.assertEqual(len(ingested_repos), self.entries_per_page - 1)