Skip to content

Commit

Permalink
self install: in this context the project is not a package so we shou…
Browse files Browse the repository at this point in the history
…ld set package-mode to false (#9302)

(cherry picked from commit ef75e7c)
  • Loading branch information
radoering committed Apr 30, 2024
1 parent c1be08e commit f559bd9
Show file tree
Hide file tree
Showing 2 changed files with 63 additions and 0 deletions.
1 change: 1 addition & 0 deletions src/poetry/console/commands/self/self_command.py
Original file line number Diff line number Diff line change
Expand Up @@ -73,6 +73,7 @@ def generate_system_pyproject(self) -> None:
package.python_versions = ".".join(str(v) for v in self.env.version_info[:3])

content = Factory.create_pyproject_from_package(package=package)
content["tool"]["poetry"]["package-mode"] = False # type: ignore[index]

for key in preserved:
content["tool"]["poetry"][key] = preserved[key] # type: ignore[index]
Expand Down
62 changes: 62 additions & 0 deletions tests/console/commands/self/test_install.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,62 @@
from __future__ import annotations

from typing import TYPE_CHECKING

import pytest

from poetry.console.commands.self.install import SelfInstallCommand


if TYPE_CHECKING:
from cleo.testers.command_tester import CommandTester

from tests.types import CommandTesterFactory


@pytest.fixture
def tester(command_tester_factory: CommandTesterFactory) -> CommandTester:
return command_tester_factory("self install")


@pytest.mark.parametrize(
"pyproject_content",
(
None,
"""\
[tool.poetry]
name = "poetry-instance"
version = "1.2"
description = ""
authors = []
license = ""
# no package-mode -> defaults to true
[tool.poetry.dependencies]
python = "3.9"
poetry = "1.2"
""",
),
)
def test_self_install(
tester: CommandTester,
pyproject_content: str | None,
) -> None:
command = tester.command
assert isinstance(command, SelfInstallCommand)
pyproject_path = command.system_pyproject
if pyproject_content:
pyproject_path.write_text(pyproject_content)
else:
assert not pyproject_path.exists()

tester.execute()

expected_output = """\
Updating dependencies
Resolving dependencies...
Writing lock file
"""

assert tester.io.fetch_output() == expected_output
assert tester.io.fetch_error() == ""

0 comments on commit f559bd9

Please sign in to comment.