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",
]
-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():
]
-@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') -%}