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