about summary refs log tree commit diff
path: root/tests/r_qtl
diff options
context:
space:
mode:
Diffstat (limited to 'tests/r_qtl')
-rw-r--r--tests/r_qtl/test_files/nonexistent.zipbin0 -> 380 bytes
-rw-r--r--tests/r_qtl/test_r_qtl2_nonexistent_file.py29
2 files changed, 29 insertions, 0 deletions
diff --git a/tests/r_qtl/test_files/nonexistent.zip b/tests/r_qtl/test_files/nonexistent.zip
new file mode 100644
index 0000000..4a31bf1
--- /dev/null
+++ b/tests/r_qtl/test_files/nonexistent.zip
Binary files differdiff --git a/tests/r_qtl/test_r_qtl2_nonexistent_file.py b/tests/r_qtl/test_r_qtl2_nonexistent_file.py
new file mode 100644
index 0000000..c783a76
--- /dev/null
+++ b/tests/r_qtl/test_r_qtl2_nonexistent_file.py
@@ -0,0 +1,29 @@
+"""Test accessing nonexistent member."""
+from pathlib import Path
+
+import pytest
+from zipfile import ZipFile
+
+from r_qtl import r_qtl2 as rqtl2
+
+@pytest.mark.unit_test
+@pytest.mark.parametrize(
+    "filepath,memberkey",
+    (("tests/r_qtl/test_files/nonexistent.zip", "geno"),
+     ("tests/r_qtl/test_files/nonexistent.zip", "founder_geno"),
+     ("tests/r_qtl/test_files/nonexistent.zip", "pheno"),
+     ("tests/r_qtl/test_files/nonexistent.zip", "covar"),
+     ("tests/r_qtl/test_files/nonexistent.zip", "phenocovar"),
+     ("tests/r_qtl/test_files/nonexistent.zip", "gmap"),
+     ("tests/r_qtl/test_files/nonexistent.zip", "pmap")))
+def test_loading_nonexistent_file(filepath, memberkey):
+    """
+    GIVEN: A zipfile with a valid control file, but some files mentioned in the
+        control file do not exist in the zipfile
+    WHEN: access is made to such missing files
+    THEN: raise an exception
+    """
+    with (ZipFile(Path(filepath).absolute(), "r") as zfile,
+          pytest.raises(rqtl2.InvalidFormat)):
+        cdata = rqtl2.control_data(zfile)
+        tuple(rqtl2.file_data(zfile, memberkey, cdata))