chiark / gitweb /
tests/files.py; ok except for the non-ascii filenames
authorRichard Kettlewell <rjk@greenend.org.uk>
Tue, 20 Nov 2007 15:10:24 +0000 (15:10 +0000)
committerRichard Kettlewell <rjk@greenend.org.uk>
Tue, 20 Nov 2007 15:10:24 +0000 (15:10 +0000)
tests/alltests
tests/dtest.py
tests/files.py [new file with mode: 0755]

index c8f04c7..8be9441 100755 (executable)
@@ -1,7 +1,7 @@
 #! /usr/bin/env python
 import dtest
 
-tests = ["nothing", "version"]
+tests = ["nothing", "version", "files"]
 
 for test in tests:
     print "Test '%s'" % test
index d9f6788..3923406 100644 (file)
@@ -13,11 +13,25 @@ def maketrack(s):
     """maketrack(S)
 
 Make track with relative path S exist"""
-    trackpath = "%s/tracks/%s" % (testroot, s)
+    trackpath = "%s/%s" % (tracks, s)
     trackdir = os.path.dirname(trackpath)
     if not os.path.exists(trackdir):
         os.makedirs(trackdir)
     copyfile("%s/sounds/slap.ogg" % topsrcdir, trackpath)
+    # We record the tracks we created so they can be tested against
+    # server responses
+    bits = s.split('/')
+    dp = tracks
+    for d in bits [0:-1]:
+        dd = "%s/%s" % (dp,  d)
+        if dp not in dirs_by_dir:
+            dirs_by_dir[dp] = []
+        if dd not in dirs_by_dir[dp]:
+            dirs_by_dir[dp].append(dd)
+        dp = "%s/%s" % (dp, d)
+    if dp not in files_by_dir:
+        files_by_dir[dp] = []
+    files_by_dir[dp].append("%s/%s" % (dp, bits[-1]))
 
 def stdtracks():
     # We create some tracks with non-ASCII characters in the name and
@@ -32,6 +46,10 @@ def stdtracks():
     # is frustrated.  Provided we test on traditional filesytsems too this
     # shouldn't be a problem.
     # (See http://developer.apple.com/qa/qa2001/qa1173.html)
+
+    global dirs_by_dir, files_by_dir
+    dirs_by_dir={}
+    files_by_dir={}
     
     # C3 8C = 00CC LATIN CAPITAL LETTER I WITH GRAVE
     # (in NFC)
@@ -45,13 +63,11 @@ def stdtracks():
     # ...hopefuly giving C3 8D = 00CD LATIN CAPITAL LETTER I WITH ACUTE
     maketrack("Joe Bloggs/First Album/04:Fourth track.ogg")
     maketrack("Joe Bloggs/First Album/05:Fifth track.ogg")
-    maketrack("Joe Bloggs/First Album/05:Fifth track.ogg")
     maketrack("Joe Bloggs/Second Album/01:First track.ogg")
     maketrack("Joe Bloggs/Second Album/02:Second track.ogg")
     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/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")
@@ -172,4 +188,5 @@ tests = 0
 failures = 0
 daemon = None
 testroot = "%s/testroot" % os.getcwd()
+tracks = "%s/tracks" % testroot
 topsrcdir = os.path.abspath(os.getenv("topsrcdir"))
diff --git a/tests/files.py b/tests/files.py
new file mode 100755 (executable)
index 0000000..938564a
--- /dev/null
@@ -0,0 +1,36 @@
+#! /usr/bin/env python
+import dtest,time,disorder,sys
+
+def test():
+    """Ask the server its version number"""
+    time.sleep(5)                       # give rescan a chance
+    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)
+
+if __name__ == '__main__':
+    dtest.run(test)