chiark / gitweb /
Tests use 'api rtp' to avoid (harmless) error message
[disorder] / tests / files.py
1 #! /usr/bin/env python
2 #
3 # This file is part of DisOrder.
4 # Copyright (C) 2007, 2008 Richard Kettlewell
5 #
6 # This program is free software: you can redistribute it and/or modify
7 # it under the terms of the GNU General Public License as published by
8 # the Free Software Foundation, either version 3 of the License, or
9 # (at your option) any later version.
10 #
11 # This program is distributed in the hope that it will be useful,
12 # but WITHOUT ANY WARRANTY; without even the implied warranty of
13 # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
14 # GNU General Public License for more details.
15
16 # You should have received a copy of the GNU General Public License
17 # along with this program.  If not, see <http://www.gnu.org/licenses/>.
18 #
19 import dtest,time,disorder,sys
20
21 def test():
22     """Check that the file listing comes out right"""
23     dtest.start_daemon()
24     dtest.create_user()
25     dtest.rescan()
26     assert dtest.check_files() == 0, "dtest.check_files"
27     print " checking regexp file listing"
28     c = disorder.client()
29     f = c.files("%s/Joe Bloggs/First Album" % dtest.tracks,
30                 "second")
31     assert len(f) == 1, "checking for one match"
32     assert f[0] == "%s/Joe Bloggs/First Album/02:Second track.ogg" % dtest.tracks
33     print " and again to exercise cache"
34     f = c.files("%s/Joe Bloggs/First Album" % dtest.tracks,
35                 "second")
36     assert len(f) == 1, "checking for one match"
37     assert f[0] == "%s/Joe Bloggs/First Album/02:Second track.ogg" % dtest.tracks
38     print " checking unicode regexp file listing"
39     f = c.files("%s/Joe Bloggs/First Album" % dtest.tracks,
40                 "first")
41     assert len(f) == 0, "checking for 0 matches"
42     print " and again to exercise cache"
43     f = c.files("%s/Joe Bloggs/First Album" % dtest.tracks,
44                 "first")
45     assert len(f) == 0, "checking for 0 matches"
46     # This is rather unsatisfactory but it is the current behavior.  We could
47     # for instance go to NFD for regexp matching but we'd have to do the same
48     # to the regexp, including replacing single characters with (possibly
49     # bracketed) decomposed forms.  Really the answer has to be a more
50     # Unicode-aware regexp library.
51     f = c.files("%s/Joe Bloggs/First Album" % dtest.tracks,
52                 "fi\\p{Mn}*rst")
53     assert len(f) == 0, "checking for 0 matches"
54
55 if __name__ == '__main__':
56     dtest.run()