diff --git a/tests/rules/test_remove_shell_prompt_literal.py b/tests/rules/test_remove_shell_prompt_literal.py index 37e0ef2..7eba66b 100644 --- a/tests/rules/test_remove_shell_prompt_literal.py +++ b/tests/rules/test_remove_shell_prompt_literal.py @@ -8,7 +8,15 @@ def output(): return "$: command not found" -@pytest.mark.parametrize("script", ["$ cd newdir", " $ cd newdir"]) +@pytest.mark.parametrize( + "script", + [ + "$ cd newdir", + " $ cd newdir", + "$ $ cd newdir" + " $ $ cd newdir", + ], +) def test_match(script, output): assert match(Command(script, output)) @@ -31,7 +39,9 @@ def test_not_match(command): "script, new_command", [ ("$ cd newdir", "cd newdir"), + ("$ $ cd newdir", "cd newdir"), ("$ python3 -m virtualenv env", "python3 -m virtualenv env"), + (" $ $ $ python3 -m virtualenv env", "python3 -m virtualenv env"), ], ) def test_get_new_command(script, new_command, output): diff --git a/thefuck/rules/remove_shell_prompt_literal.py b/thefuck/rules/remove_shell_prompt_literal.py index a284294..d0d064e 100644 --- a/thefuck/rules/remove_shell_prompt_literal.py +++ b/thefuck/rules/remove_shell_prompt_literal.py @@ -1,4 +1,5 @@ -"""Fixes error for commands containing the shell prompt symbol '$'. +"""Fixes error for commands containing one or more occurrences of the shell +prompt symbol '$'. This usually happens when commands are copied from documentations including them in their code blocks. @@ -19,4 +20,4 @@ def match(command): def get_new_command(command): - return command.script.replace("$", "", 1).strip() + return command.script.lstrip("$ ")