#!/bin/sh test_description='help.autocorrect finding a match' TEST_PASSES_SANITIZE_LEAK=true . ./test-lib.sh test_expect_success 'setup' ' # An alias git config alias.lgf "log --format=%s --first-parent" && # A random user-defined command write_script git-distimdistim <<-EOF && echo distimdistim was called EOF PATH="$PATH:." && export PATH && git commit --allow-empty -m "a single log entry" && # Sanity check git lgf >actual && echo "a single log entry" >expect && test_cmp expect actual && git distimdistim >actual && echo "distimdistim was called" >expect && test_cmp expect actual ' test_expect_success 'autocorrect showing candidates' ' git config help.autocorrect 0 && test_must_fail git lfg 2>actual && grep "^ lgf" actual && test_must_fail git distimdist 2>actual && grep "^ distimdistim" actual ' for immediate in -1 immediate do test_expect_success 'autocorrect running commands' ' git config help.autocorrect $immediate && git lfg >actual && echo "a single log entry" >expect && test_cmp expect actual && git distimdist >actual && echo "distimdistim was called" >expect && test_cmp expect actual ' done test_expect_success 'autocorrect can be declined altogether' ' git config help.autocorrect never && test_must_fail git lfg 2>actual && grep "is not a git command" actual && test_line_count = 1 actual ' test_expect_success 'autocorrect works in work tree created from bare repo' ' git clone --bare . bare.git && git -C bare.git worktree add ../worktree && git -C worktree -c help.autocorrect=immediate status ' test_done