python / python/mypy

Certain tests can't deal with symlinks on Windows

Abierto
#19,956 1 comentario 0 reacciones 0 asignados Ver en GitHub

Nadie ha tomado este issue todavía.

bug
Lenguaje dominante
Python
Estrellas
20.6k
Forks
3.3k
Métricas de merge de PR
Métricas de PR pendientes

Descripción

I'm running the tests in a directory that I got to using a symlink. It is now complaining that the output isn't right on some tests, since apparently the absolute path is reported instead of the symlinky one it expects. I'm running from a venv, and also on windows 10. (The symlink is a symlinkd, which I mention because windows sadly has like 4 different types of symlink. But I doubt it's relevant.) I tried to replicate this on WSL2 (Ubuntu) but couldn't.

Here are the test failures of uv run runtests.py pytest-fast:

================================================================================================================= FAILURES =================================================================================================================
_______________________________________________________________________________________________________ testNamedTupleAdditionalArgs _______________________________________________________________________________________________________
[gw3] win32 -- Python 3.9.22 C:\Users\wyatt\files\tmp\mypy\.venv\Scripts\python.exe
data: C:\Users\wyatt\files\tmp\mypy\test-data\unit\check-namedtuple.test:118:
Failed: Unexpected type checker output (C:\Users\wyatt\files\tmp\mypy\test-data\unit\check-namedtuple.test, line 118)
----------------------------------------------------------------------------------------------------------- Captured stderr call -----------------------------------------------------------------------------------------------------------
Expected:
  main:4: error: Boolean literal expected as the "rename" argument to namedtuple()
  main:5: error: Boolean literal expected as the "rename" argument to namedtuple()
  main:5: error: Argument "rename" to "namedtuple" has incompatible type "str"; expected "int"
  main:6: error: Unexpected keyword argument "unrecognized_arg" for "namedtuple"
  C:/Users/wyatt/files/tmp/mypy/test-data/unit/lib-stub/collections.pyi:3: note: "namedtuple" defined here (diff)
  main:7: error: Too many positional arguments for "namedtuple"
Actual:
  main:4: error: Boolean literal expected as the "rename" argument to namedtuple()
  main:5: error: Boolean literal expected as the "rename" argument to namedtuple()
  main:5: error: Argument "rename" to "namedtuple" has incompatible type "str"; expected "int"
  main:6: error: Unexpected keyword argument "unrecognized_arg" for "namedtuple"
  C:/Users/wyatt/files/tmp/mypy_symlink/test-data/unit/lib-stub/collections.pyi:3: note: "namedtuple" defined here (diff)
  main:7: error: Too many positional arguments for "namedtuple"

Alignment of first line difference:
  E: C:/Users/wyatt/files/tmp/mypy/test-data/unit/lib-stub/collections.pyi:3:...
  A: C:/Users/wyatt/files/tmp/mypy_symlink/test-data/unit/lib-stub/collection...
                                  ^
Update the test output using --update-data (implies -n0; you can additionally use the -k selector to update only specific tests)
______________________________________________________________________________________________ testImportBringsAnotherFileWithBlockingError1 _______________________________________________________________________________________________
[gw3] win32 -- Python 3.9.22 C:\Users\wyatt\files\tmp\mypy\.venv\Scripts\python.exe
data: C:\Users\wyatt\files\tmp\mypy\test-data\unit\fine-grained-blockers.test:400:
Failed: Invalid output (C:\Users\wyatt\files\tmp\mypy\test-data\unit\fine-grained-blockers.test, line 400)
----------------------------------------------------------------------------------------------------------- Captured stderr call -----------------------------------------------------------------------------------------------------------
Expected:
  ==
  C:/Users/wyatt/files/tmp/mypy/test-data/unit/lib-stub/blocker.pyi:2: error: Invalid syntax (diff)
  ==
  a.py:1: error: "int" not callable
Actual:
  ==
  C:/Users/wyatt/files/tmp/mypy_symlink/test-data/unit/lib-stub/blocker.pyi:2: error: Invalid syntax (diff)
  ==
  a.py:1: error: "int" not callable

Alignment of first line difference:
  E: C:/Users/wyatt/files/tmp/mypy/test-data/unit/lib-stub/blocker.pyi:2: err...
  A: C:/Users/wyatt/files/tmp/mypy_symlink/test-data/unit/lib-stub/blocker.py...
                                  ^
Update the test output using --update-data (implies -n0; you can additionally use the -k selector to update only specific tests)
_______________________________________________________________________________________ testImportBringsAnotherFileWithSemanticAnalysisBlockingError _______________________________________________________________________________________
[gw3] win32 -- Python 3.9.22 C:\Users\wyatt\files\tmp\mypy\.venv\Scripts\python.exe
data: C:\Users\wyatt\files\tmp\mypy\test-data\unit\fine-grained-blockers.test:420:
Failed: Invalid output (C:\Users\wyatt\files\tmp\mypy\test-data\unit\fine-grained-blockers.test, line 420)
----------------------------------------------------------------------------------------------------------- Captured stderr call -----------------------------------------------------------------------------------------------------------
Expected:
  ==
  C:/Users/wyatt/files/tmp/mypy/test-data/unit/lib-stub/blocker2.pyi:2: error: "continue" outside loop (diff)
  ==
  a.py:1: error: "int" not callable
Actual:
  ==
  C:/Users/wyatt/files/tmp/mypy_symlink/test-data/unit/lib-stub/blocker2.pyi:2: error: "continue" outside loop (diff)
  ==
  a.py:1: error: "int" not callable

Alignment of first line difference:
  E: C:/Users/wyatt/files/tmp/mypy/test-data/unit/lib-stub/blocker2.pyi:2: er...
  A: C:/Users/wyatt/files/tmp/mypy_symlink/test-data/unit/lib-stub/blocker2.p...
                                  ^
Update the test output using --update-data (implies -n0; you can additionally use the -k selector to update only specific tests)
_________________________________________________________________________________________ testFixingBlockingErrorBringsInAnotherModuleWithBlocker __________________________________________________________________________________________
[gw3] win32 -- Python 3.9.22 C:\Users\wyatt\files\tmp\mypy\.venv\Scripts\python.exe
data: C:\Users\wyatt\files\tmp\mypy\test-data\unit\fine-grained-blockers.test:474:
Failed: Invalid output (C:\Users\wyatt\files\tmp\mypy\test-data\unit\fine-grained-blockers.test, line 474)
----------------------------------------------------------------------------------------------------------- Captured stderr call -----------------------------------------------------------------------------------------------------------
Expected:
  ==
  a.py:1: error: Invalid syntax
  ==
  C:/Users/wyatt/files/tmp/mypy/test-data/unit/lib-stub/blocker.pyi:2: error: Invalid syntax (diff)
  ==
  a.py:2: error: "int" not callable
Actual:
  ==
  a.py:1: error: Invalid syntax
  ==
  C:/Users/wyatt/files/tmp/mypy_symlink/test-data/unit/lib-stub/blocker.pyi:2: error: Invalid syntax (diff)
  ==
  a.py:2: error: "int" not callable

Alignment of first line difference:
  E: C:/Users/wyatt/files/tmp/mypy/test-data/unit/lib-stub/blocker.pyi:2: err...
  A: C:/Users/wyatt/files/tmp/mypy_symlink/test-data/unit/lib-stub/blocker.py...
                                  ^
Update the test output using --update-data (implies -n0; you can additionally use the -k selector to update only specific tests)
________________________________________________________________________________________________ testAddFileWhichImportsLibModuleWithErrors ________________________________________________________________________________________________
[gw3] win32 -- Python 3.9.22 C:\Users\wyatt\files\tmp\mypy\.venv\Scripts\python.exe
data: C:\Users\wyatt\files\tmp\mypy\test-data\unit\fine-grained-modules.test:754:
Failed: Invalid output (C:\Users\wyatt\files\tmp\mypy\test-data\unit\fine-grained-modules.test, line 754)
----------------------------------------------------------------------------------------------------------- Captured stderr call -----------------------------------------------------------------------------------------------------------
Expected:
  main:2: error: Cannot find implementation or library stub for module named "a"
  main:2: note: See https://mypy.readthedocs.io/en/stable/running_mypy.html#missing-imports
  ==
  a.py:3: error: Name "z" is not defined
  C:/Users/wyatt/files/tmp/mypy/test-data/unit/lib-stub/broken.pyi:2: error: Name "y" is not defined (diff)
Actual:
  main:2: error: Cannot find implementation or library stub for module named "a"
  main:2: note: See https://mypy.readthedocs.io/en/stable/running_mypy.html#missing-imports
  ==
  a.py:3: error: Name "z" is not defined
  C:/Users/wyatt/files/tmp/mypy_symlink/test-data/unit/lib-stub/broken.pyi:2: error: Name "y" is not defined (diff)

Alignment of first line difference:
  E: C:/Users/wyatt/files/tmp/mypy/test-data/unit/lib-stub/broken.pyi:2: erro...
  A: C:/Users/wyatt/files/tmp/mypy_symlink/test-data/unit/lib-stub/broken.pyi...
                                  ^
Update the test output using --update-data (implies -n0; you can additionally use the -k selector to update only specific tests)
___________________________________________________________________________________________ testImportBringsAnotherFileWithBlockingError1_cached ___________________________________________________________________________________________
[gw2] win32 -- Python 3.9.22 C:\Users\wyatt\files\tmp\mypy\.venv\Scripts\python.exe
data: C:\Users\wyatt\files\tmp\mypy\test-data\unit\fine-grained-blockers.test:400:
Failed: Invalid output (C:\Users\wyatt\files\tmp\mypy\test-data\unit\fine-grained-blockers.test, line 400)
----------------------------------------------------------------------------------------------------------- Captured stderr call -----------------------------------------------------------------------------------------------------------
Expected:
  ==
  C:/Users/wyatt/files/tmp/mypy/test-data/unit/lib-stub/blocker.pyi:2: error: Invalid syntax (diff)
  ==
  a.py:1: error: "int" not callable
Actual:
  ==
  C:/Users/wyatt/files/tmp/mypy_symlink/test-data/unit/lib-stub/blocker.pyi:2: error: Invalid syntax (diff)
  ==
  a.py:1: error: "int" not callable

Alignment of first line difference:
  E: C:/Users/wyatt/files/tmp/mypy/test-data/unit/lib-stub/blocker.pyi:2: err...
  A: C:/Users/wyatt/files/tmp/mypy_symlink/test-data/unit/lib-stub/blocker.py...
                                  ^
Update the test output using --update-data (implies -n0; you can additionally use the -k selector to update only specific tests)
___________________________________________________________________________________ testImportBringsAnotherFileWithSemanticAnalysisBlockingError_cached ____________________________________________________________________________________
[gw2] win32 -- Python 3.9.22 C:\Users\wyatt\files\tmp\mypy\.venv\Scripts\python.exe
data: C:\Users\wyatt\files\tmp\mypy\test-data\unit\fine-grained-blockers.test:420:
Failed: Invalid output (C:\Users\wyatt\files\tmp\mypy\test-data\unit\fine-grained-blockers.test, line 420)
----------------------------------------------------------------------------------------------------------- Captured stderr call -----------------------------------------------------------------------------------------------------------
Expected:
  ==
  C:/Users/wyatt/files/tmp/mypy/test-data/unit/lib-stub/blocker2.pyi:2: error: "continue" outside loop (diff)
  ==
  a.py:1: error: "int" not callable
Actual:
  ==
  C:/Users/wyatt/files/tmp/mypy_symlink/test-data/unit/lib-stub/blocker2.pyi:2: error: "continue" outside loop (diff)
  ==
  a.py:1: error: "int" not callable

Alignment of first line difference:
  E: C:/Users/wyatt/files/tmp/mypy/test-data/unit/lib-stub/blocker2.pyi:2: er...
  A: C:/Users/wyatt/files/tmp/mypy_symlink/test-data/unit/lib-stub/blocker2.p...
                                  ^
Update the test output using --update-data (implies -n0; you can additionally use the -k selector to update only specific tests)
______________________________________________________________________________________ testFixingBlockingErrorBringsInAnotherModuleWithBlocker_cached ______________________________________________________________________________________
[gw2] win32 -- Python 3.9.22 C:\Users\wyatt\files\tmp\mypy\.venv\Scripts\python.exe
data: C:\Users\wyatt\files\tmp\mypy\test-data\unit\fine-grained-blockers.test:474:
Failed: Invalid output (C:\Users\wyatt\files\tmp\mypy\test-data\unit\fine-grained-blockers.test, line 474)
----------------------------------------------------------------------------------------------------------- Captured stderr call -----------------------------------------------------------------------------------------------------------
Expected:
  ==
  a.py:1: error: Invalid syntax
  ==
  C:/Users/wyatt/files/tmp/mypy/test-data/unit/lib-stub/blocker.pyi:2: error: Invalid syntax (diff)
  ==
  a.py:2: error: "int" not callable
Actual:
  ==
  a.py:1: error: Invalid syntax
  ==
  C:/Users/wyatt/files/tmp/mypy_symlink/test-data/unit/lib-stub/blocker.pyi:2: error: Invalid syntax (diff)
  ==
  a.py:2: error: "int" not callable

Alignment of first line difference:
  E: C:/Users/wyatt/files/tmp/mypy/test-data/unit/lib-stub/blocker.pyi:2: err...
  A: C:/Users/wyatt/files/tmp/mypy_symlink/test-data/unit/lib-stub/blocker.py...
                                  ^
Update the test output using --update-data (implies -n0; you can additionally use the -k selector to update only specific tests)
========================================================================================================= short test summary info ==========================================================================================================
FAILED mypy/test/testcheck.py::TypeCheckSuite::check-namedtuple.test::testNamedTupleAdditionalArgs
FAILED mypy/test/testfinegrained.py::FineGrainedSuite::fine-grained-blockers.test::testImportBringsAnotherFileWithBlockingError1
FAILED mypy/test/testfinegrained.py::FineGrainedSuite::fine-grained-blockers.test::testImportBringsAnotherFileWithSemanticAnalysisBlockingError
FAILED mypy/test/testfinegrained.py::FineGrainedSuite::fine-grained-blockers.test::testFixingBlockingErrorBringsInAnotherModuleWithBlocker
FAILED mypy/test/testfinegrained.py::FineGrainedSuite::fine-grained-modules.test::testAddFileWhichImportsLibModuleWithErrors
FAILED mypy/test/testfinegrainedcache.py::FineGrainedCacheSuite::fine-grained-blockers.test::testImportBringsAnotherFileWithBlockingError1_cached
FAILED mypy/test/testfinegrainedcache.py::FineGrainedCacheSuite::fine-grained-blockers.test::testImportBringsAnotherFileWithSemanticAnalysisBlockingError_cached
FAILED mypy/test/testfinegrainedcache.py::FineGrainedCacheSuite::fine-grained-blockers.test::testFixingBlockingErrorBringsInAnotherModuleWithBlocker_cached
8 failed, 11353 passed, 301 skipped, 8 xfailed in 418.89s (0:06:58)

Guía de contribución

Abrir la guía de contribución

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.

Línea de trabajo

Empieza con runtests.py pytest-fast y los casos que fallan en test-data/unit/check-namedtuple.test, fine-grained-blockers.test y fine-grained-modules.test. Investiga cómo se representan las rutas cuando las pruebas se ejecutan a través de un enlace simbólico de Windows y, después, verifica que las pruebas indicadas pasen con las rutas esperadas y reales alineadas.

Escrito por el modelo de indexación a partir del texto del issue.

Evaluación

Stack tecnológico
python
Área
testing
Tipo de issue
Error
Dificultad
3/5
Tiempo estimado
1-2 días
Estado de actividad
Estancado
Claridad
Bastante claro
Aptitud para principiantes
35/100

Recibe los nuevos issues en tu correo

Un resumen breve de issues de GitHub para principiantes.