Skip to content

Tox hangs on waiting for pyproject_api backend if --installpkg is used #3512

Open
@vytas7

Description

@vytas7

Issue

Tox hangs when using certain PEP 517 backends such as pdm-backend together with the --installpkg option.
It is the option that, for instance, devpi-client opts to use for the devpi test command.

Interesting that it only happens if tox is run with at least two environments. Only one environment does not trigger the issue.

Environment

CPython 3.12 on Ubuntu/Debian Linux.
The issue is reproducible with the official python:3.12 Docker image (see below).

Output of running tox

The output is indistinguishable from the normal, expected output unless the --exit-and-dump-after option is used.

Minimal example

Consider the following self-contained example, let's assume it is saved under /tmp/test.sh:

#!/bin/bash

set -e
set -x

python -m venv /tmp/venv
source /tmp/venv/bin/activate
pip install -qU build pip tox

mkdir -p /tmp/skeleton/skeleton
cat << EOF > /tmp/skeleton/pyproject.toml
[build-system]
requires = ["pdm-backend"]
build-backend = "pdm.backend"

[project]
name = "skeleton"
description = "Just a skeleton for reproducing a tox issue."
version = "0.1.1337"
dependencies = [
    "requests",
]

[tool.pdm.build]
includes = [
    "skeleton/",
]
source-includes = [
    "tests/",
    "tox.ini",
]
EOF
cat << EOF > /tmp/skeleton/tox.ini
[tox]
envlist = dummy1,dummy2

[testenv:dummy1]
commands =
    python -c print(1)

[testenv:dummy2]
commands =
    python -c print(42)
EOF

pushd /tmp/skeleton
python -m build --sdist
popd
tox --installpkg /tmp/skeleton/dist/skeleton-0.1.1337.tar.gz -c /tmp/skeleton/tox.ini

Now, run this /tmp/test.sh inside the python:3.12 Docker image:

docker run --rm -it -v /tmp/test.sh:/tmp/test.sh python:3.12 /bin/bash /tmp/test.sh

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions