diff --git a/bin/tmuxifier b/bin/tmuxifier index 3568f97..ae1e14d 100755 --- a/bin/tmuxifier +++ b/bin/tmuxifier @@ -3,12 +3,13 @@ set -e [ -n "$TMUXIFIER_DEBUG" ] && set -x resolve_link() { - $(type -p greadlink readlink | head -1) $1 + $(type -p greadlink readlink | head -1) "$1" } abs_dirname() { - local cwd="$(pwd)" + local cwd local path="$1" + cwd="$(pwd)" while [ -n "$path" ]; do cd "${path%/*}" @@ -22,11 +23,12 @@ abs_dirname() { if [ -z "${TMUXIFIER}" ]; then # Set TMUXIFIER relative to the "tmuxifier" executable. - export TMUXIFIER="$(dirname "$(abs_dirname "$0")")" + TMUXIFIER="$(dirname "$(abs_dirname "$0")")" else # Strip any trailing slash (/) characters from TMUXIFIER variable. - export TMUXIFIER="${TMUXIFIER%/}" + TMUXIFIER="${TMUXIFIER%/}" fi +export TMUXIFIER # Load tmuxifier environment variables. source "$TMUXIFIER/lib/env.sh" @@ -38,29 +40,25 @@ export PATH="$TMUXIFIER/libexec:$PATH" export TMUXIFIER_MIN_TMUX_VERSION="1.6" if [ "$(tmuxifier-tmux-version "$TMUXIFIER_MIN_TMUX_VERSION")" == "<" ]; then echo -e "ERROR: Tmuxifier requires Tmux v${TMUXIFIER_MIN_TMUX_VERSION}" \ - "or newer. You have v$(tmuxifier-tmux-version)." >&2 + "or newer. You have v$(tmuxifier-tmux-version)." >&2 exit 1 fi # Parse given command command="$1" case "$command" in - "" | "-h" | "--help" ) + "" | "-h" | "--help") echo -e "tmuxifier $(tmuxifier-version)\n$(tmuxifier-help)" >&2 ;; - - "-v" | "--version" ) + "-v" | "--version") tmuxifier-version ;; - - * ) + *) ! command_path="$(tmuxifier-resolve-command-path "$command")" - if [ -z "$command_path" ]; then echo "tmuxifier: no such command '$command'" >&2 exit 1 fi - shift 1 exec "$command_path" "$@" ;; diff --git a/completion/tmuxifier.bash b/completion/tmuxifier.bash index 6d26e40..e4b2354 100644 --- a/completion/tmuxifier.bash +++ b/completion/tmuxifier.bash @@ -3,11 +3,12 @@ _tmuxifier() { local word="${COMP_WORDS[COMP_CWORD]}" if [ "$COMP_CWORD" -eq 1 ]; then - COMPREPLY=( $(compgen -W "$(tmuxifier commands)" -- "$word") ) + COMPREPLY=($(compgen -W "$(tmuxifier commands)" -- "$word")) else local command="${COMP_WORDS[1]}" - local completions="$(tmuxifier completions "$command")" - COMPREPLY=( $(compgen -W "$completions" -- "$word") ) + local completions + completions="$(tmuxifier completions "$command")" + COMPREPLY=($(compgen -W "$completions" -- "$word")) fi } diff --git a/lib/layout-helpers.sh b/lib/layout-helpers.sh index 68f7ea5..16b6072 100644 --- a/lib/layout-helpers.sh +++ b/lib/layout-helpers.sh @@ -140,7 +140,7 @@ balance_windows_horizontal() { # synchronize_on() { tmuxifier-tmux set-window-option -t "$session:${1:-$window}" \ - synchronize-panes on + synchronize-panes on } # Turn off synchronize-panes in a window. @@ -150,7 +150,7 @@ synchronize_on() { # synchronize_off() { tmuxifier-tmux set-window-option -t "$session:${1:-$window}" \ - synchronize-panes off + synchronize-panes off } # Send/paste keys to the currently active pane/window. @@ -180,7 +180,9 @@ run_cmd() { # - $1: Directory path to use for session root. # session_root() { - local dir="$(__expand_path $@)" + local dir + dir="$(__expand_path "$@")" + if [ -d "$dir" ]; then session_root="$dir" fi @@ -192,7 +194,9 @@ session_root() { # - $1: Directory path to use for window root. # window_root() { - local dir="$(__expand_path $@)" + local dir + dir="$(__expand_path "$@")" + if [ -d "$dir" ]; then window_root="$dir" fi @@ -214,9 +218,11 @@ load_window() { if [ $# -gt 1 ]; then window="$2" else - window="${1/%.window.sh}" - window="${window/%.sh}" + window="${1/%.window.sh/}" + window="${window/%.sh/}" fi + + # shellcheck disable=SC1090 source "$file" window= @@ -258,11 +264,12 @@ load_session() { if [ $# -gt 1 ]; then session="$2" else - session="${1/%.session.sh}" - session="${session/%.sh}" + session="${1/%.session.sh/}" + session="${session/%.sh/}" fi set_default_path=true + # shellcheck disable=SC1090 source "$file" session= @@ -304,11 +311,11 @@ initialize_session() { # Set default-path for session if [ -n "$session_root" ] && [ -d "$session_root" ]; then - cd "$session_root" + cd "$session_root" || return 1 $set_default_path && tmuxifier-tmux \ set-option -t "$session:" \ - default-path "$session_root" 1>/dev/null + default-path "$session_root" 1> /dev/null fi # Tmux 1.9 and later. @@ -329,7 +336,8 @@ initialize_session() { # In order to ensure only specified windows are created, we move the # default window to position 999, and later remove it with the # `finalize_and_go_to_session` function. - local first_window_index=$(__get_first_window_index) + local first_window_index + first_window_index="$(__get_first_window_index)" tmuxifier-tmux move-window \ -s "$session:$first_window_index" -t "$session:999" } @@ -344,13 +352,12 @@ initialize_session() { # created, but already existed, then we'll need to specifically switch to it. # finalize_and_go_to_session() { - ! tmuxifier-tmux kill-window -t "$session:999" 2>/dev/null + ! tmuxifier-tmux kill-window -t "$session:999" 2> /dev/null if [[ "$(tmuxifier-current-session)" != "$session" ]]; then __go_to_session fi } - # # Internal functions # @@ -369,8 +376,11 @@ __expand_path() { } __get_first_window_index() { - local index=$(tmuxifier-tmux list-windows -t "$session:" \ - -F "#{window_index}" 2>/dev/null) + local index + index="$( + tmuxifier-tmux list-windows \ + -t "$session:" -F "#{window_index}" 2> /dev/null + )" if [ -n "$index" ]; then echo "$index" | head -1 @@ -380,16 +390,20 @@ __get_first_window_index() { } __get_current_window_index() { - local lookup=$(tmuxifier-tmux list-windows -t "$session:" \ - -F "#{window_active}:#{window_index}" 2>/dev/null | grep "^1:") + local lookup + lookup="$( + tmuxifier-tmux list-windows -t "$session:" \ + -F "#{window_active}:#{window_index}" 2> /dev/null | grep "^1:" + )" if [ -n "$lookup" ]; then - echo "${lookup/1:}" + echo "${lookup/1:/}" fi } __go_to_session() { if [ -z "$TMUX" ]; then + # shellcheck disable=2086 tmuxifier-tmux $TMUXIFIER_TMUX_ITERM_ATTACH -u \ attach-session -t "$session:" else diff --git a/lib/util.sh b/lib/util.sh index eeaf9a2..02e4a2e 100644 --- a/lib/util.sh +++ b/lib/util.sh @@ -1,11 +1,11 @@ calling-help() { - if [[ " $@ " != *" --help "* ]] && [[ " $@ " != *" -h "* ]]; then + if [[ " $* " != *" --help "* ]] && [[ " $* " != *" -h "* ]]; then return 1 fi } calling-complete() { - if [[ " $@ " != *" --complete "* ]]; then + if [[ " $* " != *" --complete "* ]]; then return 1 fi } diff --git a/libexec/tmuxifier-alias b/libexec/tmuxifier-alias index 94e4f7e..4265770 100755 --- a/libexec/tmuxifier-alias +++ b/libexec/tmuxifier-alias @@ -14,33 +14,37 @@ Resolve a command alias to it's full name." fi case "$1" in - "session" | "ses" | "s" ) + "session" | "ses" | "s") echo "load-session" ;; - "window" | "win" | "w" ) + "window" | "win" | "w") echo "load-window" ;; - "new-ses" | "nses" | "ns" ) + "new-ses" | "nses" | "ns") echo "new-session" ;; - "new-win" | "nwin" | "nw" ) + "new-win" | "nwin" | "nw") echo "new-window" ;; - "edit-ses" | "eses" | "es" ) + "edit-ses" | "eses" | "es") echo "edit-session" ;; - "edit-win" | "ewin" | "ew" ) + "edit-win" | "ewin" | "ew") echo "edit-window" ;; - "l" ) + "l") echo "list" ;; - "list-ses" | "lses" | "ls" ) + "list-ses" | "lses" | "ls") echo "list-sessions" ;; - "list-win" | "lwin" | "lw" ) + "list-win" | "lwin" | "lw") echo "list-windows" ;; - * ) + "completion") + echo "completions" + ;; + *) exit 1 + ;; esac diff --git a/libexec/tmuxifier-commands b/libexec/tmuxifier-commands index 9de81aa..5f9fd2b 100755 --- a/libexec/tmuxifier-commands +++ b/libexec/tmuxifier-commands @@ -16,7 +16,8 @@ fi shopt -s nullglob -{ for path in ${PATH//:/$'\n'}; do +{ + for path in ${PATH//:/$'\n'}; do for command in "${path}/tmuxifier-"*; do command="${command##*tmuxifier-}" echo "$command" diff --git a/libexec/tmuxifier-completions b/libexec/tmuxifier-completions index 4408275..45844fa 100755 --- a/libexec/tmuxifier-completions +++ b/libexec/tmuxifier-completions @@ -7,7 +7,9 @@ source "$TMUXIFIER/lib/util.sh" # Provide tmuxifier help if calling-help "$@"; then - echo "usage: tmuxifier completion + echo "usage: tmuxifier completions + +Aliases: completion Print a list of available completions for specified command." exit @@ -20,15 +22,15 @@ if calling-complete "$@"; then fi has-completions() { - grep -i "^# Provide tmuxifier completions" "$1" >/dev/null + grep -i "^# Provide tmuxifier completions" "$1" > /dev/null } if [ -z "$1" ]; then - echo "$(tmuxifier-help completions $@)" >&2 + tmuxifier-help completions "$@" >&2 exit 1 fi -! command_path="$(tmuxifier-resolve-command-path "$1")" +command_path="$(tmuxifier-resolve-command-path "$1")" || true if [ -n "$command_path" ] && has-completions "$command_path"; then shift diff --git a/libexec/tmuxifier-current-session b/libexec/tmuxifier-current-session index 82e09ea..27dc96f 100755 --- a/libexec/tmuxifier-current-session +++ b/libexec/tmuxifier-current-session @@ -14,8 +14,8 @@ Outputs the name of the current Tmux session." fi if [ -n "$TMUX" ]; then - for item in $(tmuxifier-tmux list-pane -F "#{session_name}");do - echo $item + for item in $(tmuxifier-tmux list-pane -F "#{session_name}"); do + echo "$item" exit 0 done fi diff --git a/libexec/tmuxifier-edit-session b/libexec/tmuxifier-edit-session index e0722d1..9dad083 100755 --- a/libexec/tmuxifier-edit-session +++ b/libexec/tmuxifier-edit-session @@ -22,7 +22,7 @@ if calling-complete "$@"; then fi if [ -z "$1" ]; then - echo "$(tmuxifier-help edit-session $@)" >&2 + tmuxifier-help edit-session "$@" >&2 exit 1 fi diff --git a/libexec/tmuxifier-edit-window b/libexec/tmuxifier-edit-window index dee2986..f01420d 100755 --- a/libexec/tmuxifier-edit-window +++ b/libexec/tmuxifier-edit-window @@ -22,7 +22,7 @@ if calling-complete "$@"; then fi if [ -z "$1" ]; then - echo "$(tmuxifier-help edit-window $@)" >&2 + tmuxifier-help edit-window "$@" >&2 exit 1 fi diff --git a/libexec/tmuxifier-help b/libexec/tmuxifier-help index 5c27f1b..edceb53 100755 --- a/libexec/tmuxifier-help +++ b/libexec/tmuxifier-help @@ -18,7 +18,7 @@ if calling-complete "$@"; then fi has-help() { - grep -i "^# Provide tmuxifier help" "$1" >/dev/null + grep -i "^# Provide tmuxifier help" "$1" > /dev/null } if [ -z "$1" ]; then @@ -43,7 +43,7 @@ See 'tmuxifier help ' for information on a specific command." exit fi -! command_path="$(tmuxifier-resolve-command-path "$1")" +command_path="$(tmuxifier-resolve-command-path "$1")" || true if [ -z "$command_path" ]; then echo "tmuxifier: no such command '$1'" >&2 diff --git a/libexec/tmuxifier-init b/libexec/tmuxifier-init index 0bad316..7bd5dbc 100755 --- a/libexec/tmuxifier-init +++ b/libexec/tmuxifier-init @@ -2,6 +2,9 @@ set -e [ -n "$TMUXIFIER_DEBUG" ] && set -x +# Load internal utility functions. +source "$TMUXIFIER/lib/util.sh" + # Set shell to first argument that is not "-", "-h" or "--help". for arg in "$@"; do if [ "$arg" != "-" ] && [ "$arg" != "-h" ] && [ "$arg" != "--help" ]; then @@ -14,46 +17,46 @@ if [ -z "$shell" ]; then fi case "$shell" in - bash ) - profile='~/.bash_profile' + bash) + profile='.bash_profile' ;; - zsh ) - profile='~/.zshrc' + zsh) + profile='.zshrc' ;; - ksh ) - profile='~/.profile' + ksh) + profile='.profile' ;; - csh ) - profile='~/.cshrc' + csh) + profile='.cshrc' ;; - tcsh ) - profile='~/.tcshrc' + tcsh) + profile='.tcshrc' ;; - fish ) - profile='~/.config/fish/config.fish' + fish) + profile='.config/fish/config.fish' ;; - * ) + *) profile='shell init file' ;; esac # Provide tmuxifier help -if [[ " $@ " == *" --help "* ]]; then +if calling-help "$@"; then echo "usage: tmuxifier init - -Load Tmuxifier by adding the following to your ${profile}: +Load Tmuxifier by adding the following to your ~/${profile}: " case "$shell" in - csh | tcsh ) + csh | tcsh) echo " eval \`tmuxifier init -\` " ;; - fish ) + fish) echo " eval (tmuxifier init -) " ;; - * ) + *) echo " eval \"\$(tmuxifier init -)\" " ;; @@ -64,26 +67,26 @@ Load Tmuxifier by adding the following to your ${profile}: fi # Print help if "-" argument is not given -if [[ " $@ " != *" - "* ]]; then - echo "$(tmuxifier-help init $@)" >&2 +if [[ " $* " != *" - "* ]]; then + tmuxifier-help init "$@" >&2 exit 1 fi case "$shell" in - csh | tcsh ) + csh | tcsh) echo "setenv TMUXIFIER \"$TMUXIFIER\";" echo "source \"\$TMUXIFIER/init.tcsh\";" ;; - fish ) + fish) echo "set -gx TMUXIFIER \"$TMUXIFIER\";" # fish shell 2.0.0 does not have the source alias if [[ $(fish --version 2>&1 | awk -F'version ' '{print $2}') = '2.0.0' ]]; then echo ". \"\$TMUXIFIER/init.fish\";" else echo "source \"\$TMUXIFIER/init.fish\";" - fi + fi ;; - * ) + *) echo "export TMUXIFIER=\"$TMUXIFIER\";" echo "source \"\$TMUXIFIER/init.sh\";" ;; diff --git a/libexec/tmuxifier-load-session b/libexec/tmuxifier-load-session index 5083b4f..318f875 100755 --- a/libexec/tmuxifier-load-session +++ b/libexec/tmuxifier-load-session @@ -30,7 +30,7 @@ if calling-complete "$@"; then fi if [ -z "$1" ]; then - echo "$(tmuxifier-help load-session $@)" >&2 + tmuxifier-help load-session "$@" >&2 exit 1 fi diff --git a/libexec/tmuxifier-load-window b/libexec/tmuxifier-load-window index 0a6d0f9..772ac41 100755 --- a/libexec/tmuxifier-load-window +++ b/libexec/tmuxifier-load-window @@ -26,14 +26,14 @@ if calling-complete "$@"; then fi if [ -z "$1" ]; then - echo "$(tmuxifier-help load-window $@)" >&2 + tmuxifier-help load-window "$@" >&2 exit 1 fi # Load runtime functions. source "$TMUXIFIER/lib/runtime.sh" -if [ ! -z $TMUX ]; then +if [ -n "$TMUX" ]; then session="$(tmuxifier-current-session)" load_window "$1" else diff --git a/libexec/tmuxifier-new-session b/libexec/tmuxifier-new-session index c3ec25f..4de01d2 100755 --- a/libexec/tmuxifier-new-session +++ b/libexec/tmuxifier-new-session @@ -22,7 +22,7 @@ if calling-complete "$@"; then fi if [ -z "$1" ]; then - echo "$(tmuxifier-help new-session $@)" >&2 + tmuxifier-help new-session "$@" >&2 exit 1 fi diff --git a/libexec/tmuxifier-new-window b/libexec/tmuxifier-new-window index a9e35ef..f4be1ae 100755 --- a/libexec/tmuxifier-new-window +++ b/libexec/tmuxifier-new-window @@ -22,7 +22,7 @@ if calling-complete "$@"; then fi if [ -z "$1" ]; then - echo "$(tmuxifier-help new-window $@)" >&2 + tmuxifier-help new-window "$@" >&2 exit 1 fi diff --git a/libexec/tmuxifier-resolve-command-path b/libexec/tmuxifier-resolve-command-path index 6eeec67..7701eb5 100755 --- a/libexec/tmuxifier-resolve-command-path +++ b/libexec/tmuxifier-resolve-command-path @@ -14,11 +14,11 @@ Outputs the absolute path to the given command or command alias." fi if [ -n "$1" ]; then - ! command_path="$(command -v "tmuxifier-$1")" + command_path="$(command -v "tmuxifier-$1")" || true if [ -z "$command_path" ]; then resolved="$(tmuxifier-alias "$1")" if [ -n "$resolved" ]; then - ! command_path="$(command -v "tmuxifier-$resolved")" + command_path="$(command -v "tmuxifier-$resolved")" || true fi fi fi diff --git a/libexec/tmuxifier-tmux b/libexec/tmuxifier-tmux index 96328a6..785e0ba 100755 --- a/libexec/tmuxifier-tmux +++ b/libexec/tmuxifier-tmux @@ -2,4 +2,5 @@ set -e [ -n "$TMUXIFIER_DEBUG" ] && set -x +# shellcheck disable=SC2086 tmux $TMUXIFIER_TMUX_OPTS "$@" diff --git a/libexec/tmuxifier-tmux-version b/libexec/tmuxifier-tmux-version index f48b17e..c1cadc8 100755 --- a/libexec/tmuxifier-tmux-version +++ b/libexec/tmuxifier-tmux-version @@ -19,16 +19,17 @@ fi # The vercomp() function is shamelessly ripped/borrowed from the following # StackOverflow answer: http://stackoverflow.com/a/4025065/42146 -vercomp () { - if [[ $1 == $2 ]]; then return 0; fi +vercomp() { + if [[ "$1" == "$2" ]]; then return 0; fi local IFS=. + # shellcheck disable=SC2206 local i ver1=($1) ver2=($2) # fill empty fields in ver1 with zeros - for ((i=${#ver1[@]}; i<${#ver2[@]}; i++)); do ver1[i]=0; done + for ((i = ${#ver1[@]}; i < ${#ver2[@]}; i++)); do ver1[i]=0; done - for ((i=0; i<${#ver1[@]}; i++)); do + for ((i = 0; i < ${#ver1[@]}; i++)); do # fill empty fields in ver2 with zeros if [[ -z ${ver2[i]} ]]; then ver2[i]=0; fi @@ -63,8 +64,8 @@ else vercomp "$version" "$1" case $? in - 0) echo '=';; - 1) echo '>';; - 2) echo '<';; + 0) echo '=' ;; + 1) echo '>' ;; + 2) echo '<' ;; esac fi diff --git a/test/lib/env.test.sh b/test/lib/env.test.sh index 0caf1c0..321a25f 100755 --- a/test/lib/env.test.sh +++ b/test/lib/env.test.sh @@ -11,21 +11,25 @@ TMUXIFER="/path/to/tmuxifier" # When TMUXIFIER_LAYOUT_PATH is not set. source "${root}/lib/env.sh" +# shellcheck disable=SC2016 assert 'echo $TMUXIFIER_LAYOUT_PATH' "${TMUXIFIER}/layouts" # When TMUXIFIER_LAYOUT_PATH is set and has a trailing slash. TMUXIFIER_LAYOUT_PATH="/path/to/layouts/" source "${root}/lib/env.sh" +# shellcheck disable=SC2016 assert 'echo $TMUXIFIER_LAYOUT_PATH' "/path/to/layouts" unset TMUXIFIER_LAYOUT_PATH # When TMUXIFIER_LAYOUT_PATH is set and does not have a trailing slash. TMUXIFIER_LAYOUT_PATH="/path/to/layouts" source "${root}/lib/env.sh" +# shellcheck disable=SC2016 assert 'echo $TMUXIFIER_LAYOUT_PATH' "/path/to/layouts" unset TMUXIFIER_LAYOUT_PATH # Tear down. +# shellcheck disable=SC2034 TMUXIFER="$realTMUXIFIER" unset realTMUXIFIER diff --git a/test/lib/layout-helpers/__get_current_window_index.test.sh b/test/lib/layout-helpers/__get_current_window_index.test.sh index cf4371c..bed8710 100755 --- a/test/lib/layout-helpers/__get_current_window_index.test.sh +++ b/test/lib/layout-helpers/__get_current_window_index.test.sh @@ -7,25 +7,25 @@ source "${root}/lib/layout-helpers.sh" # # When current window is the first and only window. -create-test-session +create-test-session "test" assert "__get_current_window_index" "0" -kill-test-session +kill-test-session "test" # When creating a second window. -create-test-session +create-test-session "test" test-socket-tmux new-window -t "$session:1" assert "__get_current_window_index" "1" -kill-test-session +kill-test-session "test" # When creating a second window and then switching back to the first window. -create-test-session +create-test-session "test" test-socket-tmux new-window -t "$session:1" test-socket-tmux select-window -t "$session:0" assert "__get_current_window_index" "0" -kill-test-session +kill-test-session "test" # When creating multiples windows and switching between them randomly. -create-test-session +create-test-session "test" assert "__get_current_window_index" "0" test-socket-tmux new-window -t "$session:1" assert "__get_current_window_index" "1" @@ -41,8 +41,7 @@ test-socket-tmux select-window -t "$session:3" assert "__get_current_window_index" "3" test-socket-tmux select-window -t "$session:2" assert "__get_current_window_index" "2" -kill-test-session - +kill-test-session "test" # End of tests. assert_end "__get_current_window_index()" diff --git a/test/lib/layout-helpers/__get_first_window_index.test.sh b/test/lib/layout-helpers/__get_first_window_index.test.sh index c08dfd4..5eca447 100755 --- a/test/lib/layout-helpers/__get_first_window_index.test.sh +++ b/test/lib/layout-helpers/__get_first_window_index.test.sh @@ -7,24 +7,23 @@ source "${root}/lib/layout-helpers.sh" # # When first window has a index of 0. -create-test-session +create-test-session "test" assert "__get_first_window_index" "0" -kill-test-session +kill-test-session "test" # When first window has a index of 1. -create-test-session +create-test-session "test" test-socket-tmux new-window -t "$session:1" test-socket-tmux kill-window -t "$session:0" assert "__get_first_window_index" "1" -kill-test-session +kill-test-session "test" # When first window has a index of 2. -create-test-session +create-test-session "test" test-socket-tmux new-window -t "$session:2" test-socket-tmux kill-window -t "$session:0" assert "__get_first_window_index" "2" -kill-test-session - +kill-test-session "test" # End of tests. assert_end "__get_first_window_index()" diff --git a/test/lib/layout-helpers/__go_to_window_or_session_path.test.sh b/test/lib/layout-helpers/__go_to_window_or_session_path.test.sh index bdb5e2c..d0a774e 100755 --- a/test/lib/layout-helpers/__go_to_window_or_session_path.test.sh +++ b/test/lib/layout-helpers/__go_to_window_or_session_path.test.sh @@ -12,7 +12,6 @@ __go_to_window_or_session_path assert "stub_called_times run_cmd" "0" restore run_cmd - # When only $window_root is set, runs cd to $window_root path. stub run_cmd window_root="/tmp" @@ -22,7 +21,6 @@ assert 'stub_called_with_times run_cmd clear' "1" unset window_root restore run_cmd - # When only $TMUXIFIER_SESSION_ROOT is set, runs cd to $TMUXIFIER_SESSION_ROOT # path. stub run_cmd @@ -33,7 +31,6 @@ assert 'stub_called_with_times run_cmd clear' "1" unset TMUXIFIER_SESSION_ROOT restore run_cmd - # When only $session_root is set, runs cd to $session_root path. stub run_cmd session_root="/usr" @@ -43,7 +40,6 @@ assert 'stub_called_with_times run_cmd clear' "1" unset session_root restore run_cmd - # When $window_root and $session_root are set, runs cd to $window_root path. stub run_cmd window_root="/tmp" @@ -55,7 +51,6 @@ unset window_root unset session_root restore run_cmd - # When $TMUXIFIER_SESSION_ROOT and $session_root are set, runs cd to # $TMUXIFIER_SESSION_ROOT path. stub run_cmd @@ -68,7 +63,6 @@ unset TMUXIFIER_SESSION_ROOT unset session_root restore run_cmd - # When $window_root, $TMUXIFIER_SESSION_ROOT, and $session_root are set, runs # cd to $window_root path. stub run_cmd @@ -83,6 +77,5 @@ unset TMUXIFIER_SESSION_ROOT unset session_root restore run_cmd - # End of tests. assert_end "__go_to_window_or_session_path()" diff --git a/test/lib/layout-helpers/new_window.test.sh b/test/lib/layout-helpers/new_window.test.sh index 21a601f..4772a87 100755 --- a/test/lib/layout-helpers/new_window.test.sh +++ b/test/lib/layout-helpers/new_window.test.sh @@ -7,29 +7,29 @@ source "${root}/lib/layout-helpers.sh" # # When called without arguments, creates new window. -create-test-session +create-test-session "test" stub __go_to_window_or_session_path assert "test-socket-window-count" "1" new_window assert "test-socket-window-count" "2" assert "stub_called_times __go_to_window_or_session_path" "1" restore __go_to_window_or_session_path -kill-test-session +kill-test-session "test" # When called with name argument, creates new window with specified name. -create-test-session +create-test-session "test" stub __go_to_window_or_session_path assert "test-socket-window-count yippieezzz" "0" new_window "yippieezzz" assert "test-socket-window-count" "2" assert "test-socket-window-count yippieezzz" "1" restore __go_to_window_or_session_path -kill-test-session +kill-test-session "test" # When called with name and command argument, creates new window with # specified name and executes given command. rm "/tmp/tmuxifier-new_window-test" &> /dev/null -create-test-session +create-test-session "test" stub __go_to_window_or_session_path new_window "foobardoo" "touch /tmp/tmuxifier-new_window-test; bash" assert "test-socket-window-count" "2" @@ -37,13 +37,13 @@ assert "test-socket-window-count foobardoo" "1" sleep 0.1 # attempt to avoid timing issue causing flicker assert_raises 'test -f "/tmp/tmuxifier-new_window-test"' 0 restore __go_to_window_or_session_path -kill-test-session +kill-test-session "test" rm "/tmp/tmuxifier-new_window-test" &> /dev/null # When called ensure it sets the $window variable to the index of the newly # created window. unset window -create-test-session +create-test-session "test" stub __go_to_window_or_session_path new_window "foo" assert "echo $window" "1" @@ -52,7 +52,7 @@ assert "echo $window" "2" new_window "bar" assert "echo $window" "3" restore __go_to_window_or_session_path -kill-test-session +kill-test-session "test" unset window # End of tests. diff --git a/test/lib/layout-helpers/select_window.test.sh b/test/lib/layout-helpers/select_window.test.sh index 0ba4977..ba023af 100755 --- a/test/lib/layout-helpers/select_window.test.sh +++ b/test/lib/layout-helpers/select_window.test.sh @@ -8,11 +8,11 @@ source "${root}/lib/layout-helpers.sh" window_list() { test-socket-tmux list-windows -t "$session:" \ - -F "#{window_active}:#{window_index}" 2>/dev/null + -F "#{window_active}:#{window_index}" 2> /dev/null } # Selects given window when passed a window index -create-test-session +create-test-session "test" test-socket-tmux new-window -t "$session:1" test-socket-tmux new-window -t "$session:2" select_window 0 @@ -21,23 +21,22 @@ select_window 1 assert "window_list | grep '^1:'" "1:1" select_window 2 assert "window_list | grep '^1:'" "1:2" -kill-test-session +kill-test-session "test" # Selects given window when passed a window name -create-test-session +create-test-session "test" test-socket-tmux new-window -t "$session:1" -n "foo" test-socket-tmux new-window -t "$session:2" -n "bar" select_window foo assert "window_list | grep '^1:'" "1:1" select_window bar assert "window_list | grep '^1:'" "1:2" -kill-test-session - +kill-test-session "test" # When called ensure it sets the $window variable to the index of the newly # created window. unset window -create-test-session +create-test-session "test" test-socket-tmux new-window -t "$session:1" -n "foo" test-socket-tmux new-window -t "$session:2" -n "bar" select_window "foo" @@ -48,7 +47,7 @@ select_window 1 assert "echo $window" "1" select_window 2 assert "echo $window" "2" -kill-test-session +kill-test-session "test" unset window # End of tests. diff --git a/test/lib/runtime.test.sh b/test/lib/runtime.test.sh index 06d5a68..72f86f0 100755 --- a/test/lib/runtime.test.sh +++ b/test/lib/runtime.test.sh @@ -8,9 +8,11 @@ source "../test-helper.sh" source "${root}/lib/runtime.sh" # We assume env.sh has been sourced if $TMUXIFIER_LAYOUT_PATH has been set. +# shellcheck disable=SC2016 assert 'echo $TMUXIFIER_LAYOUT_PATH' "${TMUXIFIER}/layouts" # We ensure $session_root is set to $HOME by default. +# shellcheck disable=SC2016 assert 'echo $session_root' "$HOME" # We assume layout-helpers.sh has been sourced if a few of them are available. @@ -18,6 +20,5 @@ for helper in new_window split_v split_h select_window select_pane; do assert "type $helper | head -1" "$helper is a function" done - # End of tests. assert_end "runtime.sh" diff --git a/test/lib/util.test.sh b/test/lib/util.test.sh index df6cc08..cebc6ef 100755 --- a/test/lib/util.test.sh +++ b/test/lib/util.test.sh @@ -34,7 +34,6 @@ assert_raises 'calling-help welcome-home' 1 # End of tests. assert_end "calling-help()" - # # calling-complete() tests. # diff --git a/test/test-helper.sh b/test/test-helper.sh index ed081be..ab5acdf 100644 --- a/test/test-helper.sh +++ b/test/test-helper.sh @@ -5,8 +5,9 @@ resolve_link() { } abs_dirname() { - local cwd="$(pwd)" + local cwd local path="$1" + cwd="$(pwd)" while [ -n "$path" ]; do cd "${path%/*}" @@ -47,14 +48,13 @@ unset TMUXIFIER_NO_COMPLETE source "${testroot}/assert.sh" source "${testroot}/stub.sh" - # # Test Helpers # test-socket-tmux() { export TMUXIFIER_TMUX_OPTS="-L tmuxifier-tests" - "$TMUX_BIN" $TMUXIFIER_TMUX_OPTS $@ + "$TMUX_BIN" $TMUXIFIER_TMUX_OPTS "$@" } create-test-session() { @@ -78,9 +78,10 @@ kill-test-server() { } test-socket-window-count() { - local list="$(test-socket-tmux list-windows)" + local list + list="$(test-socket-tmux list-windows)" if [ -n "$1" ]; then - echo "$list" | grep $1 | wc -l | awk '{print $1}' + echo "$list" | grep "$1" -c | awk '{print $1}' else echo "$list" | wc -l | awk '{print $1}' fi