X-Git-Url: http://www.chiark.greenend.org.uk/ucgi/~mdw/git/disorder/blobdiff_plain/0db97c0d2f4568c2b5b5f5f9b791b8025b4732aa..601b42c1d28069afd8a8ba694baefb76e6ea5171:/tests/files.py diff --git a/tests/files.py b/tests/files.py index 89375a6..984c6cc 100755 --- a/tests/files.py +++ b/tests/files.py @@ -1,7 +1,7 @@ #! /usr/bin/env python # # This file is part of DisOrder. -# Copyright (C) 2007 Richard Kettlewell +# Copyright (C) 2007, 2008 Richard Kettlewell # # 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 @@ -23,34 +23,36 @@ import dtest,time,disorder,sys def test(): """Check that the file listing comes out right""" dtest.start_daemon() - time.sleep(5) # give rescan a chance + dtest.create_user() + dtest.rescan() + assert dtest.check_files() == 0, "dtest.check_files" + print " checking regexp file listing" c = disorder.client() - failures = 0 - for d in dtest.dirs_by_dir: - xdirs = dtest.dirs_by_dir[d] - dirs = c.directories(d) - xdirs.sort() - dirs.sort() - if dirs != xdirs: - print - print "directory: %s" % d - print "expected: %s" % xdirs - print "got: %s" % dirs - failures += 1 - for d in dtest.files_by_dir: - xfiles = dtest.files_by_dir[d] - files = c.files(d) - xfiles.sort() - files.sort() - if files != xfiles: - print - print "directory: %s" % d - print "expected: %s" % xfiles - print "got: %s" % files - failures += 1 - if failures: - print - sys.exit(1) + 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 " and again to exercise cache" + 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" + print " and again to exercise cache" + 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()