import os import pytest import audeer @pytest.mark.parametrize( "path", [ ("~/.someconfigrc"), ("file.tar.gz"), ("/a/c.d/g"), ("/a/c.d/g.exe"), ("../.././README.md"), ("folder/file.txt"), (b"folder/file.txt"), (""), ], ) def test_path(path): if path: expected_path = os.path.abspath(os.path.expanduser(path)) else: expected_path = "" if isinstance(expected_path, bytes): expected_path = expected_path.decode("utf8") path = audeer.path(path) assert path == expected_path assert isinstance(path, str) path = audeer.safe_path(path) assert path == expected_path assert isinstance(path, str) @pytest.mark.parametrize( "path, paths", [ ("/a/b", ["file.tar.gz"]), ("/a", ["b", "file.tar.gz"]), ("/a/c.d/g", ["../f"]), ("", ""), ], ) def test_path_join(path, paths): expected_path = os.path.join(path, *paths) if expected_path: expected_path = os.path.abspath(os.path.expanduser(expected_path)) else: expected_path = "" path = audeer.path(path, *paths) assert path == expected_path assert isinstance(path, str) def test_path_symlinks(tmpdir): filename = "file.txt" linkname = "link.txt" dir_tmp = tmpdir.mkdir("folder") f = dir_tmp.join(filename) f.write("") folder = audeer.mkdir(str(dir_tmp)) file = os.path.join(folder, filename) link = os.path.join(folder, linkname) os.symlink(file, link) for follow_symlink in [True, False]: if follow_symlink: expected_path = os.path.realpath(os.path.expanduser(link)) else: expected_path = os.path.abspath(os.path.expanduser(link)) path = audeer.path(link, follow_symlink=follow_symlink) _, path = os.path.splitdrive(path) _, expected_path = os.path.splitdrive(expected_path) assert path == expected_path assert isinstance(path, str)
Memory