python / python/mypy

Certain tests can't deal with symlinks on Windows

Aperta
#19,956 1 commento 0 reazioni 0 assegnatari Vedi su GitHub

Nessuno ha ancora preso questa issue.

bug
Lingua principale
Python
Stelle
20.6k
Fork
3.3k
Metriche di merge delle PR
Metriche PR in attesa

Descrizione

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)

Guida per i contributori

Apri la guida per i contributori

Come iniziare

  1. Leggi tutta la issue e poi la guida ai contributi del progetto.
  2. Commenta sulla issue per dire che te ne occupi tu — evita che due persone facciano lo stesso lavoro.
  3. Fai un fork del repository e lavora su un branch.
  4. Apri una pull request che faccia riferimento al numero della issue.

Direzione di ricerca

Inizia con runtests.py pytest-fast e i casi che falliscono in test-data/unit/check-namedtuple.test, fine-grained-blockers.test e fine-grained-modules.test. Esamina come vengono rappresentati i percorsi quando i test vengono eseguiti tramite un symlink di Windows, quindi verifica che i test elencati passino con i percorsi attesi ed effettivi allineati.

Scritto dal modello di indicizzazione a partire dal testo della issue.

Valutazione

Stack tecnologico
python
Ambito
testing
Tipo di issue
Bug
Difficoltà
3/5
Tempo stimato
1-2 giorni
Stato di attività
Ferma
Chiarezza
Abbastanza chiara
Idoneità per principianti
35/100

Ricevi le nuove issue nella tua casella

Un breve riepilogo di issue GitHub adatte ai principianti.