Spaces:
Running
on
L40S
Running
on
L40S
# 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)) | |