Added tests for shell command wrapping
This commit is contained in:
72
test/lib/git/shell_shortcuts_test.sh
Executable file
72
test/lib/git/shell_shortcuts_test.sh
Executable file
@@ -0,0 +1,72 @@
|
|||||||
|
#!/bin/bash
|
||||||
|
# ------------------------------------------------------------------------------
|
||||||
|
# SCM Breeze - Streamline your SCM workflow.
|
||||||
|
# Copyright 2011 Nathan Broadbent (http://madebynathan.com). All Rights Reserved.
|
||||||
|
# Released under the LGPL (GNU Lesser General Public License)
|
||||||
|
# ------------------------------------------------------------------------------
|
||||||
|
#
|
||||||
|
# Unit tests for shell command wrapping
|
||||||
|
|
||||||
|
export scmbDir="$( cd -P "$( dirname "$0" )" && pwd )/../../.."
|
||||||
|
|
||||||
|
# Zsh compatibility
|
||||||
|
if [ -n "${ZSH_VERSION:-}" ]; then
|
||||||
|
shell="zsh"
|
||||||
|
SHUNIT_PARENT=$0
|
||||||
|
setopt shwordsplit
|
||||||
|
else
|
||||||
|
# Bash needs this option so that 'alias' works in a non-interactive shell
|
||||||
|
shopt -s expand_aliases
|
||||||
|
fi
|
||||||
|
|
||||||
|
# Load test helpers
|
||||||
|
. "$scmbDir/test/support/test_helper"
|
||||||
|
|
||||||
|
# Setup
|
||||||
|
#-----------------------------------------------------------------------------
|
||||||
|
oneTimeSetUp() {
|
||||||
|
export shell_command_wrapping_enabled="true"
|
||||||
|
export scmb_wrapped_shell_commands="not_found cat rm cp mv ln ls cd sed"
|
||||||
|
|
||||||
|
# Test functions
|
||||||
|
function ls() { ls $@; }
|
||||||
|
# Test aliases
|
||||||
|
alias mv="nocorrect mv"
|
||||||
|
alias rm="rm --option"
|
||||||
|
alias sed="sed"
|
||||||
|
# Test already wrapped commands
|
||||||
|
alias ln="exec_scmb_expand_args /bin/ln"
|
||||||
|
|
||||||
|
# Run shortcut wrapping
|
||||||
|
source "$scmbDir/lib/git/shell_shortcuts.sh"
|
||||||
|
|
||||||
|
# Define 'whence' function for Bash.
|
||||||
|
# Must come after sourcing shell_shortcuts
|
||||||
|
type whence > /dev/null 2>&1 || function whence() { type "$@" | sed -e "s/.*is aliased to \`//" -e "s/'$//"; }
|
||||||
|
}
|
||||||
|
|
||||||
|
# Helper function to test that alias is defined properly.
|
||||||
|
# (Works for both zsh and bash)
|
||||||
|
assertAliasEquals(){
|
||||||
|
assertEquals "$1" "$(whence $2)"
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
#-----------------------------------------------------------------------------
|
||||||
|
# Unit tests
|
||||||
|
#-----------------------------------------------------------------------------
|
||||||
|
|
||||||
|
test_shell_command_wrapping() {
|
||||||
|
assertAliasEquals "exec_scmb_expand_args /bin/rm --option" "rm"
|
||||||
|
assertAliasEquals "exec_scmb_expand_args nocorrect /bin/mv" "mv"
|
||||||
|
assertAliasEquals "exec_scmb_expand_args /bin/sed" "sed"
|
||||||
|
assertAliasEquals "exec_scmb_expand_args /bin/cat" "cat"
|
||||||
|
assertAliasEquals "exec_scmb_expand_args builtin cd" "cd"
|
||||||
|
assertAliasEquals "exec_scmb_expand_args __original_ls" "ls"
|
||||||
|
assertAliasEquals "exec_scmb_expand_args /bin/ln" "ln"
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
# load and run shUnit2
|
||||||
|
. "$scmbDir/test/support/shunit2"
|
||||||
Reference in New Issue
Block a user