Testing Yarn Command Replacement Logic in thefuck
This test suite validates the yarn command replacement functionality in thefuck, specifically testing the conversion of deprecated ‘yarn install’ commands to the newer ‘yarn add’ syntax. The tests ensure proper handling of package installation commands and their automated correction.
Test Coverage Overview
Implementation Analysis
Technical Details
Best Practices Demonstrated
nvbn/thefuck
tests/rules/test_yarn_command_replaced.py
import pytest
from thefuck.types import Command
from thefuck.rules.yarn_command_replaced import match, get_new_command
output = ('error `install` has been replaced with `add` to add new '
'dependencies. Run "yarn add {}" instead.').format
@pytest.mark.parametrize('command', [
Command('yarn install redux', output('redux')),
Command('yarn install moment', output('moment')),
Command('yarn install lodash', output('lodash'))])
def test_match(command):
assert match(command)
@pytest.mark.parametrize('command', [
Command('yarn install', '')])
def test_not_match(command):
assert not match(command)
@pytest.mark.parametrize('command, new_command', [
(Command('yarn install redux', output('redux')),
'yarn add redux'),
(Command('yarn install moment', output('moment')),
'yarn add moment'),
(Command('yarn install lodash', output('lodash')),
'yarn add lodash')])
def test_get_new_command(command, new_command):
assert get_new_command(command) == new_command