classification
Title: test_urllib fails on windows
Type: Stage:
Components: Library (Lib) Versions: Python 2.7
process
Status: closed Resolution: fixed
Dependencies: 918368 1378455 Superseder:
Assigned To: orsenthil Nosy List: ocean-city, orsenthil, rpetrov
Priority: normal Keywords:

Created on 2009-04-28 01:43 by ocean-city, last changed 2009-05-05 18:47 by orsenthil. This issue is now closed.

Messages (5)
msg86713 - (view) Author: Hirokazu Yamamoto (ocean-city) * (Python committer) Date: 2009-04-28 01:43
Hello. I noticed test_urllib fails on windows.

======================================================================
ERROR: test_copy (__main__.urlretrieve_FileTests)
----------------------------------------------------------------------
Traceback (most recent call last):
  File "test_urllib.py", line 241, in test_copy
    test_support.TESTFN), second_temp)
  File "e:\python-dev\trunk\lib\urllib.py", line 94, in urlretrieve
    return _urlopener.retrieve(url, filename, reporthook, data)
  File "e:\python-dev\trunk\lib\urllib.py", line 238, in retrieve
    fp = self.open(url, data)
  File "e:\python-dev\trunk\lib\urllib.py", line 206, in open
    return getattr(self, name)(url)
  File "e:\python-dev\trunk\lib\urllib.py", line 464, in open_file
    return self.open_local_file(url)
  File "e:\python-dev\trunk\lib\urllib.py", line 478, in open_local_file
    raise IOError(e.errno, e.strerror, e.filename)
IOError: [Errno 22] ネットワークに到達できません。ネットワークのトラブル
シューテ
ィングについては、Windows ヘルプを参照してください。:
'\\\\\\E|\\python-dev\\tru
nk\\Lib\\test\\@test'

(snip)

This happens since r71780. Workaround is to add "|" to safe list of 
  fullurl = quote(fullurl, safe="%/:=&?~#+!$,;'@()*[]")

# I don't know "|" is really safe.
msg86714 - (view) Author: Hirokazu Yamamoto (ocean-city) * (Python committer) Date: 2009-04-28 01:48
Python 2.7a0 (trunk, Apr 28 2009, 10:23:56) [MSC v.1200 32 bit (Intel)]
on win32

Type "help", "copyright", "credits" or "license" for more information.
>>> import urllib
>>> urllib.pathname2url("c:/foo")
'///C|//foo'

When "|" above is quoted, urllib.urlopen cannot handle quoted url.
msg86770 - (view) Author: Roumen Petrov (rpetrov) * Date: 2009-04-28 22:02
Or another workaround is to change line "path = '///' + drive + '|' "
from file ./Lib/nturl2path.py, i.e. '|' -> ':' .
msg86880 - (view) Author: Senthil Kumaran (orsenthil) * (Python committer) Date: 2009-05-01 11:17
I had made that change. tested only linux, where it was all pass. Shall
address this one soon.
msg87262 - (view) Author: Senthil Kumaran (orsenthil) * (Python committer) Date: 2009-05-05 17:35
Fixed this in the revision: 72343. Agree to the comment on replacing '|'
to ':' in pathname2url as windows recognizes it. test_urllib passes.
History
Date User Action Args
2009-05-05 18:47:34orsenthilsetstatus: open -> closed
2009-05-05 17:35:56orsenthilsetresolution: fixed
messages: + msg87262
2009-05-01 11:17:41orsenthilsetassignee: orsenthil

messages: + msg86880
nosy: + orsenthil
2009-04-29 12:05:27ocean-citysetdependencies: + a problem of urllib using open_local_file
2009-04-28 22:02:52rpetrovsetnosy: + rpetrov
messages: + msg86770
2009-04-28 01:48:43ocean-citysetdependencies: + urllib doesn't correct server returned urls
2009-04-28 01:48:05ocean-citysetmessages: + msg86714
2009-04-28 01:43:22ocean-citycreate