#!/usr/bin/env zunit @setup { load "../you-should-use.plugin.zsh" YSU_MESSAGE_FORMAT='Found existing %alias_type for "%command". You should use: "%alias"' unset YSU_MESSAGE_POSITION if [[ ! -f ~/.gitconfig ]]; then touch ~/.gitconfig fi # Remove use git configuration which may interfere with tests mv ~/.gitconfig ~/.gitconfig.bak touch ~/.gitconfig } @teardown { # Restore users git configuration mv ~/.gitconfig.bak ~/.gitconfig } @test 'git aliases not triggered by aliased git commands' { git config --global alias.co checkout run _check_git_aliases "gco" "git checkout" assert $state equals 0 assert "$output" is_empty } @test 'git aliases not triggred by non git commands' { git config --global alias.cp cherry-pick run _check_git_aliases "ls -l" "ls -l" assert $state equals 0 assert "$output" is_empty } @test 'git aliases no match' { run _check_git_aliases "git config --list" "git config --list" assert "$output" is_empty assert $state equals 0 } @test 'git aliases substring match' { git config --global alias.cfg config run _check_git_aliases "git config --list" "git config --list" assert "$output" contains 'Found existing git alias for "config". You should use: "git cfg"' assert $state equals 0 } @test 'git aliases ignore on sudo' { git config --global alias.cfg config run _check_git_aliases "sudo git config --list" "sudo git config --list" assert "$output" is_empty assert $state equals 0 } @test 'git aliases exact match' { git config --global alias.st status run _check_git_aliases "git status" "git status" assert "$output" contains 'Found existing git alias for "status". You should use: "git st"' assert $state equals 0 } @test 'git aliases match parameters' { git config --global alias.recommit "commit --amend --reuse-message=HEAD" run _check_git_aliases "git commit --amend --reuse-message=HEAD" "git commit --amend --reuse-message=HEAD" assert "$output" contains 'Found existing git alias for "commit --amend --reuse-message=HEAD". You should use: "git recommit"' assert $state equals 0 } @test 'git aliases not triggered when parameters are different' { git config --global alias.recommit "commit --amend --reuse-message=HEAD" run _check_git_aliases "git commit" "git commit" assert "$output" is_empty assert $state equals 0 }