From: Armin Ronacher Date: Wed, 28 Dec 2016 22:44:36 +0000 (+0100) Subject: Restructured tests for async filters X-Git-Tag: 2.9~53 X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=76415429803fa389a13852b4c845047da53b0405;p=thirdparty%2Fjinja.git Restructured tests for async filters --- diff --git a/tests/test_asyncfilters.py b/tests/test_asyncfilters.py index 5133f9cb..1b5aad85 100644 --- a/tests/test_asyncfilters.py +++ b/tests/test_asyncfilters.py @@ -7,30 +7,39 @@ async def make_aiter(iter): yield item +def mark_dualiter(parameter, factory): + def decorator(f): + return pytest.mark.parametrize(parameter, [ + lambda: factory(), + lambda: make_aiter(factory()), + ])(f) + return decorator + + @pytest.fixture def env_async(): return Environment(enable_async=True) -@pytest.mark.parametrize('foo', [ - lambda: range(10), - lambda: make_aiter(range(10)), -]) +@mark_dualiter('foo', lambda: range(10)) def test_first(env_async, foo): tmpl = env_async.from_string('{{ foo()|first }}') out = tmpl.render(foo=foo) assert out == '0' -def test_groupby(env_async): +@mark_dualiter('items', lambda: [ + {'foo': 1, 'bar': 2}, + {'foo': 2, 'bar': 3}, + {'foo': 1, 'bar': 1}, + {'foo': 3, 'bar': 4} +]) +def test_groupby(env_async, items): tmpl = env_async.from_string(''' - {%- for grouper, list in [{'foo': 1, 'bar': 2}, - {'foo': 2, 'bar': 3}, - {'foo': 1, 'bar': 1}, - {'foo': 3, 'bar': 4}]|groupby('foo') -%} + {%- for grouper, list in items()|groupby('foo') -%} {{ grouper }}{% for x in list %}: {{ x.foo }}, {{ x.bar }}{% endfor %}| {%- endfor %}''') - assert tmpl.render().split('|') == [ + assert tmpl.render(items=items).split('|') == [ "1: 1, 2: 1, 1", "2: 2, 3", "3: 3, 4", @@ -38,12 +47,13 @@ def test_groupby(env_async): ] -def test_groupby_tuple_index(env_async): +@mark_dualiter('items', lambda: [('a', 1), ('a', 2), ('b', 1)]) +def test_groupby_tuple_index(env_async, items): tmpl = env_async.from_string(''' - {%- for grouper, list in [('a', 1), ('a', 2), ('b', 1)]|groupby(0) -%} + {%- for grouper, list in items()|groupby(0) -%} {{ grouper }}{% for x in list %}:{{ x.1 }}{% endfor %}| {%- endfor %}''') - assert tmpl.render() == 'a:1:2|b:1|' + assert tmpl.render(items=items) == 'a:1:2|b:1|' def make_articles(): @@ -66,10 +76,7 @@ def make_articles(): ] -@pytest.mark.parametrize('articles', [ - make_articles, - lambda: make_aiter(make_articles()), -]) +@mark_dualiter('articles', make_articles) def test_groupby_multidot(env_async, articles): tmpl = env_async.from_string(''' {%- for year, list in articles()|groupby('date.year') -%}