chiark / gitweb /
tests/queue.py: check that the queue is padded to the right length
[disorder] / tests / dtest.py
index ab76991..7c0bae0 100644 (file)
@@ -21,7 +21,7 @@
 
 """Utility module used by tests"""
 
-import os,os.path,subprocess,sys,re,time,unicodedata
+import os,os.path,subprocess,sys,re,time,unicodedata,random
 
 def fatal(s):
     """Write an error message and exit"""
@@ -66,6 +66,17 @@ def copyfile(a,b):
 Copy A to B."""
     open(b,"w").write(open(a).read())
 
+def to_unicode(s):
+    """Convert UTF-8 to unicode.  A no-op if already unicode."""
+    if type(s) == unicode:
+        return s
+    else:
+        return unicode(s, "UTF-8")
+
+def nfc(s):
+    """Convert UTF-8 string or unicode to NFC unicode."""
+    return  unicodedata.normalize("NFC", to_unicode(s))
+
 def maketrack(s):
     """maketrack(S)
 
@@ -78,8 +89,7 @@ Make track with relative path S exist"""
     # We record the tracks we created so they can be tested against
     # server responses.  We put them into NFC since that's what the server
     # uses internally.
-    bits = unicodedata.normalize("NFC",
-                                 unicode(s, "UTF-8")).split('/')
+    bits = nfc(s).split('/')
     dp = tracks
     for d in bits [0:-1]:
         dd = "%s/%s" % (dp,  d)
@@ -127,11 +137,11 @@ def stdtracks():
     maketrack("Joe Bloggs/Second Album/03:Third track.ogg")
     maketrack("Joe Bloggs/Second Album/04:Fourth track.ogg")
     maketrack("Joe Bloggs/Second Album/05:Fifth track.ogg")
-    maketrack("Joe Bloggs/Third Album/01:First track.ogg")
-    maketrack("Joe Bloggs/Third Album/02:Second track.ogg")
-    maketrack("Joe Bloggs/Third Album/03:Third track.ogg")
-    maketrack("Joe Bloggs/Third Album/04:Fourth track.ogg")
-    maketrack("Joe Bloggs/Third Album/05:Fifth track.ogg")
+    maketrack("Joe Bloggs/Third Album/01:First_track.ogg")
+    maketrack("Joe Bloggs/Third Album/02:Second_track.ogg")
+    maketrack("Joe Bloggs/Third Album/03:Third_track.ogg")
+    maketrack("Joe Bloggs/Third Album/04:Fourth_track.ogg")
+    maketrack("Joe Bloggs/Third Album/05:Fifth_track.ogg")
     maketrack("Fred Smith/Boring/01:Dull.ogg")
     maketrack("Fred Smith/Boring/02:Tedious.ogg")
     maketrack("Fred Smith/Boring/03:Drum Solo.ogg")
@@ -143,9 +153,10 @@ def stdtracks():
 def common_setup():
     remove_dir(testroot)
     os.mkdir(testroot)
+    global port
+    port = random.randint(49152, 65535)
     open("%s/config" % testroot, "w").write(
-    """player *.ogg shell 'echo "$TRACK" >> %s/played.log'
-home %s
+    """home %s
 collection fs UTF-8 %s/tracks
 scratch %s/scratch.ogg
 gap 0
@@ -157,7 +168,9 @@ stopword the a an and to too in on of we i am as im for is
 username fred
 password fredpass
 allow fred fredpass
+plugins
 plugins %s/plugins
+plugins %s/plugins/.libs
 player *.mp3 execraw disorder-decode
 player *.ogg execraw disorder-decode
 player *.wav execraw disorder-decode
@@ -166,7 +179,11 @@ tracklength *.mp3 disorder-tracklength
 tracklength *.ogg disorder-tracklength
 tracklength *.wav disorder-tracklength
 tracklength *.flac disorder-tracklength
-""" % (testroot, testroot, testroot, testroot, top_builddir))
+speaker_backend network
+broadcast 127.0.0.1 %d
+broadcast_from 127.0.0.1 %d
+""" % (testroot, testroot, testroot, top_builddir, top_builddir,
+       port, port + 1))
     copyfile("%s/sounds/scratch.ogg" % top_srcdir,
              "%s/scratch.ogg" % testroot)
 
@@ -175,7 +192,7 @@ def start_daemon():
 
 Start the daemon."""
     global daemon, errs
-    assert daemon == None
+    assert daemon == None, "no daemon running"
     print " starting daemon"
     # remove the socket if it exists
     socket = "%s/socket" % testroot
@@ -256,7 +273,7 @@ def run(module=None, report=True):
         except AssertionError, e:
             global failures
             failures += 1
-            print e
+            print "assertion failed: %s" % e.message
     finally:
         stop_daemon()
     if report: