diff --git a/swh/lister/github/tests/conftest.py b/swh/lister/github/tests/conftest.py new file mode 100644 index 0000000..e28927b --- /dev/null +++ b/swh/lister/github/tests/conftest.py @@ -0,0 +1,26 @@ +# Copyright (C) 2019-2020 The Software Heritage developers +# See the AUTHORS file at the top-level directory of this distribution +# License: GNU General Public License version 3, or any later version +# See top-level LICENSE file for more information + +import pytest + + +@pytest.fixture +def lister_under_test(): + return "github" + + +@pytest.fixture +def lister_github(swh_lister): + for task_type in [ + { + "type": "load-git", + "description": "Load git repository", + "backend_name": "swh.loader.git.tasks.UpdateGitRepository", + "default_interval": "1 day", + }, + ]: + swh_lister.scheduler.create_task_type(task_type) + + return swh_lister diff --git a/swh/lister/github/tests/test_lister.py b/swh/lister/github/tests/test_lister.py index fef8810..1c0d7b1 100644 --- a/swh/lister/github/tests/test_lister.py +++ b/swh/lister/github/tests/test_lister.py @@ -1,87 +1,81 @@ # Copyright (C) 2017-2020 The Software Heritage developers # See the AUTHORS file at the top-level directory of this distribution # License: GNU General Public License version 3, or any later version # See top-level LICENSE file for more information import re import unittest -import pytest import requests_mock from swh.lister.core.tests.test_lister import HttpListerTester from swh.lister.github.lister import GitHubLister class GitHubListerTester(HttpListerTester, unittest.TestCase): Lister = GitHubLister test_re = re.compile(r"/repositories\?since=([^?&]+)") lister_subdir = "github" good_api_response_file = "data/https_api.github.com/first_response.json" bad_api_response_file = "data/https_api.github.com/empty_response.json" first_index = 0 last_index = 369 entries_per_page = 100 convert_type = int def response_headers(self, request): headers = {"X-RateLimit-Remaining": "1"} if self.request_index(request) == self.first_index: headers.update( { "Link": ";" ' rel="next",' ";" ' rel="first"' % self.last_index } ) else: headers.update( { "Link": ";" ' rel="first"' } ) return headers def mock_rate_quota(self, n, request, context): self.rate_limit += 1 context.status_code = 403 context.headers["X-RateLimit-Remaining"] = "0" context.headers["Retry-After"] = "1" # 1 second return '{"error":"dummy"}' @requests_mock.Mocker() def test_scheduled_tasks(self, http_mocker): self.scheduled_tasks_test( "data/https_api.github.com/next_response.json", 876, http_mocker ) -@pytest.fixture -def lister_under_test(): - return "github" - - -def test_lister_github(swh_lister, requests_mock_datadir): +def test_lister_github(lister_github, requests_mock_datadir): """Simple github listing should create scheduled tasks """ - swh_lister.run() + lister_github.run() - r = swh_lister.scheduler.search_tasks(task_type="load-git") + r = lister_github.scheduler.search_tasks(task_type="load-git") assert len(r) == 100 for row in r: assert row["type"] == "load-git" # arguments check args = row["arguments"]["args"] assert len(args) == 0 # kwargs kwargs = row["arguments"]["kwargs"] url = kwargs["url"] assert url.startswith("https://github.com") assert row["policy"] == "recurring" assert row["priority"] is None