[Python-checkins] r61481 - python/branches/release25-maint/Lib/test/test_winsound.py

trent.nelson python-checkins at python.org
Tue Mar 18 04:52:22 CET 2008


Author: trent.nelson
Date: Tue Mar 18 04:52:22 2008
New Revision: 61481

Modified:
   python/branches/release25-maint/Lib/test/test_winsound.py
Log:
Ensure this test passes even if there are no soundcards in the system.  Backport from trunk r61242.

Modified: python/branches/release25-maint/Lib/test/test_winsound.py
==============================================================================
--- python/branches/release25-maint/Lib/test/test_winsound.py	(original)
+++ python/branches/release25-maint/Lib/test/test_winsound.py	Tue Mar 18 04:52:22 2008
@@ -8,6 +8,13 @@
 
 
 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 @@
         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):
 


More information about the Python-checkins mailing list