The pyrefly test fails
Los mantenedores suelen responder en 2 días
Nadie ha tomado este issue todavía.
Evaluación
- Dificultad
- 3/5
- Tiempo estimado
- 1-2 días
- Aptitud para principiantes
- 45/100
- Tipo de issue
- Error
- Claridad
- Necesita aclaración
- Estado de actividad
- Tranquilo
- Stack tecnológico
- python
- Área
- testing-qa
Línea de trabajo
Empieza por tests/e2e/test_e2e_type_checking.py y tests/e2e/e2e_utils.py; después inspecciona filter_mutants_with_type_checker en el punto donde el traceback informa del mutant que falta. Ejecuta el test end-to-end que falla con Python 3.12 y pyrefly; se considera terminado cuando la ejecución de comprobación de tipos asocia el error informado con un mutant y el test del snapshot pasa.
Escrito por el modelo de indexación a partir del texto del issue.
Descripción
=============================================================================================== FAILURES ===============================================================================================
______________________________________________________________________________ test_type_checking_pyrefly_result_snapshot ______________________________________________________________________________
def test_type_checking_pyrefly_result_snapshot():
> assert run_mutmut_on_project("type_checking") == snapshot(
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
{
"mutants/src/type_checking/__init__.py.meta": {
"type_checking.x_hello__mutmut_1": 37,
"type_checking.x_hello__mutmut_2": 1,
"type_checking.x_hello__mutmut_3": 1,
"type_checking.x_hello__mutmut_4": 1,
"type_checking.x_a_hello_wrapper__mutmut_1": 37,
"type_checking.x_a_hello_wrapper__mutmut_2": 0,
"type_checking.xǁPersonǁset_name__mutmut_1": 37,
"type_checking.xǁPersonǁcreate__mutmut_1": 37,
"type_checking.xǁPersonǁcreate__mutmut_2": 37,
"type_checking.xǁEmployeeǁ__init____mutmut_1": 0,
"type_checking.xǁEmployeeǁ__init____mutmut_2": 0,
"type_checking.xǁEmployeeǁ__init____mutmut_3": 0,
"type_checking.xǁEmployeeǁ__init____mutmut_4": 37,
"type_checking.xǁEmployeeǁset_number__mutmut_1": 37,
"type_checking.xǁEmployeeǁnew__mutmut_1": 37,
"type_checking.xǁEmployeeǁnew__mutmut_2": 37,
"type_checking.xǁColorǁis_primary__mutmut_1": 33,
"type_checking.xǁColorǁdarken__mutmut_1": 37,
"type_checking.xǁColorǁdarken__mutmut_2": 0,
"type_checking.xǁColorǁdarken__mutmut_3": 37,
"type_checking.xǁColorǁdarken__mutmut_4": 0,
"type_checking.xǁColorǁget_next_color__mutmut_1": 37,
"type_checking.xǁColorǁget_next_color__mutmut_2": 0,
"type_checking.xǁColorǁget_next_color__mutmut_3": 37,
"type_checking.xǁColorǁget_next_color__mutmut_4": 37,
"type_checking.xǁColorǁget_next_color__mutmut_5": 0,
"type_checking.xǁColorǁget_next_color__mutmut_6": 0,
"type_checking.xǁColorǁto_index__mutmut_1": 37,
"type_checking.xǁColorǁto_index__mutmut_2": 37,
"type_checking.xǁColorǁto_index__mutmut_3": 37,
"type_checking.xǁColorǁto_index__mutmut_4": 0,
"type_checking.xǁColorǁto_index__mutmut_5": 0,
"type_checking.xǁColorǁto_index__mutmut_6": 0,
"type_checking.xǁColorǁfrom_index__mutmut_1": 0,
"type_checking.xǁColorǁfrom_index__mutmut_2": 0,
"type_checking.xǁColorǁcreate__mutmut_1": 1,
"type_checking.x_mutate_me__mutmut_1": 37,
"type_checking.x_mutate_me__mutmut_2": 37,
"type_checking.x_mutate_me__mutmut_3": 1,
"type_checking.x_mutate_me__mutmut_4": 1,
"type_checking.x_mutate_me__mutmut_5": 37,
}
}
)
tests/e2e/test_e2e_type_checking.py:7:
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
tests/e2e/e2e_utils.py:69: in run_mutmut_on_project
_run([], None)
../stage/usr/local/lib/python3.12/site-packages/mutmut/__main__.py:1031: in _run
mutants_caught_by_type_checker = filter_mutants_with_type_checker()
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
def filter_mutants_with_type_checker() -> dict[str, FailedTypeCheckMutant]:
with change_cwd(Path("mutants")):
errors = run_type_checker(Config.get().type_check_command)
errors_by_path = group_by_path(errors)
mutants_to_skip: dict[str, FailedTypeCheckMutant] = {}
for path, errors_of_file in errors_by_path.items():
with open(path, encoding="utf-8") as file:
source = file.read()
wrapper = cst.MetadataWrapper(cst.parse_module(source))
visitor = MutatedMethodsCollector(path)
wrapper.visit(visitor)
mutated_methods = visitor.found_mutants
for error in errors_of_file:
assert error.file_path == visitor.file
mutant = next(
(m for m in mutated_methods if m.line_number_start <= error.line_number <= m.line_number_end), None
)
if mutant is None:
> raise Exception(
f"Could not find mutant for type error {error.file_path}:{error.line_number} ({error.error_description}). \n"
"Probably, a code mutation influenced types in unexpected locations. \n"
"If your project normally has no type errors and uses mypy/pyrefly, please file an issue with steps to reproduce on github.\n"
)
E Exception: Could not find mutant for type error /usr/ports/devel/py-mutmut/work-py312/mutmut-3.6.0/e2e_projects/type_checking/mutants/src/type_checking/__init__.py:217 (Returned type `Color` is not assignable to declared return type `Self@Color`).
E Probably, a code mutation influenced types in unexpected locations.
E If your project normally has no type errors and uses mypy/pyrefly, please file an issue with steps to reproduce on github.
../stage/usr/local/lib/python3.12/site-packages/mutmut/mutation/file_mutation.py:494: Exception
----------------------------------------------------------------------------------------- Captured stdout call -----------------------------------------------------------------------------------------
⠋ Generating mutants
also copying tests
also copying test
also copying setup.cfg
also copying pyproject.toml
src/type_checking/__init__.py
done in 157ms (1 files mutated, 0 ignored, 0 unmodified)
⠙ Filtering mutations with type checker
=========================================================================================== warnings summary ===========================================================================================
Version: 3.6.0
Python-3.12
FreeBSD 15.1 STABLE
- 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 6 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 17 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 26 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
-
Dificultad 2/5 1-3 horas Aptitud para principiantes 65/100
NVIDIA/flare-local-inference#90 ·
Los mantenedores suelen responder en 1 día
-
area/streaming comp/gateway P2 platform/telegram type/bug
Dificultad 2/5 1-3 horas Aptitud para principiantes 78/100
NousResearch/hermes-agent#144897 ·
Los mantenedores suelen responder en 1 día
-
request-theme
Dificultad 1/5 Menos de una hora Aptitud para principiantes 66/100
LizardByte/ThemerrDB#9575 ·
Los mantenedores suelen responder en 1 día
-
Author Page: noshin-nawalAbiertoauthor-page correction
Dificultad 2/5 1-3 horas Aptitud para principiantes 62/100
acl-org/acl-anthology#10599 · 1 comentario ·
Los mantenedores suelen responder en 1 día
-
Dificultad 2/5 1-3 horas Aptitud para principiantes 78/100
zilliztech/memsearch#818 ·
Los mantenedores suelen responder en 1 día