Page MenuHomeSoftware Heritage

Jenkins > .tox.py3.lib.python3.7.site-packages.swh.lister.nixguix.tests.test_lister::test_lister_nixguix_mostly_noop
Failed

TEST RESULT

Run At
Oct 3 2022, 6:07 PM
Details
urls = ['https://crates.io/api/v1/0.1.5/no-extension-and-head-404-so-skipped'] request = <requests.sessions.Session object at 0x7f4568acb1d0> def is_tarball(urls: List[str], request: Optional[Any] = None) -> Tuple[bool, str]: """Determine whether a list of files actually are tarballs or simple files. When this cannot be answered simply out of the url, when request is provided, this executes a HTTP `HEAD` query on the url to determine the information. If request is not provided, this raises an ArtifactNatureUndetected exception. Args: urls: name of the remote files for which the extension needs to be checked. Raises: ArtifactNatureUndetected when the artifact's nature cannot be detected out of its url Returns: A tuple (bool, url). The boolean represents whether the url is an archive or not. The second parameter is the actual url once the head request is issued as a fallback of not finding out whether the urls are tarballs or not. """ def _is_tarball(url): """Determine out of an extension whether url is a tarball. Raises: IndexError in case no extension is available """ return Path(urlparse(url).path).suffixes[-1].lstrip(".") in TARBALL_EXTENSIONS index = random.randrange(len(urls)) url = urls[index] try: > is_tar = _is_tarball(url) .tox/py3/lib/python3.7/site-packages/swh/lister/nixguix/lister.py:131: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ url = 'https://crates.io/api/v1/0.1.5/no-extension-and-head-404-so-skipped' def _is_tarball(url): """Determine out of an extension whether url is a tarball. Raises: IndexError in case no extension is available """ > return Path(urlparse(url).path).suffixes[-1].lstrip(".") in TARBALL_EXTENSIONS E IndexError: list index out of range .tox/py3/lib/python3.7/site-packages/swh/lister/nixguix/lister.py:126: IndexError During handling of the above exception, another exception occurred: datadir = '/var/lib/jenkins/workspace/DLS/tests-on-diff/.tox/py3/lib/python3.7/site-packages/swh/lister/nixguix/tests/data' swh_scheduler = <swh.scheduler.backend.SchedulerBackend object at 0x7f456b9b6a58> requests_mock = <requests_mock.mocker.Mocker object at 0x7f456b9b6048> def test_lister_nixguix_mostly_noop(datadir, swh_scheduler, requests_mock): """NixGuixLister should ignore unsupported or incomplete origins""" url = "https://guix.gnu.org/sources.json" origin_upstream = "https://git.savannah.gnu.org/git/guix.git" lister = NixGuixLister(swh_scheduler, url=url, origin_upstream=origin_upstream) response = page_response(datadir, "guix") requests_mock.get( url, [{"json": response}], ) # Amongst artifacts, this url does not allow to determine its nature (tarball, file) # It's ending up doing a http head query which ends up being 404, so it's skipped. requests_mock.head( "https://crates.io/api/v1/crates/proc-macro-crate/0.1.5/download", status_code=404, ) > listed_result = lister.run() .tox/py3/lib/python3.7/site-packages/swh/lister/nixguix/tests/test_lister.py:212: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ .tox/py3/lib/python3.7/site-packages/swh/lister/pattern.py:162: in run for page in self.get_pages(): .tox/py3/lib/python3.7/site-packages/swh/lister/nixguix/lister.py:300: in get_pages is_tar, origin = is_tarball(urls, self.session) .tox/py3/lib/python3.7/site-packages/swh/lister/nixguix/lister.py:142: in is_tarball response = request.head(url) .tox/py3/lib/python3.7/site-packages/requests/sessions.py:622: in head return self.request("HEAD", url, **kwargs) .tox/py3/lib/python3.7/site-packages/requests/sessions.py:587: in request resp = self.send(prep, **send_kwargs) .tox/py3/lib/python3.7/site-packages/requests_mock/mocker.py:185: in _fake_send return _original_send(session, request, **kwargs) .tox/py3/lib/python3.7/site-packages/requests/sessions.py:701: in send r = adapter.send(request, **kwargs) _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <requests_mock.adapter.Adapter object at 0x7f45685d3c18> request = <requests_mock.request._RequestObjectProxy object at 0x7f4568bf16a0> kwargs = {'cert': None, 'proxies': OrderedDict(), 'stream': False, 'timeout': None, ...} matcher = <requests_mock.adapter._Matcher object at 0x7f4568acb470>, resp = None def send(self, request, **kwargs): request = _RequestObjectProxy(request, case_sensitive=self._case_sensitive, **kwargs) self._add_to_history(request) for matcher in reversed(self._matchers): try: resp = matcher(request) except Exception: request._matcher = weakref.ref(matcher) raise if resp is not None: request._matcher = weakref.ref(matcher) resp.connection = self logger.debug('{} {} {}'.format(request._request.method, request._request.url, resp.status_code)) return resp > raise exceptions.NoMockAddress(request) E requests_mock.exceptions.NoMockAddress: No mock address: HEAD https://crates.io/api/v1/0.1.5/no-extension-and-head-404-so-skipped .tox/py3/lib/python3.7/site-packages/requests_mock/adapter.py:261: NoMockAddress