At 11:19 AM 2/26/2010 -0500, Olemis Lang wrote:
On Fri, Feb 26, 2010 at 10:52 AM, P.J. Eby <p...@telecommunity.com> wrote:
> At 10:16 AM 2/26/2010 -0500, Olemis Lang wrote:
>>
>> Well not as happily as I thought in first place. The fact is that
>> `setuptools` test command creates the runner by calling the class
>> specified in `test_runner` arg but supplies no parameters. In this
>> case I'd like to specify `xmlrunner:XMLTestRunner` (is that the
>> correct syntax ?) to obtain a JUnit XML report, but I need to specify
>> the path where those reports will be outputted, so that the CI tool
>> (Hudson in this case) can publish'em and generate the nice graphs we
>> all love . Considering the current implementation, I still need to
>> override `run_tests` method as a whole, and repeat 99% of what is
>> implemented in there, in order to get the exact runner I need
>>
>> :(
>>
>> My suggestion (hint, $0.02 ... whatever ;o) is
>>
>>   1. use a factory method (e.g `create_runner` ) returning an
>>     instance of  test runner. This method could be overridden by
>>     subclasses if further options or whatever needs to be considered
>>     to instanciate the runner
>
> I'm confused.  Why don't you just set test_runner to point to your factory
> function, then?  That's what nose does.  (Well, in its case it's the
> test_loader, but same basic idea.)
>

Well in theory it is possible (and did not think about that in the
first place, thnx ;o) but :

  1. How could I know about extra command line
      params (without parsing them once again of course ;o) ?
  2. In the case of the build script, I'm writing a setup script rather than
      a framework (e.g. nose).
     2.1 The XML runner is not always used, but only when running at
           the CI buildenv (I supposed I could just use
           `-r xmlrunner:XMLTestRunner` but I need an extra arg)
           How could I specify output path in cmdline ?

An environment variable would solve these problems, at least if you have a decent shell. ;-)

     2.2 So I suppose I should write a function to do that but
            - Under tests pkg? ... (Unit | functional | ...) tests
don't need it
            - In setup.py itself ? ... What should I supply in to -r arg ?

If you are running setup.py from the command line (as opposed to programmatically via easy_install), then it's __main__:whatever. (It won't work if setup.py isn't the "true" __main__, though, e.g., if the script is being execfile'd.)

              How could I specify output path in cmdline ?
  3. In the case of `dutest` well ... that could help (depending on
      the answer to 1 ;o)
     3.1 How could I reuse features already stored in `Distribution`
            (especially values set after finalize_xxx ) ?

You can't, unless you...


  4. (Hypothetical so far, so I'm prepared to receive tomatoes ;o)
      What if I want to reuse (subclass) `test` command ?

Which is perfectly allowable. You'll just have to duplicate that one method. Of course, if you write a suitable patch to refactor it to call another method, I'll happily put it in the trunk, since you're working from trunk to get the test_runner feature anyway.

("Suitable" = tested by you, doesn't break or remove existing functionality, & other "I'll know it if I see it" criteria ;-) )

_______________________________________________
Distutils-SIG maillist  -  Distutils-SIG@python.org
http://mail.python.org/mailman/listinfo/distutils-sig

Reply via email to