mutmut v3 copies source to temp dir, breaking editable-install imports
Los mantenedores suelen responder en 2 días
Evaluación
- Dificultad
- 4/5
- Tiempo estimado
- 3-5 días
- Aptitud para principiantes
- 48/100
- Tipo de issue
- Error
- Claridad
- Bastante claro
- Estado de actividad
- Tranquilo
- Stack tecnológico
- python
- Área
- testing-qa
Línea de trabajo
Reproduce el problema con la distribución src/ mostrada, pyproject.toml, tests/test_core.py y mutmut run --paths-to-mutate src/my_project/core.py. Sigue cómo mutmut v3 copia archivos e inicia pytest; después, verifica que las importaciones de una instalación editable se resuelvan en el código mutado y que las mutaciones ya no fallen ni produzcan falsos supervivientes.
Escrito por el modelo de indexación a partir del texto del issue.
Descripción
Description
When using mutmut v3 (3.5.0) on a project installed with pip install -e ., mutations fail because mutmut copies source files to a temporary directory where the editable package's import paths no longer resolve.
Reproduction
Project structure:
my-project/
├── pyproject.toml # [project] name = "my_project"
├── src/
│ └── my_project/
│ ├── __init__.py
│ └── core.py # file to mutate
└── tests/
└── test_core.py # imports my_project.core
Steps:
pip install -e .pytest tests/— passesmutmut run --paths-to-mutate src/my_project/core.py- Mutations fail with
ModuleNotFoundError: No module named 'my_project'
Expected behavior
Mutations should run in-place (or with sys.path adjusted) so that editable installs and relative imports continue to work.
Actual behavior
mutmut copies files to /tmp/ (or a mutants/ directory), then runs pytest from that context. The editable install's .pth file points to the original src/ directory, so the mutated code is never imported — or worse, the original un-mutated code is imported instead, producing false "survived" results.
Workaround
Manual mutation testing via subprocess + file patching (mutate in-place, run tests, restore original).
Related
- #456 reports a similar import path issue with Django projects
- #485 may also be related (initial test run failure)
Environment
- mutmut 3.5.0 (pip reports 2.4.5,
mutmut.__version__reports 3.5.0) - Python 3.11.9
- macOS 14 (arm64)
- Project uses
src/layout with pyproject.toml
- Lenguaje dominante
- Python
- Estrellas
- 1.5k
- Forks
- 185
- Merge medio
- 1 d 14 h
- PR fusionados (30 d)
- 5
Preparar el entorno
- Sin Dockerfile ni archivo de Docker Compose
- Sin plantilla de pull request
- Leer la guía de contribución
Primeros pasos
- Lee el issue completo y luego la guía de contribución del proyecto.
- Comenta en el issue que vas a ocuparte — evita que dos personas hagan lo mismo.
- Haz un fork del repositorio y trabaja en una rama.
- Abre un pull request que haga referencia al número del issue.
Más de boxed/mutmut
-
Removing `not` from a parenthesized multi-line expression drops the parentheses (InvalidGeneratedSyntaxException, 3.8.0)Posiblemente ocupada @jihtsan la tomó hace 5 días. Abierto
Dificultad 2/5 1-3 horas Aptitud para principiantes 72/100
boxed/mutmut#602 · 2 comentarios ·
Los mantenedores suelen responder en 2 días
-
`run` with a `name__mutmut_*` pattern runs the whole test suite in the clean-test checkPosiblemente ocupada @Ishaan400 la tomó hace 16 días. Abierto
Dificultad 2/5 1-3 horas Aptitud para principiantes 82/100
boxed/mutmut#592 · 1 comentario ·
Los mantenedores suelen responder en 2 días
-
Invalid unary plus generated in match statementPosiblemente ocupada @GhostCoder6969 la tomó hace 25 días. Abierto
Dificultad 2/5 1-3 horas Aptitud para principiantes 68/100
Los mantenedores suelen responder en 2 días
-
What do the emoji's mean?Abierto
Dificultad 2/5 1-3 horas Aptitud para principiantes 68/100
boxed/mutmut#560 · 1 comentario ·
Los mantenedores suelen responder en 2 días
-
Dificultad 2/5 1-3 horas Aptitud para principiantes 68/100
boxed/mutmut#529 · 7 comentarios ·
Los mantenedores suelen responder en 2 días
Todos los issues de boxed/mutmut
Issues similares
-
intake mcp-intake needs-ac needs-human-review priority:medium
Dificultad 2/5 1-3 horas Aptitud para principiantes 67/100
Ikalus1988/MisakaNet#3848 · 2 comentarios ·
Los mantenedores suelen responder en 1 día
-
Dificultad 1/5 Menos de una hora Aptitud para principiantes 75/100
521xueweihan/HelloGitHub#4105 ·
-
Dificultad 2/5 1-3 horas Aptitud para principiantes 75/100
igormcsouza/bookloud#54 ·
-
Dificultad 1/5 Menos de una hora Aptitud para principiantes 90/100
aws-samples/sample-per-model-bedrock#526 ·
Los mantenedores suelen responder en 1 día
-
Dificultad 2/5 1-3 horas Aptitud para principiantes 78/100
ok-oldking/ok-wuthering-waves#1802 ·
Los mantenedores suelen responder en 2 días