Hi Everyone,

I have just noticed that Chris has indeed provided an updated patch;
Which is in need of a review / comments  etc.
I would normally place a link here - but I can;t find a convenient way to find 
a message URL - so I will ping the new thread separately.

Please allow me to "steal" this one - while I am replying to ask if there is 
any movement on getting message URLs appended to the bottom of mailing list 
submissions?

Gavin.


On 20/01/2010, at 11:03 PM, Gavin Beau Baumanis wrote:

> Hi Chris,
> 
> Just thought I would chase you up with this.
> Were you going to make the changes suggested by Julian  - or were you happy 
> for him to "tidy it up" and commit it?
> 
> 
> Gavin "Beau" Baumanis
> 
> 
> On 04/01/2010, at 9:15 PM, Julian Foad wrote:
> 
>> On Wed, 2009-12-09, Chris Foote wrote:
>>> I have incorporated both of Bert and Daniels suggestions into the
>>> patch (attached).
>> 
>> Thanks Chris. Functionally it looks good. Just some mainly cosmetic
>> comments below. (One's actually bug but evidently in a bit of code that
>> doesn't matter much in practice.)
>> 
>> I can make those changes myself and commit it if you like. Would that be
>> OK?
>> 
>> 
>>> This version of the patch adds the ability to specify one or more
>>> tests (and test numbers) to run on Windows.
>>> 
>>> The --test option takes the name of the test executable (with or
>>> without the "-test.exe"/"_tests.py" part). It can also take test
>>> number(s) to be run in those tests by appending #NUM to the test
>>> name. 
>>> 
>>> e.g. win-tests.py --release --test=basic_tests.py -t client
>>>    win-tests.py --release --test=basic_tests.py#4 -t client#2,4-6
>>> 
>>> 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 888785)
>>> +++ 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,31 @@
>>> if daemon:
>>>  daemon.start()
>>> 
>>> +# If selected tests specified, only run them
>> 
>> The block of code introduced by this comment is not deciding which tests
>> to run, it is finding the full path and filename to any tests that were
>> specified as just a base name. (It took me a little while to read
>> through it and discover that, which shows how helpful a comment could
>> be.) So maybe:
>> 
>> # 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 (len(t) < 9 or
>>> +                     (t[-9] != '-test.exe' and t[-9] != '_tests.py')):
>> 
>> That "t[-9] != ..." will always be true. I think you meant "t[-9:] !
>> = ...". But why not lose all the "9"s and just write
>> 
>> if not test and not t.endswith('-test.exe') and not
>> t.endswith('_tests.py'):
>> 
>> instead?
>> 
>>> +      test = [x for x in all_tests if x.split('/')[-1][:-9] == t]
>> 
>> I can't think of a really simple way to lose the "-9" here, so comment
>> it:
>> 
>> # The lengths of '-test.exe' and of '_tests.py' are both 9.
>> 
>>> +
>>> +    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 +643,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 888785)
>>> +++ build/run_tests.py  (working copy)
>>> @@ -216,12 +216,22 @@
>>>    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)))
>>> +      if test_nums:
>>> +        p = [x for x in ',-:' if x in test_nums] and 's' or ''
>>> +        sys.stdout.write('Running test%s %s in %s' % (p, test_nums, 
>>> test_info))
>>> +        sys.stdout.write('.'*(44 - len(p) - len(test_info) - 
>>> len(test_nums)))
>>> +        test_nums = test_nums.split(',')
>>> +      else:
>>> +        sys.stdout.write('Running all tests in %s' % (test_info, ))
>>> +        sys.stdout.write('.'*(40 - len(test_info)))
>> 
>> I don't think we need all this effort to try to print a neat one-line
>> summary that fits in a fixed-width column. It will still overflow,
>> depending on what list of test numbers I specify. Let's just change the
>> original "Running all tests in ..." to "Running tests in ..." and leave
>> it at that.
>> 
>>>    log.write('START: %s\n' % progbase)
>>>    log.flush()
>>> @@ -268,6 +278,9 @@
>>>    if self.fsfs_packing is not None:
>>>      cmdline.append('--fsfs-packing')
>>> 
>>> +    if test_nums:
>>> +      cmdline.extend(test_nums)
>>> +
>>>    old_cwd = os.getcwd()
>>>    try:
>>>      os.chdir(progdir)
>> 
>> - Julian
>> 
>> 
> 

Reply via email to