From 934099fe9e71a12f7cb0a96ea955a3a5b04c1319 Mon Sep 17 00:00:00 2001 From: nvbn Date: Wed, 15 Jul 2015 07:12:07 +0300 Subject: [PATCH] #289: Add `is a directory` pattern to `cp_omitting_directory` rule --- tests/rules/test_cp_omitting_directory.py | 24 +++++++++++++++-------- thefuck/rules/cp_omitting_directory.py | 3 ++- 2 files changed, 18 insertions(+), 9 deletions(-) diff --git a/tests/rules/test_cp_omitting_directory.py b/tests/rules/test_cp_omitting_directory.py index 0f4a3bf8..cdd5d16d 100644 --- a/tests/rules/test_cp_omitting_directory.py +++ b/tests/rules/test_cp_omitting_directory.py @@ -1,14 +1,22 @@ -from mock import Mock +import pytest from thefuck.rules.cp_omitting_directory import match, get_new_command +from tests.utils import Command -def test_match(): - assert match(Mock(script='cp dir', stderr="cp: omitting directory 'dir'"), - None) - assert not match(Mock(script='some dir', - stderr="cp: omitting directory 'dir'"), None) - assert not match(Mock(script='cp dir', stderr=""), None) +@pytest.mark.parametrize('script, stderr', [ + ('cp dir', 'cp: dor: is a directory'), + ('cp dir', "cp: omitting directory 'dir'")]) +def test_match(script, stderr): + assert match(Command(script, stderr=stderr), None) + + +@pytest.mark.parametrize('script, stderr', [ + ('some dir', 'cp: dor: is a directory'), + ('some dir', "cp: omitting directory 'dir'"), + ('cp dir', '')]) +def test_not_match(script, stderr): + assert not match(Command(script, stderr=stderr), None) def test_get_new_command(): - assert get_new_command(Mock(script='cp dir'), None) == 'cp -a dir' + assert get_new_command(Command(script='cp dir'), None) == 'cp -a dir' diff --git a/thefuck/rules/cp_omitting_directory.py b/thefuck/rules/cp_omitting_directory.py index 4dee781e..fa6f3e12 100644 --- a/thefuck/rules/cp_omitting_directory.py +++ b/thefuck/rules/cp_omitting_directory.py @@ -4,8 +4,9 @@ from thefuck.utils import sudo_support @sudo_support def match(command, settings): + stderr = command.stderr.lower() return command.script.startswith('cp ') \ - and 'cp: omitting directory' in command.stderr.lower() + and ('omitting directory' in stderr or 'is a directory' in stderr) @sudo_support