diff --git a/lib/layout-helpers.sh b/lib/layout-helpers.sh index dfa2673..dbbcb9a 100644 --- a/lib/layout-helpers.sh +++ b/lib/layout-helpers.sh @@ -18,13 +18,11 @@ tmux() { # - $2: (optional) Shell command to execute when window is created. # new_window() { - if [ -n "$1" ]; then - window="$1" - local winarg=(-n "$window") - fi + if [ -n "$1" ]; then local winarg=(-n "$1"); fi if [ -n "$2" ]; then local command=("$2"); fi tmuxifier-tmux new-window -t "$session:" "${winarg[@]}" "${command[@]}" + window="$(__get_current_window_index)" __go_to_window_or_session_path } @@ -91,6 +89,7 @@ clock() { # select_window() { tmuxifier-tmux select-window -t "$session:$1" + window="$(__get_current_window_index)" } # Select a specific pane in the current window. diff --git a/test/lib/layout-helpers/new_window.test.sh b/test/lib/layout-helpers/new_window.test.sh index 5b162b7..4817ce2 100755 --- a/test/lib/layout-helpers/new_window.test.sh +++ b/test/lib/layout-helpers/new_window.test.sh @@ -39,9 +39,20 @@ restore __go_to_window_or_session_path kill-test-session rm "/tmp/tmuxifier-new_window-test" &> /dev/null - -# Tear down. -kill-test-server +# When called ensure it sets the $window variable to the index of the newly +# created window. +unset window +create-test-session +stub __go_to_window_or_session_path +new_window "foo" +assert "echo $window" "1" +new_window +assert "echo $window" "2" +new_window "bar" +assert "echo $window" "3" +restore __go_to_window_or_session_path +kill-test-session +unset window # End of tests. assert_end "new_window()" diff --git a/test/lib/layout-helpers/select_window.test.sh b/test/lib/layout-helpers/select_window.test.sh new file mode 100755 index 0000000..0ba4977 --- /dev/null +++ b/test/lib/layout-helpers/select_window.test.sh @@ -0,0 +1,55 @@ +#! /usr/bin/env bash +source "../../test-helper.sh" +source "${root}/lib/layout-helpers.sh" + +# +# select_window() tests. +# + +window_list() { + test-socket-tmux list-windows -t "$session:" \ + -F "#{window_active}:#{window_index}" 2>/dev/null +} + +# Selects given window when passed a window index +create-test-session +test-socket-tmux new-window -t "$session:1" +test-socket-tmux new-window -t "$session:2" +select_window 0 +assert "window_list | grep '^1:'" "1:0" +select_window 1 +assert "window_list | grep '^1:'" "1:1" +select_window 2 +assert "window_list | grep '^1:'" "1:2" +kill-test-session + +# Selects given window when passed a window name +create-test-session +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 + + +# When called ensure it sets the $window variable to the index of the newly +# created window. +unset window +create-test-session +test-socket-tmux new-window -t "$session:1" -n "foo" +test-socket-tmux new-window -t "$session:2" -n "bar" +select_window "foo" +assert "echo $window" "1" +select_window "bar" +assert "echo $window" "2" +select_window 1 +assert "echo $window" "1" +select_window 2 +assert "echo $window" "2" +kill-test-session +unset window + +# End of tests. +assert_end "select_window()"