From 121e365432c0a2f4bde67d553f545b5f42b88734 Mon Sep 17 00:00:00 2001 Message-Id: <121e365432c0a2f4bde67d553f545b5f42b88734.1713561971.git.mdw@distorted.org.uk> From: Mark Wooding Date: Tue, 20 Nov 2007 15:10:24 +0000 Subject: [PATCH] tests/files.py; ok except for the non-ascii filenames Organization: Straylight/Edgeware From: Richard Kettlewell --- tests/alltests | 2 +- tests/dtest.py | 23 ++++++++++++++++++++--- tests/files.py | 36 ++++++++++++++++++++++++++++++++++++ 3 files changed, 57 insertions(+), 4 deletions(-) create mode 100755 tests/files.py diff --git a/tests/alltests b/tests/alltests index c8f04c7..8be9441 100755 --- a/tests/alltests +++ b/tests/alltests @@ -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 diff --git a/tests/dtest.py b/tests/dtest.py index d9f6788..3923406 100644 --- a/tests/dtest.py +++ b/tests/dtest.py @@ -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 index 0000000..938564a --- /dev/null +++ b/tests/files.py @@ -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) -- [mdw]