@@ -46,8 +46,8 @@ def testRaising(self):
46
46
fp .close ()
47
47
unlink (TESTFN )
48
48
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' )
51
51
52
52
self .raise_catch (ImportError , "ImportError" )
53
53
self .assertRaises (ImportError , __import__ , "undefined_module" )
@@ -192,11 +192,35 @@ def test_WindowsError(self):
192
192
except NameError :
193
193
pass
194
194
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 )
200
224
201
225
def testAttributes (self ):
202
226
# test that exception attributes are happy
@@ -274,11 +298,12 @@ def testAttributes(self):
274
298
'start' : 0 , 'end' : 1 }),
275
299
]
276
300
try :
301
+ # More tests are in test_WindowsError
277
302
exceptionList .append (
278
303
(WindowsError , (1 , 'strErrorStr' , 'filenameStr' ),
279
304
{'args' : (1 , 'strErrorStr' ),
280
- 'strerror' : 'strErrorStr' , 'winerror' : 1 ,
281
- 'errno' : 22 , 'filename' : 'filenameStr' })
305
+ 'strerror' : 'strErrorStr' , 'winerror' : None ,
306
+ 'errno' : 1 , 'filename' : 'filenameStr' })
282
307
)
283
308
except NameError :
284
309
pass
0 commit comments