Sorry for late reply.

I'd say defer this to 3.4, or whatever will come after 3.3. For what little
is left to do on 3.3 as it is, we are already bogging down.

Even just trying a quick run, came up with a few issues.

1. Can't decode Apache version string.

Traceback (most recent call last):
  File "test.py", line 857, in ?
    main()
  File "test.py", line 812, in main
    testsetup.apache_version = HttpdControl(options).version
  File "test.py", line 357, in _get_version
    self._version = [ int(p) for p in version_str.split('.',3) ]
ValueError: invalid literal for int(): 33 (Darwin)

This was when it picked up wrong httpd, ie., 1.33 standard on
Mac OS X.

Server version: Apache/1.3.33 (Darwin)

The format isn't what you were expecting. Ignoring that it was the
wrong version, might have to see if there is a more reliable way of
getting version in case vendors play with the string and how it is
formatted.

2. When told which Apache to use using --with-apxs, stopped
with:

Traceback (most recent call last):
  File "test.py", line 857, in ?
    main()
  File "test.py", line 831, in main
    list_tests(args, verbose=options.verbose)
  File "test.py", line 84, in list_tests
    msg = '  ' + ' (DISABLED)'.rjust(64 -len(name), '.')
TypeError: rjust() takes exactly 1 argument (2 given)

Don't know whether second argument to rjust is a Python 2.4 thing,
but not in Python 2.3.5.

Changed it to:

msg = '  ' + ' (DISABLED)'.rjust(64 -len(name)).replace(' ', '.')

although this is just cosmetic stuff anyway.

All but one test actually worked. The one that failed was because of
change I backed out related to:

  http://issues.apache.org/jira/browse/MODPYTHON-171

For me this raises concerns as far as trying to include two separate
test frameworks in same package. Does this mean that test cases
have to be updated in two separate places during any transition
phase? Rather wait until we have a quiet patch when no serious
work being done or issues to address and then just concentrate purely
on this and cutover in one step so not duplicating stuff.

Graham

On 03/10/2006, at 7:01 AM, Jim Gallacher wrote:

When we started 3.3 development we discussed some of the deficiencies of the current unit test framework, and the general idea of a new design.

After a couple of ill-fated attempts at a rewrite I think I have something that fits the bill. At this point it's actually usable, and the code is not so horrible that I need to hang my head in shame (I hope). It fact I feel that in it's current form it's almost ready for inclusion in 3.3.0.

Grab it at:
http://people.apache.org/~jgallacher/mod_python/dist/ mod_python-3.3.0-test-ng.tgz

The test framework works as a standalone program. There is no ./ configure step. There is no need to compile mod_python to use it. Untar it, take a look at the README, and then for a quick taste, try some of the following examples:

$ python test.py -h
$ python test.py -l
$ python test.py -l core.session
$ python test.py core
$ python test.py --clean
$ python test.py core.publisher
$ python test.py --clean
$ python test.py -l core.request | grep -i sendfile > mytests
$ python test.py -i mytests

The last example creates new test class and handler templates for a new test.
$ python test.py -a foo.bar.MyNewTest

Edit mptest/foo/bar.py and htdocs/foo/bar.py to perform whatever test you had in mind and then run the test.

$ python test.py foo.bar.MyNewTest

The general idea is that the standard mod_python unittests go into the "core" package. Non-standard tests (such as my leaktests) or user defined application tests get separated into their own packages, independent of the standard tests. The "foo" package is one such example.

At this point the framework has only been tested in an environment consisting of Ubuntu linux, apache 2.0.55, python 2.4.3 and mod_python svn trunk, so it's entirely possible that it may blow up with other platform configurations.

Grab a copy of it and let me know what you think. There are several paths we can take with this new test framework.

1. Immediately replace the current test/ with test-ng/ for the 3.3 release.
2. Include both test/ and test-ng/ in the 3.3 release.
3. Defer it to 3.4.
4. Send it to /dev/null, never to be spoken of again.

Jim

Reply via email to