← Files Life Sciences NGS AnalysisARCHIVED FILE
tests/test_ngs_preflight.py
2.73 KB · Sep 30, 2026 · 22:50 UTC
import json
import sys
import tempfile
import unittest
from pathlib import Path
from types import SimpleNamespace
SCRIPT_DIR = Path(__file__).resolve().parents[1] / "scripts"
sys.path.insert(0, str(SCRIPT_DIR))
import ngs_preflight # noqa: E402
class InstallPlanArtifactTests(unittest.TestCase):
def test_bioconda_install_command_is_noninteractive(self) -> None:
cmd = ngs_preflight.install_command(
"fastqc",
{"install": {"conda": "bioconda::fastqc"}},
"micromamba",
)
self.assertEqual(
cmd, ["micromamba", "install", "-y", "-c", "conda-forge", "-c", "bioconda", "fastqc"]
)
def test_install_plan_writes_json_and_guarded_shell_script(self) -> None:
args = SimpleNamespace(
tool=None,
pipeline="shotgun_metagenomics",
profile=None,
manager="micromamba",
network_checks=False,
)
registry = {
"tools": {
"kraken2": {
"executables": ["kraken2"],
"install": {"conda": "bioconda::kraken2"},
"notes": "Database setup is separate.",
"license": "public_or_open",
}
}
}
entries = ngs_preflight.install_plan_entries(["kraken2"], registry, "micromamba")
plan = ngs_preflight.build_install_artifact(
args=args,
statuses=[
{
"tool": "kraken2",
"executables": [{"name": "kraken2", "present": False, "path": None}],
}
],
missing=["kraken2"],
runtime_missing=[],
blocking_missing=["kraken2"],
plan_entries=entries,
)
with tempfile.TemporaryDirectory() as tmp:
outputs = ngs_preflight.write_install_artifacts(plan, Path(tmp))
plan_path = Path(outputs["install_plan_json"])
commands_path = Path(outputs["install_commands_sh"])
self.assertTrue(plan_path.exists())
self.assertTrue(commands_path.exists())
loaded = json.loads(plan_path.read_text(encoding="utf-8"))
self.assertEqual(
loaded["permission_model"]["install_script_default_mode"], "review_only"
)
self.assertEqual(loaded["install_plan"][0]["tool"], "kraken2")
script = commands_path.read_text(encoding="utf-8")
self.assertIn("NGS_RUN_INSTALL_COMMANDS=1", script)
self.assertIn("Review-only mode", script)
self.assertIn(
"run_cmd micromamba install -y -c conda-forge -c bioconda kraken2", script
)
if __name__ == "__main__":
unittest.main()
SHA-256: 8bfa3986cb703e19d2e9fda42219c9c8b87e815b9ef777329d3362e97eec98e3