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

Marius Gedminas marius at gedmin.as
Sun Sep 16 05:28:02 UTC 2012

On Fri, Sep 14, 2012 at 01:44:30PM +0200, Jan-Wijbrand Kolman wrote:
> After years and years of heavily using zope.formlib it suddenly struck
> me that the zope.formlib.form.action decorator returns an Action()
> object instead of the decorated function (this action object is also
> added to the form's actions sequence as a "side effect" of the decorator).
> I know wonder: Why?

(I've no clue.)

> I cannot find a use case for wanting the action object added to the
> class members under the name of the decorated function. But maybe there is?
> 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?

How are you testing the handlers?

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.

Marius Gedminas
http://pov.lt/ -- Zope 3/BlueBream consulting and development
-------------- next part --------------
A non-text attachment was scrubbed...
Name: signature.asc
Type: application/pgp-signature
Size: 190 bytes
Desc: Digital signature
URL: <http://mail.zope.org/pipermail/zope-dev/attachments/20120916/0a5e3d58/attachment.sig>

More information about the Zope-Dev mailing list