[Zope-dev] zope.formlib's action decorator return Action() object, not the decorated function. Why?

Jan-Wijbrand Kolman janwijbrand at gmail.com
Tue Sep 18 08:00:27 UTC 2012

On 9/16/12 07:28 , Marius Gedminas wrote:
> On Fri, Sep 14, 2012 at 01:44:30PM +0200, Jan-Wijbrand Kolman wrote:
>> The reason I came across this "issue" is trying to improve the test
>> coverage of the application I'm building somewhat closer to 100% and
>> found that the form actions implementation *appeared* not to be covered
>> at all - even if there clearly are tests for these.
> How are you measuring coverage?

The coverage reports as generated by the zope.testrunner ``--coverage``
option, then z3c.coverage to render the reports into html.

> How are you testing the handlers?

In this specific case, I noticed the handlers seemed not be called
(according to the coverage report) when using a test browser
"submitting" a form.

But I didn't try anything else just yet except for running that test
again with a patched zope.formlib - where the decorated would return the
function - and then the coverage was up :-)

> I'm asking because I haven't encountered this issue in my projects --
> form action handlers show up in my test coverage just fine.
>> I tried having the decorator "just" returning the function, and at least
>> all zope.formlib's tests themselves do pass.
>> Would anyone mind if I would change the behaviour of the decorator?
> I have unit tests that invoke view.handle_foo_button.handler() directly,
> because they assume zope.formlib's @action replaces the
> handle_foo_button method with an Action.  Your change would break my
> tests, but they would be trivial to fix, so my vote would be -0, with
> the request of a larger version bump to indicate backwards-incompatibility.

Ok, clear.

Thanks for the feedback!

regards, jw

More information about the Zope-Dev mailing list