-
Amandine PERRIN authoredAmandine PERRIN authored
test_make_all-installed.py 8.95 KiB
#!/usr/bin/env python3
# coding: utf-8
"""
Tests for make script, installing PanACoTA according to already existing dependencies
Here, all dependencies are installed
"""
import os
import glob
import pytest
import subprocess
import shlex
from . import utilities as utils
@pytest.fixture
def install_panacota():
cmd = "python3 make"
error = "Error installing"
utils.run_cmd(cmd, error)
def teardown_function(function):
"""
Uninstall PanACoTA and installed dependencies at the end of each test
"""
print("TEARDOWN\n")
cmd = "python3 make uninstall"
error = "Error uninstall"
utils.run_cmd(cmd, error)
os.remove("install.log")
print("cleaning repo")
def test_install_panacota():
"""
Test that when installing from a computer containing only all dependencies, it returns a message without any warning: everything is ok
"""
cmd = "python3 make uninstall"
error = "Error trying to uninstall PanACoTa"
utils.run_cmd(cmd, error)
assert not utils.check_installed("PanACoTA")
# assert utils.check_installed("barrnap")
assert utils.check_installed("prokka")
assert utils.check_installed("mash")
assert utils.check_installed("FastTreeMP")
# Install panacota
cmd = "python3 make"
error = "Error trying to install PanACoTA from base"
utils.run_cmd(cmd, error)
assert utils.check_installed("PanACoTA")
# assert utils.check_installed("barrnap")
assert utils.check_installed("prokka")
assert utils.check_installed("mash")
assert utils.check_installed("FastTreeMP")
# Check that panacota is installed (pip3 module exists)
assert utils.is_package_installed("PanACoTA")
# Check that it is installed in "final mode"
cmd = "pip3 show PanACoTA"
err = "error pip3"
stdout = "stdout_pip3show.out"
with open(stdout, "w") as stdof:
utils.run_cmd(cmd, err, stdout=stdof, stderr=stdof)
with open(stdout, "r") as stdof:
for line in stdof:
if line.startswith("Location"):
loc = line.split()[-1]
assert glob.glob(os.path.join(loc, r'PanACoTA*dist-info'))
os.remove(stdout)
# Check not installed in user mode
cmd = "pip list --user"
list_user_packages = str(subprocess.check_output(shlex.split(cmd)))
assert "PanACoTA" not in list_user_packages
# Check output logfile content. Check that all content is present, in any order.
logfile = "install.log"
content = ["Installing PanACoTA...", "DONE"]
with open(logfile, "r") as logf:
logf_content = "".join(logf.readlines())
for linec in content:
assert linec in logf_content
# Check that needed packages are installed
assert utils.is_package_installed("argparse")
assert utils.is_package_installed("progressbar")
assert utils.is_package_installed("numpy")
assert utils.is_package_installed("matplotlib")
assert utils.is_package_installed("Bio")
print("test_installed done")
def test_upgrade(install_panacota):
"""
Test upgrading PanACoTA when dependencies are still installed
"""
assert utils.check_installed("barrnap")
assert utils.check_installed("prokka")
assert utils.check_installed("FastTreeMP")
assert utils.check_installed("PanACoTA")
# Upgrade PanACoTA
cmd = "python3 make upgrade"
error = "Error upgrade"
utils.run_cmd(cmd, error)
assert utils.check_installed("barrnap")
assert utils.check_installed("prokka")
assert utils.check_installed("PanACoTA")
assert utils.check_installed("FastTreeMP")
logfile = "install.log"
with open(logfile, "r") as logf:
lines = logf.readlines()
assert len(lines) == 2
assert "Upgrading PanACoTA" in lines[0]
assert "DONE" in lines[1]
print("test_upgrade done")
def test_upgrade_notinstalled():
"""
Test upgrading PanACoTA when dependencies are not installed (only barrnap),
and PanACoTA is not installed. It just installs PanACoTA, without prokka dep
"""
cmd = "python3 make uninstall"
error = "Error trying to uninstall PanACoTa"
utils.run_cmd(cmd, error)
assert utils.check_installed("barrnap")
assert utils.check_installed("prokka")
assert utils.check_installed("FastTreeMP")
assert not utils.check_installed("PanACoTA")
cmd = "python3 make upgrade"
error = "Error upgrade"
utils.run_cmd(cmd, error)
assert utils.check_installed("barrnap")
assert utils.check_installed("prokka")
assert utils.check_installed("PanACoTA")
assert utils.check_installed("FastTreeMP")
logfile = "install.log"
with open(logfile, "r") as logf:
lines = logf.readlines()
assert len(lines) == 2
assert "Upgrading PanACoTA" in lines[0]
assert "DONE" in lines[1]
os.remove(logfile)
print("test_upgrade_notinstalled done")
def test_uninstall(install_panacota):
"""
Test uninstalling PanACoTA when dependencies are still installed
"""
assert utils.check_installed("barrnap")
assert utils.check_installed("prokka")
assert utils.check_installed("PanACoTA")
assert utils.check_installed("FastTreeMP")
cmd = "python3 make uninstall"
error = "Error uninstalling"
utils.run_cmd(cmd, error)
assert not utils.check_installed("PanACoTA")
assert utils.check_installed("barrnap")
assert utils.check_installed("prokka")
assert utils.check_installed("mash")
assert utils.check_installed("FastTreeMP")
assert utils.check_installed("quicktree")
assert utils.check_installed("iqtree") or utils.check_installed("iqtree2")
logfile = "install.log"
with open(logfile, "r") as logf:
lines = logf.readlines()
assert len(lines) == 2
assert "Uninstalling PanACoTA" in lines[0]
assert "DONE" in lines[1]
print("test_uninstall done")
def test_develop():
"""
Test installing PanACoTA in developer mode, when prokka and barrnap are already installed
"""
cmd = "python3 make uninstall"
error = "Error trying to uninstall PanACoTa"
utils.run_cmd(cmd, error)
assert not utils.check_installed("PanACoTA")
assert utils.check_installed("barrnap")
assert utils.check_installed("prokka")
cmd = "python3 make develop"
error = "Error develop"
utils.run_cmd(cmd, error)
assert utils.check_installed("barrnap")
assert utils.check_installed("prokka")
assert utils.check_installed("PanACoTA")
# Check installed in developper mode (egg-info file is present)
cmd = "pip3 show PanACoTA"
err = "error pip3"
stdout = "stdout_pip3show.out"
with open(stdout, "w") as stdof:
utils.run_cmd(cmd, err, stdout=stdof, stderr=stdof)
# Check not installed in user mode
cmd = "pip list --user"
list_user_packages = str(subprocess.check_output(shlex.split(cmd)))
assert "PanACoTA" not in list_user_packages
# check logfile content
logfile = "install.log"
content = ["Installing PanACoTA...",
"Installing developer packages needed for PanACoTA", "DONE"]
with open(logfile, "r") as logf:
logf_content = "".join(logf.readlines())
for linec in content:
assert linec in logf_content
# Check that needed packages are installed
assert utils.is_package_installed("argparse")
assert utils.is_package_installed("progressbar")
assert utils.is_package_installed("numpy")
assert utils.is_package_installed("matplotlib")
assert utils.is_package_installed("Bio")
assert utils.is_package_installed("sphinx")
assert utils.is_package_installed("numpydoc")
assert utils.is_package_installed("pytest")
assert utils.is_package_installed("coverage")
print("test_develop done")
def test_install_user():
"""
Test that when installing from a computer in user mode, it really installs
PanACoTA in user mode (pip showing PanACoTA when asking for user installed packages)
"""
cmd = "python3 make uninstall"
error = "Error trying to uninstall PanACoTa"
utils.run_cmd(cmd, error)
cmd = "python3 make --user"
error = "Error trying to install PanACoTA from base"
assert utils.check_installed("barrnap")
assert utils.check_installed("prokka")
assert not utils.check_installed("PanACoTA")
assert utils.check_installed("FastTreeMP")
utils.run_cmd(cmd, error)
assert utils.check_installed("barrnap")
assert utils.check_installed("prokka")
assert utils.check_installed("PanACoTA")
assert utils.check_installed("FastTreeMP")
# Check logfile content
logfile = "install.log"
content = ["Installing PanACoTA in user mode...", "DONE"]
with open(logfile, "r") as logf:
logf_content = "".join(logf.readlines())
for linec in content:
assert linec in logf_content
# Check that needed packages are installed
assert utils.is_package_installed("argparse")
assert utils.is_package_installed("progressbar")
assert utils.is_package_installed("numpy")
assert utils.is_package_installed("matplotlib")
assert utils.is_package_installed("Bio")