99import traceback
1010import sys , os , time , errno
1111
12- if sys .platform [: 3 ] in ( 'win' , ' os2') or sys .platform == 'riscos' :
12+ if sys .platform == ' os2' or sys .platform == 'riscos' :
1313 raise unittest .SkipTest ("Can't test signal on %s" % \
1414 sys .platform )
1515
@@ -37,6 +37,7 @@ def ignoring_eintr(__func, *args, **kwargs):
3737 return None
3838
3939
40+ @unittest .skipIf (sys .platform == "win32" , "Not valid on Windows" )
4041class InterProcessSignalTests (unittest .TestCase ):
4142 MAX_DURATION = 20 # Entire test should last at most 20 sec.
4243
@@ -186,6 +187,7 @@ def test_main(self):
186187 self .MAX_DURATION )
187188
188189
190+ @unittest .skipIf (sys .platform == "win32" , "Not valid on Windows" )
189191class BasicSignalTests (unittest .TestCase ):
190192 def trivial_signal_handler (self , * args ):
191193 pass
@@ -208,6 +210,23 @@ def test_getsignal(self):
208210 self .assertEquals (signal .getsignal (signal .SIGHUP ), hup )
209211
210212
213+ @unittest .skipUnless (sys .platform == "win32" , "Windows specific" )
214+ class WindowsSignalTests (unittest .TestCase ):
215+ def test_issue9324 (self ):
216+ handler = lambda x , y : None
217+ signal .signal (signal .SIGABRT , handler )
218+ signal .signal (signal .SIGFPE , handler )
219+ signal .signal (signal .SIGILL , handler )
220+ signal .signal (signal .SIGINT , handler )
221+ signal .signal (signal .SIGSEGV , handler )
222+ signal .signal (signal .SIGTERM , handler )
223+
224+ with self .assertRaises (ValueError ):
225+ signal .signal (- 1 , handler )
226+ sinal .signal (7 , handler )
227+
228+
229+ @unittest .skipIf (sys .platform == "win32" , "Not valid on Windows" )
211230class WakeupSignalTests (unittest .TestCase ):
212231 TIMEOUT_FULL = 10
213232 TIMEOUT_HALF = 5
@@ -253,14 +272,15 @@ def tearDown(self):
253272 os .close (self .write )
254273 signal .signal (signal .SIGALRM , self .alrm )
255274
275+ @unittest .skipIf (sys .platform == "win32" , "Not valid on Windows" )
256276class SiginterruptTest (unittest .TestCase ):
257- signum = signal .SIGUSR1
258277
259278 def setUp (self ):
260279 """Install a no-op signal handler that can be set to allow
261280 interrupts or not, and arrange for the original signal handler to be
262281 re-installed when the test is finished.
263282 """
283+ self .signum = signal .SIGUSR1
264284 oldhandler = signal .signal (self .signum , lambda x ,y : None )
265285 self .addCleanup (signal .signal , self .signum , oldhandler )
266286
@@ -354,7 +374,7 @@ def test_siginterrupt_off(self):
354374 self .assertFalse (i )
355375
356376
357-
377+ @ unittest . skipIf ( sys . platform == "win32" , "Not valid on Windows" )
358378class ItimerTest (unittest .TestCase ):
359379 def setUp (self ):
360380 self .hndl_called = False
@@ -463,8 +483,11 @@ def test_itimer_prof(self):
463483 self .assertEqual (self .hndl_called , True )
464484
465485def test_main ():
466- support .run_unittest (BasicSignalTests , InterProcessSignalTests ,
467- WakeupSignalTests , SiginterruptTest , ItimerTest )
486+ if sys .platform == "win32" :
487+ support .run_unittest (WindowsSignalTests )
488+ else :
489+ support .run_unittest (BasicSignalTests , InterProcessSignalTests ,
490+ WakeupSignalTests , SiginterruptTest , ItimerTest )
468491
469492
470493if __name__ == "__main__" :
0 commit comments