Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
2 changes: 1 addition & 1 deletion README.md
Original file line number Diff line number Diff line change
Expand Up @@ -177,7 +177,7 @@ following rules are enabled by default:
* `aws_cli` – fixes misspelled commands like `aws dynamdb scan`;
* `cargo` – runs `cargo build` instead of `cargo`;
* `cargo_no_command` – fixes wrongs commands like `cargo buid`;
* `cat_dir` – replaces `cat` with `ls` when you try to `cat` a directory
* `cat_dir` – replaces `cat` with `ls` when you try to `cat` a directory;
* `cd_correction` – spellchecks and correct failed cd commands;
* `cd_mkdir` – creates directories before cd'ing into them;
* `cd_parent` – changes `cd..` to `cd ..`;
Expand Down
14 changes: 12 additions & 2 deletions tests/rules/test_cat_dir.py
Original file line number Diff line number Diff line change
Expand Up @@ -3,20 +3,29 @@
from thefuck.types import Command


@pytest.fixture
def isdir(mocker):
return mocker.patch('thefuck.rules.cat_dir'
'.os.path.isdir')


@pytest.mark.parametrize('command', [
Command('cat foo', 'cat: foo: Is a directory\n'),
Command('cat /foo/bar/', 'cat: /foo/bar/: Is a directory\n'),
Command('cat cat/', 'cat: cat/: Is a directory\n'),
])
def test_match(command):
def test_match(command, isdir):
isdir.return_value = True
assert match(command)


@pytest.mark.parametrize('command', [
Command('cat foo', 'foo bar baz'),
Command('cat foo bar', 'foo bar baz'),
Command('notcat foo bar', 'some output'),
])
def test_not_match(command):
def test_not_match(command, isdir):
isdir.return_value = False
assert not match(command)


Expand All @@ -26,4 +35,5 @@ def test_not_match(command):
(Command('cat cat', 'cat: cat: Is a directory\n'), 'ls cat'),
])
def test_get_new_command(command, new_command):
isdir.return_value = True
assert get_new_command(command) == new_command
9 changes: 7 additions & 2 deletions thefuck/rules/cat_dir.py
Original file line number Diff line number Diff line change
@@ -1,8 +1,13 @@
import os

from thefuck.utils import for_app


@for_app('cat')
def match(command):
return (
command.script.startswith('cat') and
command.output.startswith('cat: ') and
command.output.rstrip().endswith(': Is a directory')
os.path.isdir(command.script_parts[1])
)


Expand Down