From 0bed57565a4ba5e7980da15716750c9ce26dbf9d Mon Sep 17 00:00:00 2001
From: iamashwin99 <ashwin-kumar.karnad@mpsd.mpg.de>
Date: Wed, 3 May 2023 10:40:13 +0200
Subject: [PATCH] fix tests

---
 tests.py | 51 ++++++++++++++++++++++++++++++++++++++++++++-------
 1 file changed, 44 insertions(+), 7 deletions(-)

diff --git a/tests.py b/tests.py
index ae2a327..cb52277 100644
--- a/tests.py
+++ b/tests.py
@@ -2,6 +2,8 @@ import os
 import pytest
 import importlib
 import subprocess
+import time
+import shutil
 mod = importlib.import_module("install-mpsd-software-environment")
 
 
@@ -26,20 +28,55 @@ def test_os_chdir():
 
 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")
+    # prepare_env is run when cmd is not specified, we can test cmd='prepare'  and cmd=None to check both cases
+
+    test_release_path = "/tmp/test_prepare_env"
+    # 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)
+
+    run = mod.builder(
+        release="dev-23a",
+        cmd="prepare",
+        target_dir=test_release_path,
+        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)
     # check for spack-environments directory
-    assert os.listdir("/tmp/test_prepare_env") == ["spack-environments"]
+    assert os.listdir(test_release_path) == ["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"
+        ).stdout.decode("utf-8").split("\n")[0]
+        == "* dev-23a"
     )
     # make sure running the command again raises ValueError
     with pytest.raises(ValueError):
-        mod.prepare_env("dev-23a", "/tmp/test_prepare_env", False)
+        run = mod.builder(
+            release="dev-23a",
+            cmd=None,
+            target_dir=test_release_path,
+            skip_build_cache=False,
+        )
+        run.run()
+
+    # 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,
+        skip_build_cache=False,
+    )
+    run.skip_dir_check = True
+    run.run()
+    # clean up the temporary directory
+    shutil.rmtree(test_release_path)
-- 
GitLab