diff --git a/dem/cli/command/cp_cmd.py b/dem/cli/command/cp_cmd.py index 2d728cb..90bbbbb 100644 --- a/dem/cli/command/cp_cmd.py +++ b/dem/cli/command/cp_cmd.py @@ -26,6 +26,7 @@ def cp_given_dev_env(platform: Platform, dev_env_to_cp: DevEnv, new_dev_env_name: str): new_dev_env = copy.deepcopy(dev_env_to_cp) new_dev_env.name = new_dev_env_name + new_dev_env.is_installed = False platform.local_dev_envs.append(new_dev_env) platform.flush_descriptors() diff --git a/dem/core/dev_env.py b/dem/core/dev_env.py index e07d49b..fa16f1b 100755 --- a/dem/core/dev_env.py +++ b/dem/core/dev_env.py @@ -19,14 +19,11 @@ class DevEnv(): "CI/CD server", ) - def __init__(self, descriptor: dict | None = None, - dev_env_to_copy: "DevEnv | None" = None, - descriptor_path: str | None = None) -> None: + def __init__(self, descriptor: dict | None = None, descriptor_path: str | None = None) -> None: """ Init the DevEnv class. A new instance can be created: - from a Dev Env descriptor - - based on another Dev Env - from a descriptor avaialable at the given path. Only one of the arguments can be used at a time. @@ -34,7 +31,6 @@ def __init__(self, descriptor: dict | None = None, Args: descriptor -- the description of the Development Environment from the dev_env.json file - dev_env_to_copy -- the DevEnv instance to copy descriptor_path -- the path of the descriptor file Exceptions: @@ -42,7 +38,7 @@ def __init__(self, descriptor: dict | None = None, """ # Only one of the arguments can be not None - if sum(arg is not None for arg in [descriptor, dev_env_to_copy, descriptor_path]) > 1: + if sum(arg is not None for arg in [descriptor, descriptor_path]) > 1: raise ValueError("Only one of the arguments can be not None.") if descriptor_path: @@ -51,17 +47,13 @@ def __init__(self, descriptor: dict | None = None, with open(descriptor_path, "r") as file: descriptor = json.load(file) - if descriptor: - self.name: str = descriptor["name"] - self.tools: list[dict[str, str]] = descriptor["tools"] - descriptor_installed = descriptor.get("installed", "False") - if "True" == descriptor_installed: - self.is_installed = True - else: - self.is_installed = False + self.name: str = descriptor["name"] + self.tools: list[dict[str, str]] = descriptor["tools"] + descriptor_installed = descriptor.get("installed", "False") + if "True" == descriptor_installed: + self.is_installed = True else: - self.name = dev_env_to_copy.name - self.tools = dev_env_to_copy.tools + self.is_installed = False def check_image_availability(self, all_tool_images: ToolImages, update_tool_image_store: bool = False, diff --git a/tests/cli/test_cp.py b/tests/cli/test_cp.py index 85c675f..7395dbe 100644 --- a/tests/cli/test_cp.py +++ b/tests/cli/test_cp.py @@ -80,17 +80,20 @@ def test_check_new_dev_env_name_taken(mock_stderr_print): def test_cp_given_dev_env(): # Test setup mock_platform = MagicMock() - fake_dev_env_to_cp = MagicMock() + mock_dev_env_to_cp = MagicMock() + mock_dev_env_to_cp.name = "test_dev_env" + mock_dev_env_to_cp.is_installed = True test_new_name = "test_cpd" mock_platform.local_dev_envs = [] # Run unit under test - cp_cmd.cp_given_dev_env(mock_platform, fake_dev_env_to_cp, test_new_name) + cp_cmd.cp_given_dev_env(mock_platform, mock_dev_env_to_cp, test_new_name) # Check expectations assert mock_platform.local_dev_envs[0].name is test_new_name + assert mock_platform.local_dev_envs[0].is_installed is False mock_platform.flush_descriptors.assert_called_once() diff --git a/tests/core/test_dev_env.py b/tests/core/test_dev_env.py index 2d4fe74..3c6f6ad 100644 --- a/tests/core/test_dev_env.py +++ b/tests/core/test_dev_env.py @@ -25,18 +25,6 @@ def test_DevEnv() -> None: assert test_dev_env.name is test_descriptor["name"] assert test_dev_env.tools is test_descriptor["tools"] - # Test setup - mock_base_dev_env = MagicMock() - mock_base_dev_env.name = "test_name" - mock_base_dev_env.tools = [MagicMock()] - - # Run unit under test - test_dev_env = dev_env.DevEnv(dev_env_to_copy=mock_base_dev_env) - - # Check expectations - assert test_dev_env.name is mock_base_dev_env.name - assert test_dev_env.tools is mock_base_dev_env.tools - @patch("dem.core.dev_env.json.load") @patch("dem.core.dev_env.open") @patch("dem.core.dev_env.os.path.exists")