`test_file` failed on Windows with a longer repo path in `test_urllib2`
Nessuno ha ancora preso questa issue.
- Lingua principale
- Python
- Stelle
- 77.2k
- Fork
- 35.9k
- Metriche di merge delle PR
- Metriche PR in attesa
Descrizione
On Windows, when the CPython repository is cloned to a slightly longer path, for example, C:\Users\xxxxx\Source\cpython — this test case will fail:
ERROR: test_file (test.test_urllib2.HandlerTests.test_file)
----------------------------------------------------------------------
Traceback (most recent call last):
File "C:\Users\xxxxx\Source\cpython\Lib\encodings\idna.py", line 219, in encode
result.extend(ToASCII(label))
~~~~~~~^^^^^^^
File "C:\Users\xxxxx\Source\cpython\Lib\encodings\idna.py", line 115, in ToASCII
raise UnicodeEncodeError("idna", label, 0, len(label), "label too long")
UnicodeEncodeError: 'idna' codec can't encode characters in position 0-64: label too long
During handling of the above exception, another exception occurred:
Traceback (most recent call last):
File "C:\Users\xxxxx\Source\cpython\Lib\test\test_urllib2.py", line 872, in test_file
self.assertRaises(urllib.error.URLError,
~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^
h.file_open, Request(url))
^^^^^^^^^^^^^^^^^^^^^^^^^^
File "C:\Users\xxxxx\Source\cpython\Lib\unittest\case.py", line 813, in assertRaises
return context.handle('assertRaises', args, kwargs)
~~~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "C:\Users\xxxxx\Source\cpython\Lib\unittest\case.py", line 247, in handle
callable_obj(*args, **kwargs)
~~~~~~~~~~~~^^^^^^^^^^^^^^^^^
File "C:\Users\xxxxx\Source\cpython\Lib\urllib\request.py", line 1469, in open_local_file
localfile = url2pathname(req.full_url, require_scheme=True)
File "C:\Users\xxxxx\Source\cpython\Lib\urllib\request.py", line 1658, in url2pathname
if not _is_local_authority(authority):
~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^
File "C:\Users\xxxxx\Source\cpython\Lib\urllib\request.py", line 1498, in _is_local_authority
address = socket.gethostbyname(authority)
File "C:\Users\xxxxx\Source\cpython\Lib\encodings\idna.py", line 222, in encode
raise UnicodeEncodeError(
...<5 lines>...
)
UnicodeEncodeError: 'idna' codec can't encode characters in position 8-72: label too long
encoding with 'idna' codec failed
These two URLs will become:
file://127.0.0.1:80C:\Users\xxxxx\Source\cpython\build\test_python_worker_17208æ/@test_17208_tmpæfile://somerandomhost.ontheinternet.comC:\Users\xxxxx\Source\cpython\build\test_python_worker_4676æ/@test_4676_tmpæ
Here, 127.0.0.1:80C:\Users\xxxxx\Source\cpython\build\test_python_worker_17208æ is treated as the domain and passed to socket.gethostbyname. However, the part 1:80C:\Users\xxxxx\Source\cpython\build\test_python_worker_17208æ is too long to be a valid domain label. As a result, the idna codec raises an exception, indicating the label is too long.
A patch is on the way.
Linked PRs
- gh-133449
Guida per i contributori
Apri la guida per i contributori
Come iniziare
- Leggi tutta la issue e poi la guida ai contributi del progetto.
- Commenta sulla issue per dire che te ne occupi tu — evita che due persone facciano lo stesso lavoro.
- Fai un fork del repository e lavora su un branch.
- Apri una pull request che faccia riferimento al numero della issue.
Direzione di ricerca
Inizia in Lib/test/test_urllib2.py intorno a test_file, in particolare con la configurazione dell’URL vicino alle righe 857-860 e l’asserzione vicino alla riga 872. Esegui test.test_urllib2.HandlerTests.test_file su Windows con un percorso di checkout più lungo e confronta l’URL e l’eccezione risultanti. Il lavoro è completato quando il test non fallisce più in quell’ambiente, mantenendo la sua asserzione URLError prevista.
Scritto dal modello di indicizzazione a partire dal testo della issue.
Valutazione
- Stack tecnologico
- python
- Ambito
- testing-qa
- Tipo di issue
- Bug
- Difficoltà
- 2/5
- Tempo stimato
- 1-3 ore
- Stato di attività
- Ferma
- Chiarezza
- Specificata chiaramente
- Idoneità per principianti
- 15/100