import os import pytest import importlib import subprocess mod = importlib.import_module("install-mpsd-software-environment") def test_os_chdir(): # create a temporary directory for testing temp_dir = "/tmp/test_os_chdir" os.mkdir(temp_dir) # initial current working directory initial_cwd = os.getcwd() # change to the temporary directory using os_chdir with mod.os_chdir(temp_dir): assert os.getcwd() == os.path.abspath(temp_dir) # current working directory should be back to initial directory assert os.getcwd() == initial_cwd # clean up the temporary directory os.rmdir(temp_dir) def test_prepare_env(): # simulate running ./install-software-environment.py --release dev-23a --target-directory /tmp/test_prepare_env mod.prepare_env("dev-23a", "/tmp/test_prepare_env", False) # check if the directory exists assert os.path.exists("/tmp/test_prepare_env") # check for spack-environments directory assert os.listdir("/tmp/test_prepare_env") == ["spack-environments"] # check if the git branch is correctl checked out assert ( subprocess.run( "cd /tmp/test_prepare_env/spack-environments && git branch", shell=True, capture_output=True, ).stdout.decode("utf-8") == "* dev-23a\n" ) # make sure running the command again raises ValueError with pytest.raises(ValueError): mod.prepare_env("dev-23a", "/tmp/test_prepare_env", False)