test_internet.py 2.49 KB
Newer Older
1
2
3
4
5
6
7
8
"""This file should contain all tests that need access to the internet (apart
from the ones in test_datasets_download.py)

We want to bundle all internet-related tests in one file, so the file can be
cleanly ignored in FB internal test infra.
"""

import os
9
import pytest
10
11
12
13
14
15
16
import warnings
from urllib.error import URLError

import torchvision.datasets.utils as utils
from common_utils import get_tmp_dir


17
class TestDatasetUtils:
18
19
20
21
22
23
24
25
26
27

    def test_get_redirect_url(self):
        url = "http://www.vision.caltech.edu/visipedia-data/CUB-200-2011/CUB_200_2011.tgz"
        expected = "https://drive.google.com/file/d/1hbzc_P1FuxMkcabkgn9ZKinBwW683j45/view"

        actual = utils._get_redirect_url(url)
        assert actual == expected

    def test_get_redirect_url_max_hops_exceeded(self):
        url = "http://www.vision.caltech.edu/visipedia-data/CUB-200-2011/CUB_200_2011.tgz"
28
        with pytest.raises(RecursionError):
29
30
31
32
33
34
35
            utils._get_redirect_url(url, max_hops=0)

    def test_download_url(self):
        with get_tmp_dir() as temp_dir:
            url = "http://github.com/pytorch/vision/archive/master.zip"
            try:
                utils.download_url(url, temp_dir)
36
                assert len(os.listdir(temp_dir)) != 0
37
            except URLError:
38
                pytest.skip(f"could not download test file '{url}'")
39
40
41
42
43
44

    def test_download_url_retry_http(self):
        with get_tmp_dir() as temp_dir:
            url = "https://github.com/pytorch/vision/archive/master.zip"
            try:
                utils.download_url(url, temp_dir)
45
                assert len(os.listdir(temp_dir)) != 0
46
            except URLError:
47
                pytest.skip(f"could not download test file '{url}'")
48
49
50
51

    def test_download_url_dont_exist(self):
        with get_tmp_dir() as temp_dir:
            url = "http://github.com/pytorch/vision/archive/this_doesnt_exist.zip"
52
            with pytest.raises(URLError):
53
54
                utils.download_url(url, temp_dir)

55
    def test_download_url_dispatch_download_from_google_drive(self, mocker):
56
57
58
59
60
61
        url = "https://drive.google.com/file/d/1hbzc_P1FuxMkcabkgn9ZKinBwW683j45/view"

        id = "1hbzc_P1FuxMkcabkgn9ZKinBwW683j45"
        filename = "filename"
        md5 = "md5"

62
        mocked = mocker.patch('torchvision.datasets.utils.download_file_from_google_drive')
63
64
65
        with get_tmp_dir() as root:
            utils.download_url(url, root, filename, md5)

66
67
68
69
70
        mocked.assert_called_once_with(id, root, filename, md5)


if __name__ == '__main__':
    pytest.main([__file__])