[Python-checkins] r61539 - python/trunk/Lib/test/test_winsound.py

steven.bethard python-checkins at python.org
Tue Mar 18 20:04:32 CET 2008


Author: steven.bethard
Date: Tue Mar 18 20:04:32 2008
New Revision: 61539

Modified:
   python/trunk/Lib/test/test_winsound.py
Log:
_have_soundcard() is a bad check for winsound.Beep, since you can have a soundcard but have the beep driver disabled. This revision basically disables the beep tests by wrapping them in a try/except. The Right Way To Do It is to come up with a _have_enabled_beep_driver() and use that.

Modified: python/trunk/Lib/test/test_winsound.py
==============================================================================
--- python/trunk/Lib/test/test_winsound.py	(original)
+++ python/trunk/Lib/test/test_winsound.py	Tue Mar 18 20:04:32 2008
@@ -22,25 +22,27 @@
         self.assertRaises(ValueError, winsound.Beep, 32768, 75)
 
     def test_extremes(self):
-        if _have_soundcard():
-            winsound.Beep(37, 75)
-            winsound.Beep(32767, 75)
-        else:
-            # The behaviour of winsound.Beep() seems to differ between
-            # different versions of Windows when there's either a) no
-            # sound card entirely, b) legacy beep driver has been disabled,
-            # or c) the legacy beep driver has been uninstalled.  Sometimes
-            # RuntimeErrors are raised, sometimes they're not.  Meh.
-            try:
-                winsound.Beep(37, 75)
-                winsound.Beep(32767, 75)
-            except RuntimeError:
-                pass
+        self._beep(37, 75)
+        self._beep(32767, 75)
 
     def test_increasingfrequency(self):
-        if _have_soundcard():
-            for i in xrange(100, 2000, 100):
-                winsound.Beep(i, 75)
+        for i in xrange(100, 2000, 100):
+            self._beep(i, 75)
+
+    def _beep(self, *args):
+        # these tests used to use _have_soundcard(), but it's quite
+        # possible to have a soundcard, and yet have the beep driver
+        # disabled. So basically, we have no way of knowing whether
+        # a beep should be produced or not, so currently if these
+        # tests fail we're ignoring them
+        #
+        # XXX the right fix for this is to define something like
+        # _have_enabled_beep_driver() and use that instead of the
+        # try/except below
+        try:
+            winsound.Beep(*args)
+        except RuntimeError:
+            pass
 
 class MessageBeepTest(unittest.TestCase):
 


More information about the Python-checkins mailing list