summaryrefslogtreecommitdiff
path: root/tests/test_basic.py
diff options
context:
space:
mode:
authorArmin Ronacher <armin.ronacher@active-4.com>2014-05-07 21:18:03 +0200
committerArmin Ronacher <armin.ronacher@active-4.com>2014-05-07 21:18:03 +0200
commit5381d65d5c1b6c016a2227e185c34cbd4d6ecfa6 (patch)
treee3e73299f7dda790768d0b7c53c717477281068d /tests/test_basic.py
parent0b08568ad2874a6d625f5ec3af51286052368833 (diff)
downloadclick-5381d65d5c1b6c016a2227e185c34cbd4d6ecfa6.tar.gz
Added strong support for a defined parameter callback evaluation order.
Diffstat (limited to 'tests/test_basic.py')
-rw-r--r--tests/test_basic.py45
1 files changed, 45 insertions, 0 deletions
diff --git a/tests/test_basic.py b/tests/test_basic.py
index 8062cdc..290b95b 100644
--- a/tests/test_basic.py
+++ b/tests/test_basic.py
@@ -292,3 +292,48 @@ def test_required_option(runner):
result = runner.invoke(cli, [])
assert result.exit_code == 2
assert 'Missing option "--foo"' in result.output
+
+
+def test_evaluation_order(runner):
+ called = []
+
+ def memo(ctx, value):
+ called.append(value)
+ return value
+
+ @click.command()
+ @click.option('--missing', default='missing',
+ is_eager=False, callback=memo)
+ @click.option('--eager-flag1', flag_value='eager1',
+ is_eager=True, callback=memo)
+ @click.option('--eager-flag2', flag_value='eager2',
+ is_eager=True, callback=memo)
+ @click.option('--eager-flag3', flag_value='eager3',
+ is_eager=True, callback=memo)
+ @click.option('--normal-flag1', flag_value='normal1',
+ is_eager=False, callback=memo)
+ @click.option('--normal-flag2', flag_value='normal2',
+ is_eager=False, callback=memo)
+ @click.option('--normal-flag3', flag_value='normal3',
+ is_eager=False, callback=memo)
+ def cli(**x):
+ pass
+
+ result = runner.invoke(cli, ['--eager-flag2',
+ '--eager-flag1',
+ '--normal-flag2',
+ '--eager-flag3',
+ '--normal-flag3',
+ '--normal-flag3',
+ '--normal-flag1',
+ '--normal-flag1'])
+ assert not result.exception
+ assert called == [
+ 'eager2',
+ 'eager1',
+ 'eager3',
+ 'normal2',
+ 'normal3',
+ 'normal1',
+ 'missing',
+ ]