diff options
author | Armin Ronacher <armin.ronacher@active-4.com> | 2014-05-07 21:18:03 +0200 |
---|---|---|
committer | Armin Ronacher <armin.ronacher@active-4.com> | 2014-05-07 21:18:03 +0200 |
commit | 5381d65d5c1b6c016a2227e185c34cbd4d6ecfa6 (patch) | |
tree | e3e73299f7dda790768d0b7c53c717477281068d /tests/test_basic.py | |
parent | 0b08568ad2874a6d625f5ec3af51286052368833 (diff) | |
download | click-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.py | 45 |
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', + ] |