Hello Kallithea from pytesters

Marc Abramowitz msabramo at gmail.com
Tue Apr 7 16:48:55 EDT 2015


The nose plugin that I was referring to:
http://pylons-webframework.readthedocs.org/en/latest/testing.html#unit-testing-with-webtest

On Tue, Apr 7, 2015 at 1:47 PM, Marc Abramowitz <msabramo at gmail.com> wrote:

> I think the tricky thing is that Kallithea is using the Pylons nosetest
> plugin to initialize the Pylons app before the tests run. We will need to
> make it so that the Pylons app gets initialized before pytest runs tests --
> probably by using conftest.py --
> https://pytest.org/latest/plugins.html#conftest-py-local-per-directory-plugins
>
> On Tue, Apr 7, 2015 at 1:03 PM, Marc Abramowitz <msabramo at gmail.com>
> wrote:
>
>> I'm thinking we can probably convert the nose generative test functions
>> to pytest parameterized tests --
>> http://pytest.org/latest/parametrize.html#parametrized-test-functions
>>
>> I'm experimenting with it now...
>>
>> On Tue, Apr 7, 2015 at 12:31 PM, Thomas De Schampheleire <
>> patrickdepinguin at gmail.com> wrote:
>>
>>> Hi,
>>>
>>> On Tue, Apr 7, 2015 at 9:08 PM, Thomas De Schampheleire
>>> <patrickdepinguin at gmail.com> wrote:
>>> > Hi Marc,
>>> >
>>> > On Tue, Apr 7, 2015 at 5:46 PM, Marc Abramowitz <msabramo at gmail.com>
>>> wrote:
>>> >> Just wanted to say a quick hello. I volunteered for adopt pytest
>>> month. I have used pytest (and Tox as well, which I suspect could be useful
>>> here) quite a bit for both personal projects and my professional work -
>>> i.e.: my current work at SurveyMonkey.
>>> >>
>>> >> I'll try to download and try out Kallithea soon (I've never used it),
>>> try out the test suite, etc. and see where we might be able to get some
>>> wins.
>>> >
>>> > Welcome indeed! I'm excited to get this pytest-adoption started.
>>> > My hope is that this is not just one month, which is probably too
>>> > short to fix the entire test suite.
>>> >
>>> > To get started, use following instructions to set up an environment:
>>> > http://kallithea.readthedocs.org/en/latest/contributing.html
>>> >
>>> > You can run the existing testsuite from this virtualenv using
>>> 'nosetests'.
>>> >
>>> > First step would indeed be to use pytest as test runner instead of
>>> > nosetests. On IRC (#kallithea on freenode) Ronny already indicated a
>>> > first blocker related to yield tests.
>>> >
>>> > Quick log:
>>> > <ronny> patrickdp: atm there is one big pytest side blocker, detailed
>>> > nose yield tests are not compatible with pytest yield tests
>>> > <ronny> so right now the testsuite runs in a completely broken
>>> > setupstate wrt yield tests
>>> > <ronny> since the testsuite also uses very detailed checks with
>>> > setup/teardown, a moinmoin style workaround (different
>>> > collection/execution for generators) is not possible
>>> > <ronny> (where not means not without lots of work)
>>> > <ronny> im not yet sure of a good strategy to work that out
>>> > <patrickdp> ronny: what exactly are 'yield tests' ?
>>> > <ronny> patrickdp: yield tests are tests which use a toplevel yield to
>>> > yield distinct checks to the test executor
>>> >
>>> > Any ideas to proceed are most definitely welcome here...
>>> >
>>>
>>> It looks like the only test files that have yield tests are:
>>> models/test_user_permissions_on_repo_groups.py
>>> models/test_user_group_permissions_on_repo_groups.py
>>>
>>> In the tests in these files, the pattern is typically:
>>>     for name, perm in repo_items:
>>>         yield check_tree_perms, name, perm, group, 'repository.read'
>>>
>>>     for name, perm in items:
>>>         yield check_tree_perms, name, perm, group, 'group.write'
>>>
>>>
>>> where:
>>>     repo_items = [x for x in _get_repo_perms(group, recursive)]
>>>     items = [x for x in _get_group_perms(group, recursive)]
>>>
>>> and:
>>> def check_tree_perms(obj_name, repo_perm, prefix, expected_perm):
>>>     assert repo_perm == expected_perm, ('obj:`%s` got perm:`%s`
>>> should:`%s`'
>>>                                     % (obj_name, repo_perm,
>>> expected_perm))
>>>
>>>
>>> If yield tests are a problem, what about just transforming such yield
>>> tests into simple tests? Each test function that is currently yielding
>>> new test methods would become one simple test, iterating over the
>>> items and repo_items and asserting for each combination, thus
>>> replacing the yield statement with the assert itself.
>>>
>>> This may not be as nice as a test could fail due to many different
>>> scenarios, but since there are only test files that have this problem
>>> and since such yield tests are a blocking issue as said by Ronny, such
>>> a solution could deblock pytest conversion.
>>>
>>> Thoughts?
>>>
>>> Thanks,
>>> Thomas
>>>
>>
>>
>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.sfconservancy.org/pipermail/kallithea-general/attachments/20150407/323192f1/attachment.html>


More information about the kallithea-general mailing list