import socket
import pytest
from .. import dirutils
[docs]
def test_prepare_outdirs():
primary_outdir = None
outdirs = dict()
result = dirutils.prepare_outdirs(outdirs, primary_outdir)
assert result == dict()
primary_outdir = "/users/opid22/inhouse/id222207/id22/20220701/processed"
result = dirutils.prepare_outdirs(outdirs, primary_outdir)
expected = {
"primary": (
None,
"/users/opid22/inhouse/id222207/id22/20220701/processed",
)
}
assert result == expected
outdirs = {
"primary": "opid22@diffract22new:/users/opid22/data1/",
"secondary": "opid22@diffract22new:/users/opid22/data1/",
}
with pytest.raises(ValueError):
dirutils.prepare_outdirs(outdirs, primary_outdir)
outdirs = {
"primary": f"opid22@{socket.gethostname()}:/users/opid22/data1/",
"secondary": "opid22@diffract22new:/users/opid22/data1/",
}
result = dirutils.prepare_outdirs(outdirs, primary_outdir)
expected = {
"primary": (None, "/users/opid22/data1/"),
"secondary": ("opid22@diffract22new", "/users/opid22/data1/"),
"processed": (
None,
"/users/opid22/inhouse/id222207/id22/20220701/processed",
),
}
assert result == expected
[docs]
def test_copy_local_file_creates_file(tmp_path):
src = tmp_path / "src.txt"
dst = tmp_path / "dst.txt"
src.write_text("hello")
dirutils.copy_local_file(str(src), str(dst), overwrite=False)
assert dst.exists()
assert dst.read_text() == "hello"
[docs]
def test_copy_local_file_no_overwrite(tmp_path):
src = tmp_path / "src.txt"
dst = tmp_path / "dst.txt"
src.write_text("original")
dirutils.copy_local_file(str(src), str(dst), overwrite=False)
src.write_text("new content")
dirutils.copy_local_file(str(src), str(dst), overwrite=False)
assert dst.read_text() == "original"
[docs]
def test_copy_local_file_with_overwrite(tmp_path):
src = tmp_path / "src.txt"
dst = tmp_path / "dst.txt"
src.write_text("original")
dirutils.copy_local_file(str(src), str(dst), overwrite=False)
src.write_text("new content")
dirutils.copy_local_file(str(src), str(dst), overwrite=True)
assert dst.read_text() == "new content"
[docs]
def test_copy_file_to_primary(tmp_path):
primary_dir = tmp_path / "primary"
primary_dir.mkdir()
src = tmp_path / "file.txt"
src.write_text("data")
outdirs = {"primary": (None, str(primary_dir))}
dirutils.copy_file_to_primary(str(src), outdirs, overwrite=False)
dst = primary_dir / "file.txt"
assert dst.exists()
assert dst.read_text() == "data"
[docs]
def test_copy_file_to_primary_overwrite(tmp_path):
primary_dir = tmp_path / "primary"
primary_dir.mkdir()
src = tmp_path / "file.txt"
src.write_text("v1")
outdirs = {"primary": (None, str(primary_dir))}
dirutils.copy_file_to_primary(str(src), outdirs, overwrite=False)
dst = primary_dir / "file.txt"
src.write_text("v2")
dirutils.copy_file_to_primary(str(src), outdirs, overwrite=True)
assert dst.read_text() == "v2"
[docs]
def test_copy_primary_file(tmp_path):
primary_dir = tmp_path / "primary"
other_dir = tmp_path / "other"
primary_dir.mkdir()
other_dir.mkdir()
file_path = primary_dir / "data.txt"
file_path.write_text("content")
outdirs = {
"primary": (None, str(primary_dir)),
"processed": (None, str(other_dir)),
}
dirutils.copy_primary_file("data.txt", outdirs, overwrite=False)
dst = other_dir / "data.txt"
assert dst.exists()
assert dst.read_text() == "content"
[docs]
def test_copy_primary_file_no_overwrite(tmp_path):
primary_dir = tmp_path / "primary"
other_dir = tmp_path / "other"
primary_dir.mkdir()
other_dir.mkdir()
file_path = primary_dir / "data.txt"
file_path.write_text("v1")
outdirs = {
"primary": (None, str(primary_dir)),
"processed": (None, str(other_dir)),
}
dirutils.copy_primary_file("data.txt", outdirs, overwrite=False)
dst = other_dir / "data.txt"
file_path.write_text("v2")
dirutils.copy_primary_file("data.txt", outdirs, overwrite=False)
assert dst.read_text() == "v1"
[docs]
def test_copy_primary_file_with_overwrite(tmp_path):
primary_dir = tmp_path / "primary"
other_dir = tmp_path / "other"
primary_dir.mkdir()
other_dir.mkdir()
file_path = primary_dir / "data.txt"
file_path.write_text("v1")
outdirs = {
"primary": (None, str(primary_dir)),
"processed": (None, str(other_dir)),
}
dirutils.copy_primary_file("data.txt", outdirs, overwrite=False)
dst = other_dir / "data.txt"
file_path.write_text("v2")
dirutils.copy_primary_file("data.txt", outdirs, overwrite=True)
assert dst.read_text() == "v2"