[Grok-dev] Re: failing (security?) tests on grok trunk
Philipp von Weitershausen
philipp at weitershausen.de
Fri Aug 24 07:43:05 EDT 2007
Jan-Wijbrand Kolman wrote:
> Jan-Wijbrand Kolman wrote:
>> Martijn Faassen wrote:
>>> Hi there,
>>>
>>> Latest grok trunk, buildout -n gives me two test failures:
>> snip
>>
>> Weird - I'll look at it rightaway.
>
> It's still weird; I was pretty sure all tests passed just before I did
> the Role/Permission checkin. And I *cannot* reproduce the failures right
> now, with a clean checkout and doing a ./bin/buildout -n before issueing
> ./bin/test...
>
> What happens if you explicitly make the permission title a unicode
> string (as might actually be the proper way anyway)?
At first I coudln't reproduce this either. What struck me as peculiar,
however, was the fact that the grok.ftests.security.grant test fails,
but this 'Painting Owner' role (it's a *role*, not a permission) on
which it's failing is defined somewhere else.
What we have here, gentlemen, is an ordering issue. I renamed roles.py
to aaaaroles.py (and adjusted the grok.grok() line in the doctest
accordingly). Sure enough I saw Martijn's failure.
There are two issues at hand here:
First, the obvious issue is that the DefineRoleGrokker doesn't adhere to
the IRole interface which mandates that 'title' must be unicode. In
grok, we've adopted the policy that ASCII strings are absolutely okay
when unicode is normally required (byte strings aren't accepted,
obviously). If you look at the DefinePermissionGrokker, it handles this
very case by unicode()ing the title. I've added the same thing for the
DefineRoleGrokker now.
The second issue is that we have poor ftest isolation. This is actually
an oxymoron because ftests typically are *not* isolated, but in turn
they don't do their own setup either. They rely on the layer's setup and
run within that. Our ftests do do their own setup (by calling
grok.grok()) all the time. This way, we can get to the ordering problems
we've just seen.
I think that the layer should grok.grok() the whole grok.ftests package,
therefore setting up *all* the test fixtures at once. That way we'll
*always* notice when we have conflicting test fixtures, not just when
Martijn runs the tests ;).
I've started a branch called 'philikon-ftest-layer-does-fixture-setup'
to work on this.
--
http://worldcookery.com -- Professional Zope documentation and training
More information about the Grok-dev
mailing list