Skip to content

Commit cebd0a3

Browse files
authored
TST: symlink in md5() and list_file_names() (#142)
1 parent e6c534e commit cebd0a3

File tree

1 file changed

+51
-0
lines changed

1 file changed

+51
-0
lines changed

tests/test_io.py

+51
Original file line numberDiff line numberDiff line change
@@ -968,6 +968,30 @@ def test_list_file_names(tmpdir, files, path, filetype, expected, recursive, hid
968968
assert f == expected
969969

970970

971+
def test_list_file_names_symlinks(tmpdir):
972+
# symlinks in folder
973+
folder = audeer.mkdir(tmpdir, "folder")
974+
file = audeer.touch(folder, "file.txt")
975+
link = audeer.path(folder, "link.txt")
976+
os.symlink(file, link)
977+
files = audeer.list_file_names(folder, basenames=True)
978+
assert files == ["file.txt", "link.txt"]
979+
os.remove(link)
980+
# symlinks to sub-folders
981+
sub_folder = audeer.mkdir(folder, "sub-folder")
982+
audeer.touch(sub_folder, "file2.txt")
983+
link = audeer.path(folder, "link")
984+
os.symlink(sub_folder, link)
985+
files = audeer.list_file_names(folder, basenames=True)
986+
assert files == ["file.txt"]
987+
files = audeer.list_file_names(folder, basenames=True, recursive=True)
988+
assert files == [
989+
"file.txt",
990+
os.path.join("link", "file2.txt"),
991+
os.path.join("sub-folder", "file2.txt"),
992+
]
993+
994+
971995
def test_md5_errors():
972996
with pytest.raises(FileNotFoundError):
973997
audeer.md5("does/not/exist")
@@ -1072,6 +1096,33 @@ def test_md5_folder(tmpdir, tree, content, expected):
10721096
assert audeer.md5(tmpdir) == expected
10731097

10741098

1099+
def test_md5_symbolic_link(tmpdir):
1100+
# Link to a file
1101+
file = audeer.touch(tmpdir, "file.txt")
1102+
link = audeer.path(tmpdir, "link.txt")
1103+
os.symlink(file, link)
1104+
assert audeer.md5(file) == audeer.md5(link)
1105+
os.remove(file)
1106+
os.remove(link)
1107+
# Link to a folder
1108+
folder = audeer.mkdir(tmpdir, "folder")
1109+
file = audeer.touch(folder, "file.txt")
1110+
link = audeer.path(tmpdir, "link")
1111+
os.symlink(folder, link)
1112+
assert audeer.md5(folder) == audeer.md5(link)
1113+
os.remove(link)
1114+
# Link to file in folder
1115+
md5_single_file = audeer.md5(folder)
1116+
link = audeer.path(folder, "link.txt")
1117+
os.symlink(file, link)
1118+
md5_link = audeer.md5(folder)
1119+
os.remove(link)
1120+
audeer.touch(folder, "link.txt")
1121+
md5_file = audeer.md5(folder)
1122+
assert md5_link == md5_file
1123+
assert md5_file != md5_single_file
1124+
1125+
10751126
def test_mkdir(tmpdir):
10761127
# New dir
10771128
path = str(tmpdir.mkdir("folder1"))

0 commit comments

Comments
 (0)