@@ -46,8 +46,8 @@ def testRaising(self):
4646 fp .close ()
4747 unlink (TESTFN )
4848
49- self .raise_catch (IOError , "IOError " )
50- self .assertRaises (IOError , open , 'this file does not exist' , 'r' )
49+ self .raise_catch (OSError , "OSError " )
50+ self .assertRaises (OSError , open , 'this file does not exist' , 'r' )
5151
5252 self .raise_catch (ImportError , "ImportError" )
5353 self .assertRaises (ImportError , __import__ , "undefined_module" )
@@ -192,11 +192,35 @@ def test_WindowsError(self):
192192 except NameError :
193193 pass
194194 else :
195- self .assertEqual (str (WindowsError (1001 )), "1001" )
196- self .assertEqual (str (WindowsError (1001 , "message" )),
197- "[Error 1001] message" )
198- self .assertEqual (WindowsError (1001 , "message" ).errno , 22 )
199- self .assertEqual (WindowsError (1001 , "message" ).winerror , 1001 )
195+ self .assertIs (WindowsError , OSError )
196+ self .assertEqual (str (OSError (1001 )), "1001" )
197+ self .assertEqual (str (OSError (1001 , "message" )),
198+ "[Errno 1001] message" )
199+ # POSIX errno (9 aka EBADF) is untranslated
200+ w = OSError (9 , 'foo' , 'bar' )
201+ self .assertEqual (w .errno , 9 )
202+ self .assertEqual (w .winerror , None )
203+ self .assertEqual (str (w ), "[Errno 9] foo: 'bar'" )
204+ # ERROR_PATH_NOT_FOUND (win error 3) becomes ENOENT (2)
205+ w = OSError (0 , 'foo' , 'bar' , 3 )
206+ self .assertEqual (w .errno , 2 )
207+ self .assertEqual (w .winerror , 3 )
208+ self .assertEqual (w .strerror , 'foo' )
209+ self .assertEqual (w .filename , 'bar' )
210+ self .assertEqual (str (w ), "[Error 3] foo: 'bar'" )
211+ # Unknown win error becomes EINVAL (22)
212+ w = OSError (0 , 'foo' , None , 1001 )
213+ self .assertEqual (w .errno , 22 )
214+ self .assertEqual (w .winerror , 1001 )
215+ self .assertEqual (w .strerror , 'foo' )
216+ self .assertEqual (w .filename , None )
217+ self .assertEqual (str (w ), "[Error 1001] foo" )
218+ # Non-numeric "errno"
219+ w = OSError ('bar' , 'foo' )
220+ self .assertEqual (w .errno , 'bar' )
221+ self .assertEqual (w .winerror , None )
222+ self .assertEqual (w .strerror , 'foo' )
223+ self .assertEqual (w .filename , None )
200224
201225 def testAttributes (self ):
202226 # test that exception attributes are happy
@@ -274,11 +298,12 @@ def testAttributes(self):
274298 'start' : 0 , 'end' : 1 }),
275299 ]
276300 try :
301+ # More tests are in test_WindowsError
277302 exceptionList .append (
278303 (WindowsError , (1 , 'strErrorStr' , 'filenameStr' ),
279304 {'args' : (1 , 'strErrorStr' ),
280- 'strerror' : 'strErrorStr' , 'winerror' : 1 ,
281- 'errno' : 22 , 'filename' : 'filenameStr' })
305+ 'strerror' : 'strErrorStr' , 'winerror' : None ,
306+ 'errno' : 1 , 'filename' : 'filenameStr' })
282307 )
283308 except NameError :
284309 pass
0 commit comments