]> granicus.if.org Git - python/commitdiff
Ensure this test passes even if there are no soundcards in the system. Backport...
authorTrent Nelson <trent.nelson@snakebite.org>
Tue, 18 Mar 2008 03:52:22 +0000 (03:52 +0000)
committerTrent Nelson <trent.nelson@snakebite.org>
Tue, 18 Mar 2008 03:52:22 +0000 (03:52 +0000)
Lib/test/test_winsound.py

index 19d4459a55b9432aa668e1a8b1040099b6e0b697..5606c44cc09eccb6a8ef41ef8eb5c26c34514aa1 100644 (file)
@@ -8,6 +8,13 @@ import subprocess
 
 
 class BeepTest(unittest.TestCase):
+    # As with PlaySoundTest, incorporate the _have_soundcard() check
+    # into our test methods.  If there's no audio device present,
+    # winsound.Beep returns 0 and GetLastError() returns 127, which
+    # is: ERROR_PROC_NOT_FOUND ("The specified procedure could not
+    # be found").  (FWIW, virtual/Hyper-V systems fall under this
+    # scenario as they have no sound devices whatsoever  (not even
+    # a legacy Beep device).)
 
     def test_errors(self):
         self.assertRaises(TypeError, winsound.Beep)
@@ -15,12 +22,17 @@ class BeepTest(unittest.TestCase):
         self.assertRaises(ValueError, winsound.Beep, 32768, 75)
 
     def test_extremes(self):
-        winsound.Beep(37, 75)
-        winsound.Beep(32767, 75)
+        if _have_soundcard():
+            winsound.Beep(37, 75)
+            winsound.Beep(32767, 75)
+        else:
+            self.assertRaises(RuntimeError, winsound.Beep, 37, 75)
+            self.assertRaises(RuntimeError, winsound.Beep, 32767, 75)
 
     def test_increasingfrequency(self):
-        for i in xrange(100, 2000, 100):
-            winsound.Beep(i, 75)
+        if _have_soundcard():
+            for i in xrange(100, 2000, 100):
+                winsound.Beep(i, 75)
 
 class MessageBeepTest(unittest.TestCase):