Hacktoberfest 2026: los issues que los mantenedores marcaron para octubre, abiertos y aptos para principiantes. Explorar issues de Hacktoberfest

The pyrefly test fails

Abierto
#533 0 comentarios 0 reacciones 0 asignados Ver en GitHub

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

Primeros pasos

  1. Lee el issue completo y luego la guía de contribución del proyecto.
  2. Comenta en el issue que vas a ocuparte — evita que dos personas hagan lo mismo.
  3. Haz un fork del repositorio y trabaja en una rama.
  4. Abre un pull request que haga referencia al número del issue.

Más de boxed/mutmut

Todos los issues de boxed/mutmut

Issues similares

Más issues de Python

Recibe los nuevos issues en tu correo

Un resumen breve de issues de GitHub para principiantes.