diff --git a/tests/test_tutorial/test_options_autocompletion/test_tutorial003.py b/tests/test_tutorial/test_options_autocompletion/test_tutorial003.py index ebd1e066ba..60304e9e55 100644 --- a/tests/test_tutorial/test_options_autocompletion/test_tutorial003.py +++ b/tests/test_tutorial/test_options_autocompletion/test_tutorial003.py @@ -9,7 +9,7 @@ runner = CliRunner() -def test_completion(): +def test_completion_zsh(): result = subprocess.run( [sys.executable, "-m", "coverage", "run", mod.__file__, " "], capture_output=True, @@ -25,6 +25,23 @@ def test_completion(): assert "Sebastian" in result.stdout +def test_completion_powershell(): + result = subprocess.run( + [sys.executable, "-m", "coverage", "run", mod.__file__, " "], + capture_output=True, + encoding="utf-8", + env={ + **os.environ, + "_TUTORIAL003.PY_COMPLETE": "complete_powershell", + "_TYPER_COMPLETE_ARGS": "tutorial003.py --name Seb", + "_TYPER_COMPLETE_WORD_TO_COMPLETE": "Seb", + }, + ) + assert "Camila" not in result.stdout + assert "Carlos" not in result.stdout + assert "Sebastian" in result.stdout + + def test_1(): result = runner.invoke(mod.app, ["--name", "Camila"]) assert result.exit_code == 0 diff --git a/tests/test_tutorial/test_options_autocompletion/test_tutorial003_an.py b/tests/test_tutorial/test_options_autocompletion/test_tutorial003_an.py index 8f12583e80..7688f108f5 100644 --- a/tests/test_tutorial/test_options_autocompletion/test_tutorial003_an.py +++ b/tests/test_tutorial/test_options_autocompletion/test_tutorial003_an.py @@ -9,7 +9,7 @@ runner = CliRunner() -def test_completion(): +def test_completion_zsh(): result = subprocess.run( [sys.executable, "-m", "coverage", "run", mod.__file__, " "], capture_output=True, @@ -25,6 +25,23 @@ def test_completion(): assert "Sebastian" in result.stdout +def test_completion_powershell(): + result = subprocess.run( + [sys.executable, "-m", "coverage", "run", mod.__file__, " "], + capture_output=True, + encoding="utf-8", + env={ + **os.environ, + "_TUTORIAL003_AN.PY_COMPLETE": "complete_powershell", + "_TYPER_COMPLETE_ARGS": "tutorial003.py --name Seb", + "_TYPER_COMPLETE_WORD_TO_COMPLETE": "Seb", + }, + ) + assert "Camila" not in result.stdout + assert "Carlos" not in result.stdout + assert "Sebastian" in result.stdout + + def test_1(): result = runner.invoke(mod.app, ["--name", "Camila"]) assert result.exit_code == 0 diff --git a/typer/_completion_classes.py b/typer/_completion_classes.py index 6bb25c13bd..71ba031860 100644 --- a/typer/_completion_classes.py +++ b/typer/_completion_classes.py @@ -175,7 +175,7 @@ def get_completion_args(self) -> Tuple[List[str], str]: completion_args = os.getenv("_TYPER_COMPLETE_ARGS", "") incomplete = os.getenv("_TYPER_COMPLETE_WORD_TO_COMPLETE", "") cwords = click.parser.split_arg_string(completion_args) - args = cwords[1:] + args = cwords[1:-1] if incomplete else cwords[1:] return args, incomplete def format_completion(self, item: click.shell_completion.CompletionItem) -> str: