Skip to content

Commit

Permalink
Change back into inline and add tests
Browse files Browse the repository at this point in the history
  • Loading branch information
Secrus committed Aug 8, 2022
1 parent 4a161d0 commit 5601486
Show file tree
Hide file tree
Showing 4 changed files with 70 additions and 8 deletions.
12 changes: 4 additions & 8 deletions src/poetry/utils/env.py
Original file line number Diff line number Diff line change
Expand Up @@ -818,13 +818,6 @@ def remove(self, python: str) -> Env:

return VirtualEnv(venv_path, venv_path)

def get_formatted_prompt(self, python_version: str) -> str:
venv_prompt = self._poetry.config.get("virtualenvs.prompt")
return venv_prompt.format(
project_name=self._poetry.package.name or "virtualenv",
python_version=python_version,
)

def create_venv(
self,
io: IO,
Expand Down Expand Up @@ -954,7 +947,10 @@ def create_venv(
venv = venv_path / name

if venv_prompt is not None:
venv_prompt = self.get_formatted_prompt(python_minor)
venv_prompt = venv_prompt.format(
project_name=self._poetry.package.name or "virtualenv",
python_version=python_minor,
)

if not venv.exists():
if create_venv is False:
Expand Down
2 changes: 2 additions & 0 deletions tests/fixtures/no_name_project/README.rst
Original file line number Diff line number Diff line change
@@ -0,0 +1,2 @@
No name project
===============
18 changes: 18 additions & 0 deletions tests/fixtures/no_name_project/pyproject.toml
Original file line number Diff line number Diff line change
@@ -0,0 +1,18 @@
[tool.poetry]
name = ""
version = "1.2.3"
description = "This project has no name"
authors = [
"Sébastien Eustace <sebastien@eustace.io>"
]
license = "MIT"

readme = "README.rst"


# Requirements
[tool.poetry.dependencies]
python = "~2.7 || ^3.6"

[tool.poetry.group.dev.dependencies]
pytest = "~3.4"
46 changes: 46 additions & 0 deletions tests/utils/test_env.py
Original file line number Diff line number Diff line change
Expand Up @@ -79,10 +79,19 @@ def poetry(project_factory: ProjectFactory) -> Poetry:
return project_factory("simple", source=fixture)


@pytest.fixture()
def no_name_poetry(project_factory: ProjectFactory) -> Poetry:
fixture = Path(__file__).parent.parent / "fixtures" / "no_name_project"
return project_factory("no", source=fixture)

@pytest.fixture()
def manager(poetry: Poetry) -> EnvManager:
return EnvManager(poetry)

@pytest.fixture()
def no_name_manager(no_name_poetry: Poetry) -> EnvManager:
return EnvManager(no_name_poetry)


def test_virtualenvs_with_spaces_in_their_path_work_as_expected(
tmp_dir: str, manager: EnvManager
Expand Down Expand Up @@ -1415,3 +1424,40 @@ def test_build_environment_not_called_without_build_script_specified(
with build_environment(poetry, project_env) as env:
assert env == project_env
assert not env.executed


def test_create_venv_project_name_empty_sets_correct_prompt(
no_name_manager: EnvManager,
no_name_poetry: Poetry,
config: Config,
mocker: MockerFixture,
config_virtualenvs_path: Path,
):
if "VIRTUAL_ENV" in os.environ:
del os.environ["VIRTUAL_ENV"]

no_name_poetry.package.python_versions = "^3.7"
venv_name = no_name_manager.generate_env_name("", str(no_name_poetry.file.parent))

mocker.patch("sys.version_info", (2, 7, 16))
mocker.patch(
"subprocess.check_output",
side_effect=check_output_wrapper(Version.parse("3.7.5")),
)
m = mocker.patch(
"poetry.utils.env.EnvManager.build_venv", side_effect=lambda *args, **kwargs: ""
)

no_name_manager.create_venv(NullIO())

m.assert_called_with(
config_virtualenvs_path / f"{venv_name}-py3.7",
executable="python3",
flags={
"always-copy": False,
"system-site-packages": False,
"no-pip": False,
"no-setuptools": False,
},
prompt="virtualenv-py3.7",
)

0 comments on commit 5601486

Please sign in to comment.