Ping. This updated patch submission has received no comments. Gavin "Beau" Baumanis
On 11/01/2010, at 10:59 PM, Chris Foote wrote: > Hi Julian, > > I've made the changes as you suggested. > > Regards, > Chris > > [[[ > Make it easy to (re)run specific tests on windows by adding a --test/-t > option. The tests can also specify specific test number(s) to run. > > * win-tests.py > (_usage_exit): Add the --test/-t option to the help. > (tests_to_run): New. List of tests to be run by the TestHarness. > > * build/run_tests.py > (_run_test): Break the progname at a '#' and use the rhs as a list of > test numbers to run. > ]]] > > > Index: win-tests.py > =================================================================== > --- win-tests.py (revision 897802) > +++ win-tests.py (working copy) > @@ -61,6 +61,9 @@ > print(" -v, --verbose : talk more") > print(" -f, --fs-type=type : filesystem type to use (fsfs is default)") > print(" -c, --cleanup : cleanup after running a test") > + print(" -t, --test=TEST : Run the TEST test (all is default); use") > + print(" TEST#n to run a particular test number,") > + print(" multiples also accepted e.g. '2,4-7'") > > print(" --svnserve-args=list : comma-separated list of arguments for") > print(" svnserve") > @@ -107,9 +110,9 @@ > dll_basename = section.name + "-" + str(gen_obj.version) + ".dll" > svn_dlls.append(os.path.join("subversion", section.name, dll_basename)) > > -opts, args = my_getopt(sys.argv[1:], 'hrdvcpu:f:', > - ['release', 'debug', 'verbose', 'cleanup', 'url=', > - 'svnserve-args=', 'fs-type=', 'asp.net-hack', > +opts, args = my_getopt(sys.argv[1:], 'hrdvct:pu:f:', > + ['release', 'debug', 'verbose', 'cleanup', 'test=', > + 'url=', 'svnserve-args=', 'fs-type=', 'asp.net-hack', > 'httpd-dir=', 'httpd-port=', 'httpd-daemon', > 'httpd-server', 'http-library=', 'help', > 'fsfs-packing', 'fsfs-sharding=', > @@ -137,6 +140,7 @@ > fsfs_packing = None > server_minor_version = None > config_file = None > +tests_to_run = [] > > for opt, val in opts: > if opt in ('-h', '--help'): > @@ -149,6 +153,8 @@ > verbose = 1 > elif opt in ('-c', '--cleanup'): > cleanup = 1 > + elif opt in ('-t', '--test'): > + tests_to_run.append(val) > elif opt in ['-r', '--release']: > objdir = 'Release' > elif opt in ['-d', '--debug']: > @@ -599,6 +605,32 @@ > if daemon: > daemon.start() > > +# Find the full path and filename of any test that is specified just by > +# its base name. > +if len(tests_to_run) != 0: > + tests = [] > + for t in tests_to_run: > + tns = None > + if '#' in t: > + t, tns = t.split('#') > + > + test = [x for x in all_tests if x.split('/')[-1] == t] > + if not test and not (t.endswith('-test.exe') or t.endswith('_tests.py')): > + # The lengths of '-test.exe' and of '_tests.py' are both 9. > + test = [x for x in all_tests if x.split('/')[-1][:-9] == t] > + > + if not test: > + print("Skipping test '%s', test not found." % t) > + elif tns: > + tests.append('%s#%s' % (test[0], tns)) > + else: > + tests.extend(test) > + > + tests_to_run = tests > +else: > + tests_to_run = all_tests > + > + > print('Testing %s configuration on %s' % (objdir, repo_loc)) > sys.path.insert(0, os.path.join(abs_srcdir, 'build')) > import run_tests > @@ -612,7 +644,7 @@ > old_cwd = os.getcwd() > try: > os.chdir(abs_builddir) > - failed = th.run(all_tests) > + failed = th.run(tests_to_run) > except: > os.chdir(old_cwd) > raise > Index: build/run_tests.py > =================================================================== > --- build/run_tests.py (revision 897802) > +++ build/run_tests.py (working copy) > @@ -216,12 +216,16 @@ > else: > log = sys.stdout > > + test_nums = None > + if '#' in prog: > + prog, test_nums = prog.split('#') > + > progdir, progbase = os.path.split(prog) > if self.log: > # Using write here because we don't want even a trailing space > test_info = '%s [%d/%d]' % (progbase, test_nr + 1, total_tests) > - sys.stdout.write('Running all tests in %s' % (test_info, )) > - sys.stdout.write('.'*(35 - len(test_info))) > + sys.stdout.write('Running tests in %s' % (test_info, )) > + sys.stdout.write('.'*(40 - len(test_info))) > > log.write('START: %s\n' % progbase) > log.flush() > @@ -268,6 +272,10 @@ > if self.fsfs_packing is not None: > cmdline.append('--fsfs-packing') > > + if test_nums: > + test_nums = test_nums.split(',') > + cmdline.extend(test_nums) > + > old_cwd = os.getcwd() > try: > os.chdir(progdir)