sync with disorder.dev
authorRichard Kettlewell <rjk@greenend.org.uk>
Wed, 21 Nov 2007 10:23:02 +0000 (10:23 +0000)
committerRichard Kettlewell <rjk@greenend.org.uk>
Wed, 21 Nov 2007 10:23:02 +0000 (10:23 +0000)
configure.ac
server/disorderd.c
tests/Makefile.am
tests/alltests
tests/dbversion.py
tests/dtest.py
tests/files.py
tests/nothing.py
tests/version.py

index f372639..99b2e97 100644 (file)
@@ -125,17 +125,16 @@ subdirs="scripts lib clients doc examples debian"
 if test $want_server = yes; then
   subdirs="${subdirs} server plugins driver templates sounds images"
 fi
-if test $want_python = yes; then
-  AM_PATH_PYTHON
-  subdirs="${subdirs} python"
-fi
 if test $want_gtk = yes; then
   subdirs="${subdirs} disobedience"
   if test $want_server = no; then
     subdirs="${subdirs} images"
   fi
 fi
-subdirs="${subdirs} tests"
+if test $want_python = yes; then
+  AM_PATH_PYTHON([2.4])
+  subdirs="${subdirs} python tests"
+fi
 AC_SUBST([subdirs])
 
 # libtool config
@@ -498,3 +497,6 @@ AC_OUTPUT
 if test $GCC = yes && test "$gcc_werror" = ''; then
   AC_MSG_WARN([building without -Werror])
 fi
+if test $want_python = no; then
+  AC_MSG_WARN([cannot run the test suit without Python])
+fi
index 944777a..e8e1046 100644 (file)
@@ -264,8 +264,8 @@ int main(int argc, char **argv) {
   if(config->lock) {
     const char *lockfile;
     int lockfd;
-   struct flock lock;
-    
+    struct flock lock;
+
     lockfile = config_get_file("lock");
     if((lockfd = open(lockfile, O_RDWR|O_CREAT, 0600)) < 0)
       fatal(errno, "error opening %s", lockfile);
index 8367f65..7573b40 100644 (file)
@@ -1,6 +1,6 @@
 #
 # This file is part of DisOrder.
-# Copyright (C) 2004, 2005 Richard Kettlewell
+# Copyright (C) 2004, 2005, 2007 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
@@ -19,9 +19,6 @@
 #
 
 check:
-       PATH=`pwd`/../server:`pwd`/..clients:$$PATH \
-       PYTHONPATH=../python \
-               topsrcdir=${top_srcdir} \
-               ${PYTHON} ${srcdir}/alltests
+       ${PYTHON} ${srcdir}/alltests
 
 EXTRA_DIST=alltests dtest.py nothing.py version.py dbversion.py
index a68a3be..4e3f64d 100755 (executable)
@@ -1,7 +1,57 @@
 #! /usr/bin/env python
+#
+# This file is part of DisOrder.
+# Copyright (C) 2007 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
+# the Free Software Foundation; either version 2 of the License, or
+# (at your option) any later version.
+#
+# This program is distributed in the hope that it will be useful, but
+# WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+# General Public License for more details.
+#
+# You should have received a copy of the GNU General Public License
+# along with this program; if not, write to the Free Software
+# Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307
+# USA
+#
+import sys,re,os.path,os
+
+# Parse the makefile in the current directory to identify the source directory
+top_srcdir = None
+for l in file("Makefile"):
+    r = re.search("^top_srcdir *= *(.*)$",  l)
+    if r:
+        top_srcdir = r.group(1)
+        break
+if not top_srcdir:
+    fatal("cannot identify source directory")
+
+# Make sure that the test directory is on the module search path (so we can
+# find dtest and the tests themselves)
+testdir = os.path.join(top_srcdir, "tests")
+sys.path.insert(0, testdir)
 import dtest
 
-tests = ["nothing", "version", "files", "dbversion"]
+# The tests are all the *.py files in the test source directory that
+# call dtest.run
+tests = []
+for f in os.listdir(testdir):
+    r = re.search("^(.*)\\.py$", f)
+    if r is not None:
+        isTest = False
+        base = r.group(1)
+        for l in file(os.path.join(testdir, f)):
+            r = re.search("dtest\\.run", l)
+            if r is not None:
+                isTest = True
+                break
+        if isTest:
+            tests.append(base)
+tests.sort()                            # let's have a consistent order
 
 for test in tests:
     print "Test '%s'" % test
index 4e92611..e5b5c48 100644 (file)
@@ -1,4 +1,23 @@
 #! /usr/bin/env python
+#
+# This file is part of DisOrder.
+# Copyright (C) 2007 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
+# the Free Software Foundation; either version 2 of the License, or
+# (at your option) any later version.
+#
+# This program is distributed in the hope that it will be useful, but
+# WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+# General Public License for more details.
+#
+# You should have received a copy of the GNU General Public License
+# along with this program; if not, write to the Free Software
+# Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307
+# USA
+#
 import dtest,time,disorder,sys,re
 
 def test():
index 26887cd..b5cc9c9 100644 (file)
@@ -1,8 +1,65 @@
 #-*-python-*-
+#
+# This file is part of DisOrder.
+# Copyright (C) 2007 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
+# the Free Software Foundation; either version 2 of the License, or
+# (at your option) any later version.
+#
+# This program is distributed in the hope that it will be useful, but
+# WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+# General Public License for more details.
+#
+# You should have received a copy of the GNU General Public License
+# along with this program; if not, write to the Free Software
+# Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307
+# USA
+#
 
 """Utility module used by tests"""
 
-import os,os.path,subprocess,sys,disorder,unicodedata
+import os,os.path,subprocess,sys,re,unicodedata
+
+def fatal(s):
+    """Write an error message and exit"""
+    sys.stderr.write("ERROR: %s\n" % s)
+    sys.exit(1)
+
+# Identify the top build directory
+cwd = os.getcwd()
+if os.path.exists("config.h"):
+    top_builddir = cwd
+elif os.path.exists("alltests"):
+    top_builddir = os.path.dirname(cwd)
+else:
+    fatal("cannot identify build directory")
+
+# Make sure the Python build directory is on the module search path
+sys.path.insert(0, os.path.join(top_builddir, "python"))
+import disorder
+
+# Make sure the server build directory is on the executable search path
+ospath = os.environ["PATH"].split(os.pathsep)
+ospath.insert(0, os.path.join(top_builddir, "server"))
+os.environ["PATH"] = os.pathsep.join(ospath)
+
+# Parse the makefile in the current directory to identify the source directory
+top_srcdir = None
+for l in file("Makefile"):
+    r = re.match("top_srcdir *= *(.*)",  l)
+    if r:
+        top_srcdir = r.group(1)
+        break
+if not top_srcdir:
+    fatal("cannot identify source directory")
+
+# The tests source directory must be on the module search path already since
+# we found dtest.py
+
+# -----------------------------------------------------------------------------
 
 def copyfile(a,b):
     """copyfile(A, B)
@@ -17,7 +74,7 @@ Make track with relative path S exist"""
     trackdir = os.path.dirname(trackpath)
     if not os.path.exists(trackdir):
         os.makedirs(trackdir)
-    copyfile("%s/sounds/slap.ogg" % topsrcdir, trackpath)
+    copyfile("%s/sounds/slap.ogg" % top_srcdir, trackpath)
     # We record the tracks we created so they can be tested against
     # server responses.  We put them into NFC since that's what the server
     # uses internally.
@@ -113,7 +170,7 @@ tracklength *.ogg disorder-tracklength
 tracklength *.wav disorder-tracklength
 tracklength *.flac disorder-tracklength
 """ % (testroot, testroot, testroot, testroot))
-    copyfile("%s/sounds/scratch.ogg" % topsrcdir,
+    copyfile("%s/sounds/scratch.ogg" % top_srcdir,
              "%s/scratch.ogg" % testroot)
 
 def start_daemon():
@@ -147,7 +204,7 @@ def run(test, setup=None, report=True, name=None):
     tests += 1
     if setup == None:
         setup = stdtracks
-    errs = open("%s.log" % test.__name__, "w") # HNGGGH.  nO.
+    errs = open("%s.log" % test.__name__, "w")
     disorder._configfile = "%s/config" % testroot
     disorder._userconf = False
     common_setup()
@@ -187,6 +244,5 @@ Recursively delete directory D"""
 tests = 0
 failures = 0
 daemon = None
-testroot = "%s/testroot" % os.getcwd()
+testroot = "%s/tests/testroot" % top_builddir
 tracks = "%s/tracks" % testroot
-topsrcdir = os.path.abspath(os.getenv("topsrcdir"))
index e0237d4..2f636ec 100755 (executable)
@@ -1,4 +1,23 @@
 #! /usr/bin/env python
+#
+# This file is part of DisOrder.
+# Copyright (C) 2007 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
+# the Free Software Foundation; either version 2 of the License, or
+# (at your option) any later version.
+#
+# This program is distributed in the hope that it will be useful, but
+# WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+# General Public License for more details.
+#
+# You should have received a copy of the GNU General Public License
+# along with this program; if not, write to the Free Software
+# Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307
+# USA
+#
 import dtest,time,disorder,sys
 
 def test():
index 70e481b..a635f7f 100755 (executable)
@@ -1,4 +1,23 @@
 #! /usr/bin/env python
+#
+# This file is part of DisOrder.
+# Copyright (C) 2007 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
+# the Free Software Foundation; either version 2 of the License, or
+# (at your option) any later version.
+#
+# This program is distributed in the hope that it will be useful, but
+# WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+# General Public License for more details.
+#
+# You should have received a copy of the GNU General Public License
+# along with this program; if not, write to the Free Software
+# Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307
+# USA
+#
 import dtest,time
 
 def test():
index 7a95573..1eaef87 100755 (executable)
@@ -1,4 +1,23 @@
 #! /usr/bin/env python
+#
+# This file is part of DisOrder.
+# Copyright (C) 2007 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
+# the Free Software Foundation; either version 2 of the License, or
+# (at your option) any later version.
+#
+# This program is distributed in the hope that it will be useful, but
+# WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+# General Public License for more details.
+#
+# You should have received a copy of the GNU General Public License
+# along with this program; if not, write to the Free Software
+# Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307
+# USA
+#
 import dtest,time,disorder
 
 def test():