Testing Directory Command Correction Implementation in TheFuck
This test suite validates the directory handling functionality in the ‘cat_dir’ rule of TheFuck command-line tool. It ensures proper behavior when users accidentally try to use ‘cat’ command on directories instead of files.
Test Coverage Overview
Implementation Analysis
Technical Details
Best Practices Demonstrated
nvbn/thefuck
tests/rules/test_cat_dir.py
import pytest
from thefuck.rules.cat_dir import match, get_new_command
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
'),
Command('cat /foo/bar/', 'cat: /foo/bar/: Is a directory
'),
Command('cat cat/', 'cat: cat/: Is a directory
'),
])
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, isdir):
isdir.return_value = False
assert not match(command)
@pytest.mark.parametrize('command, new_command', [
(Command('cat foo', 'cat: foo: Is a directory
'), 'ls foo'),
(Command('cat /foo/bar/', 'cat: /foo/bar/: Is a directory
'), 'ls /foo/bar/'),
(Command('cat cat', 'cat: cat: Is a directory
'), 'ls cat'),
])
def test_get_new_command(command, new_command):
isdir.return_value = True
assert get_new_command(command) == new_command