72 lines
2.0 KiB
Python
72 lines
2.0 KiB
Python
# Copyright (c) Microsoft Corporation. All rights reserved.
|
|
# Licensed under the MIT License.
|
|
|
|
import importlib
|
|
import sys
|
|
|
|
import pytest
|
|
|
|
import create_conda
|
|
|
|
|
|
@pytest.mark.parametrize("env_exists", [True, False])
|
|
@pytest.mark.parametrize("git_ignore", [True, False])
|
|
@pytest.mark.parametrize("install", [True, False])
|
|
@pytest.mark.parametrize("python", [True, False])
|
|
def test_create_env(env_exists, git_ignore, install, python):
|
|
importlib.reload(create_conda)
|
|
create_conda.conda_env_exists = lambda _n: env_exists
|
|
|
|
install_packages_called = False
|
|
|
|
def install_packages(_name):
|
|
nonlocal install_packages_called
|
|
install_packages_called = True
|
|
|
|
create_conda.install_packages = install_packages
|
|
|
|
run_process_called = False
|
|
|
|
def run_process(args, error_message):
|
|
nonlocal run_process_called
|
|
run_process_called = True
|
|
version = "12345" if python else f"{sys.version_info.major}.{sys.version_info.minor}"
|
|
if not env_exists:
|
|
assert args == [
|
|
sys.executable,
|
|
"-m",
|
|
"conda",
|
|
"create",
|
|
"--yes",
|
|
"--prefix",
|
|
create_conda.CONDA_ENV_NAME,
|
|
f"python={version}",
|
|
]
|
|
assert error_message == "CREATE_CONDA.ENV_FAILED_CREATION"
|
|
|
|
create_conda.run_process = run_process
|
|
|
|
add_gitignore_called = False
|
|
|
|
def add_gitignore(_name):
|
|
nonlocal add_gitignore_called
|
|
add_gitignore_called = True
|
|
|
|
create_conda.add_gitignore = add_gitignore
|
|
|
|
args = []
|
|
if git_ignore:
|
|
args.append("--git-ignore")
|
|
if install:
|
|
args.append("--install")
|
|
if python:
|
|
args.extend(["--python", "12345"])
|
|
create_conda.main(args)
|
|
assert install_packages_called == install
|
|
|
|
# run_process is called when the venv does not exist
|
|
assert run_process_called != env_exists
|
|
|
|
# add_gitignore is called when new venv is created and git_ignore is True
|
|
assert add_gitignore_called == (not env_exists and git_ignore)
|