From 130521539e996d86cc45772f562adc6197b85131 Mon Sep 17 00:00:00 2001 From: Julien Muchembled <jm@nexedi.com> Date: Wed, 23 Mar 2011 20:56:53 +0000 Subject: [PATCH] Add simple bot to run unit tests git-svn-id: https://svn.erp5.org/repos/neo/trunk@2690 71dcc9de-d417-0410-9af5-da40c76e7ee4 --- tools/test_bot | 55 ++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 55 insertions(+) create mode 100755 tools/test_bot diff --git a/tools/test_bot b/tools/test_bot new file mode 100755 index 00000000..af94e8c8 --- /dev/null +++ b/tools/test_bot @@ -0,0 +1,55 @@ +#!/usr/bin/python +import os, subprocess, sys, time +import pysvn + +def clean(): + for path, dir_list, file_list in os.walk('.'): + for file in file_list: + # delete *.pyc files so that deleted/moved files can not be imported + if file[-4:] in ('.pyc', '.pyo'): + os.remove(os.path.join(path, file)) + +def main(): + if 'LANG' in os.environ: + del os.environ['LANG'] + + arg_count = 1 + while arg_count < len(sys.argv): + arg = sys.argv[arg_count] + if arg[:2] != '--': + break + arg_count += '=' in arg and 1 or 2 + + svn = pysvn.Client() + def getRevision(path): + return svn.info(path).commit_revision.number + + test_bot = os.path.realpath(__file__).split(os.getcwd())[1][1:] + test_bot_revision = getRevision(test_bot) + revision = 0 + + clean() + delay = None + while True: + delay = delay and time.sleep(delay) or 1800 + old_revision = revision + try: + svn.update('.') + except pysvn.ClientError, e: + continue + revision = getRevision('.') + if revision == old_revision: + continue + if test_bot_revision != getRevision(test_bot): + os.execvp(sys.argv[0], sys.argv) + delay = None + for test_home in sys.argv[arg_count:]: + bin = os.path.join(test_home, 'bin') + if not subprocess.call((os.path.join(bin, 'buildout'), '-v'), + cwd=test_home): + subprocess.call([os.path.join(bin, 'neotestrunner'), '-fuz'] + + sys.argv[1:arg_count]) + clean() + +if __name__ == '__main__': + sys.exit(main()) -- 2.30.9