Skip to content

Commit

Permalink
Fix poetry plugin tests with latest poetry version
Browse files Browse the repository at this point in the history
  • Loading branch information
nat-n committed Oct 2, 2022
1 parent 365f4f3 commit ee84641
Show file tree
Hide file tree
Showing 15 changed files with 96 additions and 27 deletions.
3 changes: 1 addition & 2 deletions poethepoet/app.py
Expand Up @@ -90,12 +90,11 @@ def resolve_task(self) -> bool:
return True

def run_task(self, context: Optional[RunContext] = None) -> Optional[int]:
extra_args = self.ui["task"][1:]
if context is None:
context = self.get_run_context()
try:
assert self.task
return self.task.run(context=context, extra_args=extra_args)
return self.task.run(context=context, extra_args=self.ui["task"][1:])
except PoeException as error:
self.print_help(error=error)
return 1
Expand Down
1 change: 1 addition & 0 deletions pyproject.toml
Expand Up @@ -55,6 +55,7 @@ poethepoet = "poethepoet.plugin:PoetryPlugin"
htmlcov
./tests/fixtures/simple_project/venv
./tests/fixtures/venv_project/myvenv
./tests/fixtures/poetry_plugin_project/**/.venv
./tests/temp
"""

Expand Down
10 changes: 5 additions & 5 deletions tests/conftest.py
Expand Up @@ -213,15 +213,17 @@ def run_poetry(use_venv, poe_project_path):

def run_poetry(args: List[str], cwd: str, env: Optional[Dict[str, str]] = None):
venv = Virtualenv(venv_location)

# Run poetry from the venv but don't activate the venv because that will
# change poetry's behaviour
poetry_proc = Popen(
(venv.resolve_executable("poetry"), *args),
env=venv.get_env_vars({**os.environ, **(env or {})}),
env=(env or {}),
stdout=PIPE,
stderr=PIPE,
cwd=cwd,
)
poetry_out, poetry_err = poetry_proc.communicate()

result = PoeRunResult(
code=poetry_proc.returncode,
path=cwd,
Expand All @@ -236,9 +238,7 @@ def run_poetry(args: List[str], cwd: str, env: Optional[Dict[str, str]] = None):
venv_location,
[
".[poetry_plugin]",
# TODO: poetry install from a release
"./tests/fixtures/packages/poetry-1.2.0b2.dev0-py3-none-any.whl",
"--pre",
"./tests/fixtures/packages/poetry-1.2.1-py3-none-any.whl",
],
require_empty=True,
):
Expand Down
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
35 changes: 35 additions & 0 deletions tests/fixtures/poetry_plugin_project/empty_prefix/poetry.lock

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

2 changes: 2 additions & 0 deletions tests/fixtures/poetry_plugin_project/empty_prefix/poetry.toml
@@ -0,0 +1,2 @@
[virtualenvs]
in-project = true
Expand Up @@ -8,14 +8,15 @@ authors = ["Nat Noordanus <n@natn.me>"]
python = "^3.7"

[tool.poetry.dev-dependencies]
cowsay = "../../packages/python_cowsay-1.0.1-py3-none-any.whl"
cowpy = { path = "../../packages/cowpy-1.1.5-py3-none-any.whl" }
poe_test_helpers = { path = "../../packages/poe_test_helpers" }

[tool.poe]
poetry_command = ""

[tool.poe.tasks]
echo = { cmd = "poe_test_echo", help = "It's like echo"}
cow-greet = "cowsay 'good day sir!'"
cow-greet = "cowpy 'good day sir!'"

[build-system]
requires = ["poetry-core"]
Expand Down
33 changes: 25 additions & 8 deletions tests/fixtures/poetry_plugin_project/poetry.lock

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

7 changes: 4 additions & 3 deletions tests/fixtures/poetry_plugin_project/pyproject.toml
Expand Up @@ -8,16 +8,17 @@ authors = ["Nat Noordanus <n@natn.me>"]
python = "^3.7"

[tool.poetry.dev-dependencies]
cowsay = "../packages/python_cowsay-1.0.1-py3-none-any.whl"
cowpy = { path = "../packages/cowpy-1.1.5-py3-none-any.whl" }
poe_test_helpers = { path = "../packages/poe_test_helpers" }

[tool.poe.poetry_hooks]
pre_env_info = "echo 'THIS IS YOUR ENV!'"
post_env_info = "echo 'THAT WAS YOUR ENV!'"

[tool.poe.tasks]
echo = { cmd = "poe_test_echo", help = "It's like echo"}
cow-greet = "cowsay 'good day sir!'"
cow-cheese.shell = "import cowsay; print(list(cowsay.char_names)[1])"
cow-greet = "cowpy" # Passing args to cowpy doesn't work with subprocess
cow-cheese.shell = "from cowpy import cow; print(list(cow.COWACTERS)[5])"
cow-cheese.interpreter = "python"

[build-system]
Expand Down
27 changes: 20 additions & 7 deletions tests/test_poetry_plugin.py
Expand Up @@ -12,6 +12,15 @@ def setup_poetry_project(run_poetry, projects):
run_poetry(["install"], cwd=projects["poetry_plugin"])


@pytest.fixture(scope="session")
def setup_poetry_project_empty_prefix(run_poetry, projects):
run_poetry(
["config", "--local", "virtualenvs.in-project", "true"],
cwd=projects["poetry_plugin/empty_prefix"].parent,
)
run_poetry(["install"], cwd=projects["poetry_plugin/empty_prefix"].parent)


@pytest.mark.slow
@pytest.mark.skipif(version_info < (3, 7), reason="dependencies require python>=3.7")
def test_poetry_help(run_poetry, projects):
Expand All @@ -29,11 +38,15 @@ def test_task_with_cli_dependency(
):
result = run_poetry(["poe", "cow-greet"], cwd=projects["poetry_plugin"])
if is_windows:
assert result.stdout.startswith("Poe => cowsay 'good day sir!'")
assert "| 'good day sir!' |" in result.stdout
assert result.stdout.startswith("Poe => cowpy")
assert (
"< Cowacter, eyes:default, tongue:False, thoughts:False >" in result.stdout
)
else:
assert result.stdout.startswith("Poe => cowsay good day sir!")
assert "| good day sir! |" in result.stdout
assert result.stdout.startswith("Poe => cowpy")
assert (
"< Cowacter, eyes:default, tongue:False, thoughts:False >" in result.stdout
)
# assert result.stderr == ""


Expand All @@ -44,7 +57,7 @@ def test_task_with_lib_dependency(
):
result = run_poetry(["poe", "cow-cheese"], cwd=projects["poetry_plugin"])
assert result.stdout == (
"Poe => import cowsay; print(list(cowsay.char_names)[1])\ncheese\n"
"Poe => from cowpy import cow; print(list(cow.COWACTERS)[5])\ncheese\n"
)
# assert result.stderr == ""

Expand All @@ -65,7 +78,7 @@ def test_task_accepts_any_args(run_poetry, projects, setup_poetry_project):
@pytest.mark.slow
@pytest.mark.skipif(version_info < (3, 7), reason="dependencies require python>=3.7")
def test_poetry_help_without_poe_command_prefix(
run_poetry, projects, setup_poetry_project
run_poetry, projects, setup_poetry_project_empty_prefix
):
result = run_poetry([], cwd=projects["poetry_plugin/empty_prefix"].parent)
assert result.stdout.startswith("Poetry (version ")
Expand All @@ -77,7 +90,7 @@ def test_poetry_help_without_poe_command_prefix(
@pytest.mark.slow
@pytest.mark.skipif(version_info < (3, 7), reason="dependencies require python>=3.7")
def test_running_tasks_without_poe_command_prefix(
run_poetry, projects, setup_poetry_project
run_poetry, projects, setup_poetry_project_empty_prefix
):
result = run_poetry(
["echo", "--lol=:D", "--version", "--help"],
Expand Down

0 comments on commit ee84641

Please sign in to comment.