From b51ff131606220bbc5b624c89697404f1fbe2295 Mon Sep 17 00:00:00 2001 From: iamashwin99 <ashwin-kumar.karnad@mpsd.mpg.de> Date: Thu, 4 May 2023 15:19:09 +0200 Subject: [PATCH] update tests to use pytest temp_dir --- tests.py | 50 +++++++++++++++++--------------------------------- 1 file changed, 17 insertions(+), 33 deletions(-) diff --git a/tests.py b/tests.py index 6961f74..f85c0b4 100644 --- a/tests.py +++ b/tests.py @@ -6,57 +6,48 @@ import time import shutil mod = importlib.import_module("install-mpsd-software-environment") -test_release_path = ( - "/tmp/test_prepare_env" # temporary directory for testing used by multiple tests -) -def test_os_chdir(): +def test_os_chdir(tmp_path): # create a temporary directory for testing - temp_dir = "/tmp/test_os_chdir" - os.mkdir(temp_dir) + temp_dir = tmp_path / "test_os_chdir" + temp_dir.mkdir() # 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) + with mod.os_chdir(str(temp_dir)): + assert os.getcwd() == str(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(): +def test_prepare_env(tmp_path): # simulate running ./install-software-environment.py --release dev-23a --target-directory /tmp/test_prepare_env # prepare_env is run when cmd is not specified, we can test cmd='prepare' and cmd=None to check both cases - # if the directory exists, remove it - if os.path.exists(test_release_path): - shutil.rmtree(test_release_path) # check that the test directory does not exist - assert not os.path.exists(test_release_path) + assert not (tmp_path / "test_prepare_env").exists() run = mod.builder( release="dev-23a", cmd="prepare", - target_dir=test_release_path, + target_dir=str(tmp_path / "test_prepare_env"), skip_build_cache=False, ) run.run() # wait for 20 seconds for the git clone to finish # time.sleep(20) # check if the directory now is created - assert os.path.exists(test_release_path) + assert (tmp_path / "test_prepare_env").exists() # check for spack-environments directory - assert os.listdir(test_release_path) == ["spack-environments"] + assert os.listdir(str(tmp_path / "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", + f"cd {str(tmp_path / 'test_prepare_env/spack-environments')} && git branch", shell=True, capture_output=True, ) @@ -69,25 +60,25 @@ def test_prepare_env(): run = mod.builder( release="dev-23a", cmd=None, - target_dir=test_release_path, + target_dir=str(tmp_path / "test_prepare_env"), skip_build_cache=False, ) run.run() - # check that ValueError is not raised if skip_dir_check is True + # check that ValueError is not raised if skip_dir_check is True run = mod.builder( release="dev-23a", cmd=None, - target_dir=test_release_path, + target_dir=str(tmp_path / "test_prepare_env"), skip_build_cache=False, ) run.skip_dir_check = True run.run() # clean up the temporary directory - shutil.rmtree(test_release_path) + shutil.rmtree(str(tmp_path / "test_prepare_env")) -def test_setup_log_cmd(): +def test_setup_log_cmd(tmp_path): # check that logs/install-software-environment.log is updated when the module is run log_file = "logs/install-software-environment.log" if os.path.exists(log_file): @@ -96,14 +87,7 @@ def test_setup_log_cmd(): initial_bytes = 0 # run the prepare_env functionality - run = mod.builder( - release="dev-23a", - cmd=None, - target_dir=test_release_path, - skip_build_cache=False, - ) - run.skip_dir_check = True - run.run() + mod.prepare_env(toolchain_base_dir=str(tmp_path), mpsd_spack_ver='dev-23a', skip_dir_check=False, shared_var=shared_var) # check that logs/install-software-environment.log is updated assert os.path.exists("logs/install-software-environment.log") -- GitLab