X-Git-Url: http://www.chiark.greenend.org.uk/ucgi/~mdw/git/disorder/blobdiff_plain/2b2a5fed939a267d9ab95ce900a15bf11e108edf..77b521b09666ff694a7bf746ef8e910ca0a53d48:/tests/play.py diff --git a/tests/play.py b/tests/play.py index ce5cbb1..abf1b38 100755 --- a/tests/play.py +++ b/tests/play.py @@ -3,27 +3,26 @@ # This file is part of DisOrder. # Copyright (C) 2007, 2008 Richard Kettlewell # -# This program is free software; you can redistribute it and/or modify +# This program is free software: you can redistribute it and/or modify # it under the terms of the GNU General Public License as published by -# the Free Software Foundation; either version 2 of the License, or +# the Free Software Foundation, either version 3 of the License, or # (at your option) any later version. # -# This program is distributed in the hope that it will be useful, but -# WITHOUT ANY WARRANTY; without even the implied warranty of -# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU -# General Public License for more details. -# +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +# GNU General Public License for more details. +# # You should have received a copy of the GNU General Public License -# along with this program; if not, write to the Free Software -# Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 -# USA +# along with this program. If not, see . # -import dtest,time,disorder,re +import dtest,time,disorder,re,sys def test(): """Play some tracks""" dtest.start_daemon() dtest.create_user() + dtest.rescan() # ensure all files are scanned c = disorder.client() c.random_disable() assert c.random_enabled() == False @@ -44,11 +43,15 @@ def test(): assert c.enabled() == True p = c.playing() r = c.recent() + limit = 60 while not((p is not None and p['id'] == i) - or (len(filter(lambda t: t['track'] == track and 'submitter' in t, r)) > 0)): + or (len(filter(lambda t: t['track'] == track + and 'submitter' in t, r)) > 0)) and limit > 0: time.sleep(1) p = c.playing() r = c.recent() + limit -= 1 + assert limit > 0, "check track did complete in a reasonable time" print " checking track turned up in recent list" while (p is not None and p['id'] == i): time.sleep(1) @@ -61,7 +64,9 @@ def test(): print " testing scratches" retry = False - while True: + scratchlimit = 5 + while scratchlimit > 0: + scratchlimit -= 1 c.disable() print " starting a track" c.play(track) @@ -75,9 +80,12 @@ def test(): c.scratch(i) print " waiting for track to finish" p = c.playing() - while (p is not None and p['id'] == i): + limit = 60 + while (p is not None and p['id'] == i) and limit > 0: time.sleep(1) p = c.playing() + limit -= 1 + assert limit > 0, "check track finishes in a reasonable period" print " checking scratched track turned up in recent list" r = c.recent() ts = filter(lambda t: t['id'] == i, r) @@ -87,6 +95,10 @@ def test(): continue assert ts[0]['state'] == 'scratched', "checking track scratched" break + if scratchlimit == 0: + # TODO this is really not a great approach! + print " didn't complete in a reasonable time" + sys.exit(77) print " waiting for scratch to complete" p = c.recent() while p is not None: