Spaces:
Runtime error
Runtime error
| # Copyright (c) OpenMMLab. All rights reserved. | |
| import os.path as osp | |
| from pathlib import Path | |
| import pytest | |
| import mmcv | |
| def test_is_filepath(): | |
| assert mmcv.is_filepath(__file__) | |
| assert mmcv.is_filepath('abc') | |
| assert mmcv.is_filepath(Path('/etc')) | |
| assert not mmcv.is_filepath(0) | |
| def test_fopen(): | |
| assert hasattr(mmcv.fopen(__file__), 'read') | |
| assert hasattr(mmcv.fopen(Path(__file__)), 'read') | |
| def test_check_file_exist(): | |
| mmcv.check_file_exist(__file__) | |
| with pytest.raises(FileNotFoundError): | |
| mmcv.check_file_exist('no_such_file.txt') | |
| def test_scandir(): | |
| folder = osp.join(osp.dirname(osp.dirname(__file__)), 'data/for_scan') | |
| filenames = ['a.bin', '1.txt', '2.txt', '1.json', '2.json', '3.TXT'] | |
| assert set(mmcv.scandir(folder)) == set(filenames) | |
| assert set(mmcv.scandir(Path(folder))) == set(filenames) | |
| assert set(mmcv.scandir(folder, '.txt')) == { | |
| filename | |
| for filename in filenames if filename.endswith('.txt') | |
| } | |
| assert set(mmcv.scandir(folder, ('.json', '.txt'))) == { | |
| filename | |
| for filename in filenames if filename.endswith(('.txt', '.json')) | |
| } | |
| assert set(mmcv.scandir(folder, '.png')) == set() | |
| # path of sep is `\\` in windows but `/` in linux, so osp.join should be | |
| # used to join string for compatibility | |
| filenames_recursive = [ | |
| 'a.bin', '1.txt', '2.txt', '1.json', '2.json', '3.TXT', | |
| osp.join('sub', '1.json'), | |
| osp.join('sub', '1.txt'), '.file' | |
| ] | |
| # .file starts with '.' and is a file so it will not be scanned | |
| assert set(mmcv.scandir(folder, recursive=True)) == { | |
| filename | |
| for filename in filenames_recursive if filename != '.file' | |
| } | |
| assert set(mmcv.scandir(Path(folder), recursive=True)) == { | |
| filename | |
| for filename in filenames_recursive if filename != '.file' | |
| } | |
| assert set(mmcv.scandir(folder, '.txt', recursive=True)) == { | |
| filename | |
| for filename in filenames_recursive if filename.endswith('.txt') | |
| } | |
| assert set( | |
| mmcv.scandir(folder, '.TXT', recursive=True, | |
| case_sensitive=False)) == { | |
| filename | |
| for filename in filenames_recursive | |
| if filename.endswith(('.txt', '.TXT')) | |
| } | |
| assert set( | |
| mmcv.scandir( | |
| folder, ('.TXT', '.JSON'), recursive=True, | |
| case_sensitive=False)) == { | |
| filename | |
| for filename in filenames_recursive | |
| if filename.endswith(('.txt', '.json', '.TXT')) | |
| } | |
| with pytest.raises(TypeError): | |
| list(mmcv.scandir(123)) | |
| with pytest.raises(TypeError): | |
| list(mmcv.scandir(folder, 111)) | |