@@ -387,25 +387,34 @@ def test_choice_option_normalization(runner):
387387 @click .option (
388388 "--method" ,
389389 type = click .Choice (
390- ["SCREAMING_SNAKE_CASE" , "snake_case" , "PascalCase" , "kebab-case" ]
390+ ["SCREAMING_SNAKE_CASE" , "snake_case" , "PascalCase" , "kebab-case" ],
391+ case_sensitive = False ,
391392 ),
392393 )
393394 def cli (method ):
394395 click .echo (method )
395396
396- result = runner .invoke (cli , ["--method=foo" ])
397- assert not result .exception
398- assert result .output == "foo\n "
397+ result = runner .invoke (cli , ["--method=snake_case" ])
398+ assert not result .exception , result .output
399+ assert result .output == "snake_case\n "
400+
401+ # Even though it's case sensitive, the choice's original value is preserved
402+ result = runner .invoke (cli , ["--method=pascalcase" ])
403+ assert not result .exception , result .output
404+ assert result .output == "PascalCase\n "
399405
400406 result = runner .invoke (cli , ["--method=meh" ])
401407 assert result .exit_code == 2
402408 assert (
403409 "Invalid value for '--method': 'meh' is not one of "
404- "'screaming-snake-case ', 'snake-case ', 'pascalcase', 'kebab-case'."
410+ "'screaming_snake_case ', 'snake_case ', 'pascalcase', 'kebab-case'."
405411 ) in result .output
406412
407413 result = runner .invoke (cli , ["--help" ])
408- assert "--method [foo|bar|baz]" in result .output
414+ assert (
415+ "--method [screaming_snake_case|snake_case|pascalcase|kebab-case]"
416+ in result .output
417+ )
409418
410419
411420def test_choice_argument (runner ):
0 commit comments