"""Check that the file listing comes out right"""
dtest.start_daemon()
assert dtest.check_files() == 0, "dtest.check_files"
+ print " checking regexp file listing"
+ c = disorder.client()
+ f = c.files("%s/Joe Bloggs/First Album" % dtest.tracks,
+ "second")
+ assert len(f) == 1, "checking for one match"
+ assert f[0] == "%s/Joe Bloggs/First Album/02:Second track.ogg" % dtest.tracks
+ print " checking unicode regexp file listing"
+ f = c.files("%s/Joe Bloggs/First Album" % dtest.tracks,
+ "first")
+ assert len(f) == 0, "checking for 0 matches"
+ # This is rather unsatisfactory but it is the current behavior. We could
+ # for instance go to NFD for regexp matching but we'd have to do the same
+ # to the regexp, including replacing single characters with (possibly
+ # bracketed) decomposed forms. Really the answer has to be a more
+ # Unicode-aware regexp library.
+ f = c.files("%s/Joe Bloggs/First Album" % dtest.tracks,
+ "fi\\p{Mn}*rst")
+ assert len(f) == 0, "checking for 0 matches"
if __name__ == '__main__':
dtest.run()
assert len(ts) == 1, "check track appears exactly once in recent"
t = ts[0]
assert t['submitter'] == u'fred', "check recent entry submitter"
+ print " disabling play"
+ c.disable()
print " scratching current track"
p = c.playing()
i = p['id']
ts = filter(lambda t: t['id'] == i, r)
assert len(ts) == 1, "check scratched track appears exactly once in recent"
assert ts[0]['state'] == 'scratched', "checking track scratched"
+ print " waiting for scratch to complete"
+ while (p is not None and p['state'] == 'isscratch'):
+ time.sleep(1)
+ p = c.playing()
+ assert p is None, "checking nothing is playing"
if __name__ == '__main__':
dtest.run()