Scikit-image: Test for availability of the Pooch resources in CI

Created on 1 May 2020  路  2Comments  路  Source: scikit-image/scikit-image

Description

Some of our builds are reliably failing with

requests.exceptions.HTTPError: 404 Client Error: Not Found for url: https://github.com/scikit-image/scikit-image/raw/master/skimage/feature/tests/data/OriginalX75Y75.png

Full error:

=================================== FAILURES ===================================
____________________ test_masked_registration_padfield_data ____________________

    def test_masked_registration_padfield_data():
        """ Masked translation registration should behave like in the original
        publication """
        # Test translated from MATLABimplementation `MaskedFFTRegistrationTest`
        # file. You can find the source code here:
        # http://www.dirkpadfield.com/Home/MaskedFFTRegistrationCode.zip

        shifts = [(75, 75), (-130, 130), (130, 130)]
        for xi, yi in shifts:

            fixed_image = imread(
                fetch('feature/tests/data/OriginalX{:d}Y{:d}.png'
>                     ''.format(xi, yi)))

scikit-image/skimage/registration/tests/test_masked_phase_cross_correlation.py:107: 
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 
scikit-image/skimage/_shared/testing.py:216: in fetch
    return data._fetch(data_filename)
scikit-image/skimage/data/__init__.py:155: in _fetch
    resolved_path = image_fetcher.fetch(data_filename)
../../venv/lib/python3.7/site-packages/pooch/core.py:563: in fetch
    stream_download(url, full_path, known_hash, downloader, pooch=self)
../../venv/lib/python3.7/site-packages/pooch/core.py:731: in stream_download
    downloader(url, tmp, pooch)
../../venv/lib/python3.7/site-packages/pooch/downloaders.py:168: in __call__
    response.raise_for_status()
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 

self = <Response [404]>

    def raise_for_status(self):
        """Raises stored :class:`HTTPError`, if one occurred."""

        http_error_msg = ''
        if isinstance(self.reason, bytes):
            # We attempt to decode utf-8 first because some servers
            # choose to localize their reason strings. If the string
            # isn't utf-8, we fall back to iso-8859-1 for all other
            # encodings. (See PR #3538)
            try:
                reason = self.reason.decode('utf-8')
            except UnicodeDecodeError:
                reason = self.reason.decode('iso-8859-1')
        else:
            reason = self.reason

        if 400 <= self.status_code < 500:
            http_error_msg = u'%s Client Error: %s for url: %s' % (self.status_code, reason, self.url)

        elif 500 <= self.status_code < 600:
            http_error_msg = u'%s Server Error: %s for url: %s' % (self.status_code, reason, self.url)

        if http_error_msg:
>           raise HTTPError(http_error_msg, response=self)
E           requests.exceptions.HTTPError: 404 Client Error: Not Found for url: https://github.com/scikit-image/scikit-image/raw/master/skimage/feature/tests/data/OriginalX75Y75.png

../../venv/lib/python3.7/site-packages/requests/models.py:941: HTTPError
----------------------------- Captured stderr call -----------------------------
Downloading file 'feature/tests/data/OriginalX75Y75.png' from 'https://github.com/scikit-image/scikit-image/raw/master/skimage/feature/tests/data/OriginalX75Y75.png' to '/home/travis/.cache/scikit-image/master'.

Indeed, the file is not there anymore. I think this is caused by #4503. Additionally, pooch urls should point to a stable blob rather than to master.

infrastructure

Most helpful comment

I think this issue may need to be reopened and reframed.

As a failure of our test system to catch these sorts of integration challenges.

All 2 comments

I think this issue may need to be reopened and reframed.

As a failure of our test system to catch these sorts of integration challenges.

I fully agree with Mark

Was this page helpful?
0 / 5 - 0 ratings