Back to Repositories

Testing Git Branch Command Correction in TheFuck

This test suite validates the functionality of git branch list command correction in TheFuck tool. It ensures proper handling of incorrect git branch commands and verifies the auto-correction behavior for common git branch usage mistakes.

Test Coverage Overview

The test suite provides comprehensive coverage for git branch command validation and correction.

Key areas tested include:
  • Matching incorrect ‘git branch list’ command usage
  • Negative test cases for various git commands
  • Command transformation logic verification
Integration points focus on shell command execution and git command parsing.

Implementation Analysis

The testing approach uses pytest framework to implement focused unit tests for command matching and transformation.

Technical patterns include:
  • Command object usage for input validation
  • Shell command concatenation testing
  • Boolean assertion patterns for match verification

Technical Details

Testing tools and configuration:
  • pytest as the primary testing framework
  • Custom Command type for input handling
  • Shell command wrapper for command execution
  • Assertion-based validation for command matching

Best Practices Demonstrated

The test suite demonstrates strong testing practices through clear separation of positive and negative test cases.

Notable practices include:
  • Isolated test functions for specific scenarios
  • Comprehensive negative testing
  • Clear test function naming conventions
  • Efficient use of pytest assertions

nvbn/thefuck

tests/rules/test_git_branch_list.py

            
from thefuck.rules.git_branch_list import match, get_new_command
from thefuck.shells import shell
from thefuck.types import Command


def test_match():
    assert match(Command('git branch list', ''))


def test_not_match():
    assert not match(Command('', ''))
    assert not match(Command('git commit', ''))
    assert not match(Command('git branch', ''))
    assert not match(Command('git stash list', ''))


def test_get_new_command():
    assert (get_new_command(Command('git branch list', '')) ==
            shell.and_('git branch --delete list', 'git branch'))