aboutsummaryrefslogtreecommitdiff
path: root/regress
diff options
context:
space:
mode:
Diffstat (limited to 'regress')
-rw-r--r--regress/Makefile9
-rw-r--r--regress/capture-pane-sgr0.sh24
-rw-r--r--regress/control-client-size.sh49
-rw-r--r--regress/format-strings.sh183
-rw-r--r--regress/has-session-return.sh19
-rw-r--r--regress/if-shell-TERM.sh30
-rw-r--r--regress/if-shell-error.sh26
-rw-r--r--regress/if-shell-nested.sh25
-rw-r--r--regress/kill-session-process-exit.sh21
-rw-r--r--regress/new-session-base-index.sh27
-rw-r--r--regress/new-session-command.sh25
-rw-r--r--regress/new-session-environment.sh66
-rw-r--r--regress/new-session-no-client.sh25
-rw-r--r--regress/new-session-size.sh27
-rw-r--r--regress/new-window-command.sh26
15 files changed, 582 insertions, 0 deletions
diff --git a/regress/Makefile b/regress/Makefile
new file mode 100644
index 00000000..3775a711
--- /dev/null
+++ b/regress/Makefile
@@ -0,0 +1,9 @@
+TESTS!= echo *.sh
+
+.PHONY: all $(TESTS)
+.NOTPARALLEL: all $(TESTS)
+
+all: $(TESTS)
+
+$(TESTS):
+ sh $*.sh
diff --git a/regress/capture-pane-sgr0.sh b/regress/capture-pane-sgr0.sh
new file mode 100644
index 00000000..79d96a38
--- /dev/null
+++ b/regress/capture-pane-sgr0.sh
@@ -0,0 +1,24 @@
+#!/bin/sh
+
+# 884
+# capture-pane should send colours after SGR 0
+
+PATH=/bin:/usr/bin
+TERM=screen
+
+[ -z "$TEST_TMUX" ] && TEST_TMUX=$(readlink -f ../tmux)
+TMUX="$TEST_TMUX -Ltest"
+$TMUX kill-server 2>/dev/null
+
+TMP=$(mktemp)
+trap "rm -f $TMP" 0 1 15
+
+$TMUX -f/dev/null new -d \
+ "printf '\033[31;42;1mabc\033[0;31mdef'; $TMUX capturep -peS0 -E0 >$TMP"
+sleep 1
+printf '\033[1m\033[31m\033[42mabc\033[0m\033[31m\033[49mdef\033[39m\n'| \
+ cmp - $TMP || exit 1
+
+$TMUX has 2>/dev/null && exit 1
+
+exit 0
diff --git a/regress/control-client-size.sh b/regress/control-client-size.sh
new file mode 100644
index 00000000..55f7eed1
--- /dev/null
+++ b/regress/control-client-size.sh
@@ -0,0 +1,49 @@
+#!/bin/sh
+
+# 947
+# size in control mode should change after refresh-client -C, and -x and -y
+# should work without -d for control clients
+
+PATH=/bin:/usr/bin
+TERM=screen
+
+[ -z "$TEST_TMUX" ] && TEST_TMUX=$(readlink -f ../tmux)
+TMUX="$TEST_TMUX -Ltest"
+$TMUX kill-server 2>/dev/null
+
+TMP=$(mktemp)
+OUT=$(mktemp)
+#trap "rm -f $TMP $OUT" 0 1 15
+
+$TMUX -f/dev/null new -d || exit 1
+sleep 1
+cat <<EOF|$TMUX -C a >$TMP
+ls -F':#{session_width} #{session_height}'
+refresh -C 100,50
+ls -F':#{session_width} #{session_height}'
+EOF
+grep ^: $TMP >$OUT
+printf ":80 24\n:100 50\n"|cmp -s $OUT - || exit 1
+$TMUX kill-server 2>/dev/null
+
+$TMUX -f/dev/null new -d || exit 1
+sleep 1
+cat <<EOF|$TMUX -C a >$TMP
+ls -F':#{session_width} #{session_height}'
+refresh -C 80,24
+ls -F':#{session_width} #{session_height}'
+EOF
+grep ^: $TMP >$OUT
+printf ":80 24\n:80 24\n"|cmp -s $OUT - || exit 1
+$TMUX kill-server 2>/dev/null
+
+cat <<EOF|$TMUX -C new -x 100 -y 50 >$TMP
+ls -F':#{session_width} #{session_height}'
+refresh -C 80,24
+ls -F':#{session_width} #{session_height}'
+EOF
+grep ^: $TMP >$OUT
+printf ":100 50\n:80 24\n"|cmp -s $OUT - || exit 1
+$TMUX kill-server 2>/dev/null
+
+exit 0
diff --git a/regress/format-strings.sh b/regress/format-strings.sh
new file mode 100644
index 00000000..726b46bc
--- /dev/null
+++ b/regress/format-strings.sh
@@ -0,0 +1,183 @@
+#!/bin/sh
+
+# Tests of formats as described in tmux(1) FORMATS
+
+PATH=/bin:/usr/bin
+TERM=screen
+
+[ -z "$TEST_TMUX" ] && TEST_TMUX=$(readlink -f ../tmux)
+TMUX="$TEST_TMUX -Ltest"
+
+# test_format $format $expected_result
+test_format()
+{
+ fmt="$1"
+ exp="$2"
+
+ out=$($TMUX display-message -p "$fmt")
+
+ if [ "$out" != "$exp" ]; then
+ echo "Format test failed for '$fmt'."
+ echo "Expected: '$exp'"
+ echo "But got '$out'"
+ exit 1
+ fi
+}
+
+# test_conditional_with_pane_in_mode $format $exp1 $exp2
+#
+# Tests the format string $format to yield $exp1 if #{pane_in_mode} is true and
+# $exp2 when #{pane_in_mode} is false.
+test_conditional_with_pane_in_mode()
+{
+ fmt="$1"
+ exp_true="$2"
+ exp_false="$3"
+
+ $TMUX copy-mode # enter copy mode
+ test_format "$fmt" "$exp_true"
+ $TMUX send-keys -X cancel # leave copy mode
+ test_format "$fmt" "$exp_false"
+}
+
+# test_conditional_with_session_name #format $exp_summer $exp_winter
+#
+# Tests the format string $format to yield $exp_summer if the session name is
+# 'Summer' and $exp_winter if the session name is 'Winter'.
+test_conditional_with_session_name()
+{
+ fmt="$1"
+ exp_summer="$2"
+ exp_winter="$3"
+
+ $TMUX rename-session "Summer"
+ test_format "$fmt" "$exp_summer"
+ $TMUX rename-session "Winter"
+ test_format "$fmt" "$exp_winter"
+ $TMUX rename-session "Summer" # restore default
+}
+
+
+$TMUX kill-server 2>/dev/null
+$TMUX -f/dev/null new-session -d || exit 1
+$TMUX rename-session "Summer" || exit 1 # used later in conditionals
+
+# Plain string without substitutions et al
+test_format "abc xyz" "abc xyz"
+
+# Test basic escapes for "#", "{", "#{" "}", "#}", ","
+test_format "##" "#"
+test_format "#," ","
+test_format "{" "{"
+test_format "##{" "#{"
+test_format "#}" "}"
+test_format "###}" "#}" # not a "basic" one but interesting nevertheless
+
+# Simple expansion
+test_format "#{pane_in_mode}" "0"
+
+# Simple conditionals
+test_conditional_with_pane_in_mode "#{?pane_in_mode,abc,xyz}" "abc" "xyz"
+
+# Expansion in conditionals
+test_conditional_with_pane_in_mode "#{?pane_in_mode,#{session_name},xyz}" "Summer" "xyz"
+
+# Basic escapes in conditionals
+# First argument
+test_conditional_with_pane_in_mode "#{?pane_in_mode,##,xyz}" "#" "xyz"
+test_conditional_with_pane_in_mode "#{?pane_in_mode,#,,xyz}" "," "xyz"
+test_conditional_with_pane_in_mode "#{?pane_in_mode,{,xyz}" "{" "xyz"
+test_conditional_with_pane_in_mode "#{?pane_in_mode,##{,xyz}" "#{" "xyz"
+test_conditional_with_pane_in_mode "#{?pane_in_mode,#},xyz}" "}" "xyz"
+# not a "basic" one but interesting nevertheless
+test_conditional_with_pane_in_mode "#{?pane_in_mode,###},xyz}" "#}" "xyz"
+# Second argument
+test_conditional_with_pane_in_mode "#{?pane_in_mode,abc,##}" "abc" "#"
+test_conditional_with_pane_in_mode "#{?pane_in_mode,abc,#,}" "abc" ","
+test_conditional_with_pane_in_mode "#{?pane_in_mode,abc,{}" "abc" "{"
+test_conditional_with_pane_in_mode "#{?pane_in_mode,abc,##{}" "abc" "#{"
+test_conditional_with_pane_in_mode "#{?pane_in_mode,abc,#}}" "abc" "}"
+# not a "basic" one but interesting nevertheless
+test_conditional_with_pane_in_mode "#{?pane_in_mode,abc,###}}" "abc" "#}"
+# mixed
+test_conditional_with_pane_in_mode "#{?pane_in_mode,{,#}}" "{" "}"
+test_conditional_with_pane_in_mode "#{?pane_in_mode,#},{}" "}" "{"
+test_conditional_with_pane_in_mode "#{?pane_in_mode,##{,###}}" "#{" "#}"
+test_conditional_with_pane_in_mode "#{?pane_in_mode,###},##{}" "#}" "#{"
+
+# Conditionals split on the second comma (this is not documented)
+test_conditional_with_pane_in_mode "#{?pane_in_mode,abc,xyz,bonus}" "abc" "xyz,bonus"
+
+# Curly brackets {...} do not capture a comma inside of conditionals as the
+# conditional ends on the first '}'
+test_conditional_with_pane_in_mode "#{?pane_in_mode,{abc,xyz},bonus}" "{abc,bonus}" "xyz,bonus}"
+
+# Substitutions '#{...}' capture the comma
+# invalid format: #{abc,xyz} is not a known variable name.
+#test_conditional_with_pane_in_mode "#{?pane_in_mode,#{abc,xyz},bonus}" "" "bonus"
+
+# Parenthesis (...) do not captura a comma
+test_conditional_with_pane_in_mode "#{?pane_in_mode,(abc,xyz),bonus}" "(abc" "xyz),bonus"
+test_conditional_with_pane_in_mode "#{?pane_in_mode,(abc#,xyz),bonus}" "(abc,xyz)" "bonus"
+
+# Brackets [...] do not captura a comma
+test_conditional_with_pane_in_mode "#{?pane_in_mode,[abc,xyz],bonus}" "[abc" "xyz],bonus"
+test_conditional_with_pane_in_mode "#{?pane_in_mode,[abc#,xyz],bonus}" "[abc,xyz]" "bonus"
+
+
+# Escape comma inside of #(...)
+# Note: #() commands are run asynchronous and are substituted with result of the
+# *previous* run or a placeholder (like "<'echo ,' not ready") if the command
+# has not been run before. The format is updated as soon as the command
+# finishes. As we are printing the message only once it never gets updated
+# and the displayed message is "<'echo ,' not ready>"
+test_format "#{?pane_in_mode,#(echo #,),xyz}" "xyz"
+test_conditional_with_pane_in_mode "#{?pane_in_mode,#(echo #,),xyz}" "<'echo ,' not ready>" "xyz"
+# This caching does not work :-(
+#$TMUX display-message -p "#(echo #,)" > /dev/null
+#test_conditional_with_pane_in_mode "#{?pane_in_mode,#(echo #,),xyz}" "," "xyz"
+#test_conditional_with_pane_in_mode "#{?pane_in_mode,#(echo #,),xyz}" "," "xyz"
+
+# invalid format: '#(' is not closed in the first argument of #{?,,}.
+#test_conditional_with_pane_in_mode "#{?pane_in_mode,#(echo ,),xyz}" "" "),xyz"
+
+# Escape comma inside of #[...]
+test_conditional_with_pane_in_mode "#{?pane_in_mode,#[fg=default#,bg=default]abc,xyz}" "#[fg=default,bg=default]abc" "xyz"
+# invalid format: '#[' is not closed in the first argument of #{?,,}
+#test_conditional_with_pane_in_mode "#{?pane_in_mode,#[fg=default,bg=default]abc,xyz}" "" "bg=default]abc,xyz"
+
+# Conditionals with comparison
+test_conditional_with_session_name "#{?#{==:#{session_name},Summer},abc,xyz}" "abc" "xyz"
+# Conditionals with comparison and escaped commas
+$TMUX rename-session ","
+test_format "#{?#{==:#,,#{session_name}},abc,xyz}" "abc"
+$TMUX rename-session "Summer" # reset to default
+
+# Conditional in conditional
+test_conditional_with_pane_in_mode "#{?pane_in_mode,#{?#{==:#{session_name},Summer},ABC,XYZ},xyz}" "ABC" "xyz"
+test_conditional_with_session_name "#{?pane_in_mode,#{?#{==:#{session_name},Summer},ABC,XYZ},xyz}" "xyz" "xyz"
+
+test_conditional_with_pane_in_mode "#{?pane_in_mode,abc,#{?#{==:#{session_name},Summer},ABC,XYZ}}" "abc" "ABC"
+test_conditional_with_session_name "#{?pane_in_mode,abc,#{?#{==:#{session_name},Summer},ABC,XYZ}}" "ABC" "XYZ"
+
+# Some fancy stackings
+test_conditional_with_pane_in_mode "#{?#{==:#{?pane_in_mode,#{session_name},#(echo Spring)},Summer},abc,xyz}" "abc" "xyz"
+
+
+
+# Format test for the literal option
+# Note: The behavior for #{l:...} with escapes is sometimes weird as #{l:...}
+# respects the escapes.
+test_format "#{l:#{}}" "#{}"
+test_format "#{l:#{pane_in_mode}}" "#{pane_in_mode}"
+test_format "#{l:#{?pane_in_mode,#{?#{==:#{session_name},Summer},ABC,XYZ},xyz}}" "#{?pane_in_mode,#{?#{==:#{session_name},Summer},ABC,XYZ},xyz}"
+
+# With escapes (which escape but are returned literally)
+test_format "#{l:##{}" "##{"
+test_format "#{l:#{#}}}" "#{#}}"
+
+# Invalid formats:
+#test_format "#{l:#{}" ""
+#test_format "#{l:#{#}}" ""
+
+exit 0
diff --git a/regress/has-session-return.sh b/regress/has-session-return.sh
new file mode 100644
index 00000000..5cc30f05
--- /dev/null
+++ b/regress/has-session-return.sh
@@ -0,0 +1,19 @@
+#!/bin/sh
+
+# 971
+# has-session should return 1 on error
+
+PATH=/bin:/usr/bin
+TERM=screen
+
+[ -z "$TEST_TMUX" ] && TEST_TMUX=$(readlink -f ../tmux)
+TMUX="$TEST_TMUX -Ltest"
+$TMUX kill-server 2>/dev/null
+
+$TMUX -f/dev/null has -tfoo </dev/null 2>/dev/null && exit 1
+$TMUX -f/dev/null start\; has -tfoo </dev/null 2>/dev/null && exit 1
+$TMUX -f/dev/null new -d\; has -tfoo </dev/null 2>/dev/null && exit 1
+$TMUX -f/dev/null new -dsfoo\; has -tfoo </dev/null 2>/dev/null || exit 1
+$TMUX kill-server 2>/dev/null
+
+exit 0
diff --git a/regress/if-shell-TERM.sh b/regress/if-shell-TERM.sh
new file mode 100644
index 00000000..5967a58f
--- /dev/null
+++ b/regress/if-shell-TERM.sh
@@ -0,0 +1,30 @@
+#!/bin/sh
+
+# 882
+# TERM should come from outside tmux for if-shell from the config file
+
+PATH=/bin:/usr/bin
+TERM=screen
+
+[ -z "$TEST_TMUX" ] && TEST_TMUX=$(readlink -f ../tmux)
+TMUX="$TEST_TMUX -Ltest"
+$TMUX kill-server 2>/dev/null
+
+TMP=$(mktemp)
+trap "rm -f $TMP" 0 1 15
+
+cat <<EOF >$TMP
+if '[ "\$TERM" = "xterm" ]' \
+ 'set -g default-terminal "vt220"' \
+ 'set -g default-terminal "ansi"'
+EOF
+
+TERM=xterm $TMUX -f$TMP new -d "echo \"#\$TERM\" >>$TMP" || exit 1
+sleep 1 && [ "$(tail -1 $TMP)" = "#vt220" ] || exit 1
+
+TERM=screen $TMUX -f$TMP new -d "echo \"#\$TERM\" >>$TMP" || exit 1
+sleep 1 && [ "$(tail -1 $TMP)" = "#ansi" ] || exit 1
+
+$TMUX has 2>/dev/null && exit 1
+
+exit 0
diff --git a/regress/if-shell-error.sh b/regress/if-shell-error.sh
new file mode 100644
index 00000000..24dc578e
--- /dev/null
+++ b/regress/if-shell-error.sh
@@ -0,0 +1,26 @@
+#!/bin/sh
+
+# 883
+# if-shell with an error should not core :-)
+
+PATH=/bin:/usr/bin
+TERM=screen
+
+[ -z "$TEST_TMUX" ] && TEST_TMUX=$(readlink -f ../tmux)
+TMUX="$TEST_TMUX -Ltest"
+$TMUX kill-server 2>/dev/null
+
+TMP=$(mktemp)
+trap "rm -f $TMP" 0 1 15
+
+cat <<EOF >$TMP
+if 'true' 'wibble wobble'
+EOF
+
+$TMUX -f$TMP new -d || exit 1
+sleep 1
+E=$($TMUX display -p '#{pane_in_mode}')
+$TMUX kill-server 2>/dev/null
+[ "$E" = "1" ] || exit 1
+
+exit 0
diff --git a/regress/if-shell-nested.sh b/regress/if-shell-nested.sh
new file mode 100644
index 00000000..976c6738
--- /dev/null
+++ b/regress/if-shell-nested.sh
@@ -0,0 +1,25 @@
+#!/bin/sh
+
+# 882
+# tmux inside if-shell itself should work
+
+PATH=/bin:/usr/bin
+TERM=screen
+
+[ -z "$TEST_TMUX" ] && TEST_TMUX=$(readlink -f ../tmux)
+TMUX="$TEST_TMUX -Ltest"
+$TMUX kill-server 2>/dev/null
+
+TMP=$(mktemp)
+trap "rm -f $TMP" 0 1 15
+
+cat <<EOF >$TMP
+if '$TMUX run "true"' 'set -s @done yes'
+EOF
+
+TERM=xterm $TMUX -f$TMP new -d "$TMUX show -vs @done >>$TMP" || exit 1
+sleep 1 && [ "$(tail -1 $TMP)" = "yes" ] || exit 1
+
+$TMUX has 2>/dev/null && exit 1
+
+exit 0
diff --git a/regress/kill-session-process-exit.sh b/regress/kill-session-process-exit.sh
new file mode 100644
index 00000000..27d883e2
--- /dev/null
+++ b/regress/kill-session-process-exit.sh
@@ -0,0 +1,21 @@
+#!/bin/sh
+
+# when we kill a session, processes running in it should be killed
+
+PATH=/bin:/usr/bin
+TERM=screen
+
+[ -z "$TEST_TMUX" ] && TEST_TMUX=$(readlink -f ../tmux)
+TMUX="$TEST_TMUX -Ltest"
+$TMUX kill-server 2>/dev/null
+
+$TMUX new -d 'sleep 1000' || exit 1
+P=$($TMUX display -pt0:0.0 '#{pane_pid}')
+$TMUX new -d || exit 1
+sleep 1
+$TMUX kill-session -t0:
+sleep 1
+kill -0 $P 2>/dev/null && exit 1
+$TMUX kill-server 2>/dev/null
+
+exit 0
diff --git a/regress/new-session-base-index.sh b/regress/new-session-base-index.sh
new file mode 100644
index 00000000..337037c3
--- /dev/null
+++ b/regress/new-session-base-index.sh
@@ -0,0 +1,27 @@
+#!/bin/sh
+
+# new session base-index
+
+PATH=/bin:/usr/bin
+TERM=screen
+
+[ -z "$TEST_TMUX" ] && TEST_TMUX=$(readlink -f ../tmux)
+TMUX="$TEST_TMUX -Ltest"
+$TMUX kill-server 2>/dev/null
+
+TMP=$(mktemp)
+trap "rm -f $TMP" 0 1 15
+
+cat <<EOF >$TMP
+set -g base-index 100
+new
+set base-index 200
+neww
+EOF
+
+$TMUX -f$TMP start
+echo $($TMUX lsw -F'#{window_index}') >$TMP
+(echo "100 200"|cmp -s - $TMP) || exit 1
+$TMUX kill-server 2>/dev/null
+
+exit 0
diff --git a/regress/new-session-command.sh b/regress/new-session-command.sh
new file mode 100644
index 00000000..02ba55d9
--- /dev/null
+++ b/regress/new-session-command.sh
@@ -0,0 +1,25 @@
+#!/bin/sh
+
+# new session command
+
+PATH=/bin:/usr/bin
+TERM=screen
+
+[ -z "$TEST_TMUX" ] && TEST_TMUX=$(readlink -f ../tmux)
+TMUX="$TEST_TMUX -Ltest"
+$TMUX kill-server 2>/dev/null
+
+TMP=$(mktemp)
+trap "rm -f $TMP" 0 1 15
+
+cat <<EOF >$TMP
+new sleep 101
+new -- sleep 102
+new "sleep 103"
+EOF
+
+$TMUX -f$TMP start
+[ $($TMUX ls|wc -l) -eq 3 ] || exit 1
+$TMUX kill-server 2>/dev/null
+
+exit 0
diff --git a/regress/new-session-environment.sh b/regress/new-session-environment.sh
new file mode 100644
index 00000000..d53f204e
--- /dev/null
+++ b/regress/new-session-environment.sh
@@ -0,0 +1,66 @@
+#!/bin/sh
+
+# new session environment
+
+PATH=/bin:/usr/bin
+TERM=screen
+
+[ -z "$TEST_TMUX" ] && TEST_TMUX=$(readlink -f ../tmux)
+TMUX="$TEST_TMUX -Ltest"
+$TMUX kill-server 2>/dev/null
+
+TMP=$(mktemp)
+OUT=$(mktemp)
+SCRIPT=$(mktemp)
+trap "rm -f $TMP $OUT $SCRIPT" 0 1 15
+
+cat <<EOF >$SCRIPT
+(
+echo TERM=\$TERM
+echo PWD=\$(pwd)
+echo PATH=\$PATH
+echo SHELL=\$SHELL
+echo TEST=\$TEST
+) >$OUT
+EOF
+
+cat <<EOF >$TMP
+new -- /bin/sh $SCRIPT
+EOF
+
+(cd /; env -i TERM=ansi TEST=test1 PATH=1 SHELL=/bin/sh \
+ $TMUX -f$TMP start) || exit 1
+sleep 1
+(cat <<EOF|cmp -s - $OUT) || exit 1
+TERM=screen
+PWD=/
+PATH=1
+SHELL=/bin/sh
+TEST=test1
+EOF
+
+(cd /; env -i TERM=ansi TEST=test2 PATH=2 SHELL=/bin/sh \
+ $TMUX -f$TMP new -d -- /bin/sh $SCRIPT) || exit 1
+sleep 1
+(cat <<EOF|cmp -s - $OUT) || exit 1
+TERM=screen
+PWD=/
+PATH=2
+SHELL=/bin/sh
+TEST=test2
+EOF
+
+(cd /; env -i TERM=ansi TEST=test3 PATH=3 SHELL=/bin/sh \
+ $TMUX -f/dev/null new -d source $TMP) || exit 1
+sleep 1
+(cat <<EOF|cmp -s - $OUT) || exit 1
+TERM=screen
+PWD=/
+PATH=2
+SHELL=/bin/sh
+TEST=test2
+EOF
+
+$TMUX kill-server 2>/dev/null
+
+exit 0
diff --git a/regress/new-session-no-client.sh b/regress/new-session-no-client.sh
new file mode 100644
index 00000000..88c064cd
--- /dev/null
+++ b/regress/new-session-no-client.sh
@@ -0,0 +1,25 @@
+#!/bin/sh
+
+# 869
+# new with no client (that is, from the config file) should imply -d and
+# not attach
+
+PATH=/bin:/usr/bin
+TERM=screen
+
+[ -z "$TEST_TMUX" ] && TEST_TMUX=$(readlink -f ../tmux)
+TMUX="$TEST_TMUX -Ltest"
+$TMUX kill-server 2>/dev/null
+
+TMP=$(mktemp)
+trap "rm -f $TMP" 0 1 15
+
+cat <<EOF >$TMP
+new -stest
+EOF
+
+$TMUX -f$TMP start || exit 1
+sleep 1 && $TMUX has -t=test: || exit 1
+$TMUX kill-server 2>/dev/null
+
+exit 0
diff --git a/regress/new-session-size.sh b/regress/new-session-size.sh
new file mode 100644
index 00000000..5493054b
--- /dev/null
+++ b/regress/new-session-size.sh
@@ -0,0 +1,27 @@
+#!/bin/sh
+
+# new-session without clients should be the right size
+
+PATH=/bin:/usr/bin
+TERM=screen
+
+[ -z "$TEST_TMUX" ] && TEST_TMUX=$(readlink -f ../tmux)
+TMUX="$TEST_TMUX -Ltest"
+$TMUX kill-server 2>/dev/null
+
+TMP=$(mktemp)
+trap "rm -f $TMP" 0 1 15
+
+$TMUX -f/dev/null new -d </dev/null || exit 1
+sleep 1
+$TMUX ls -F "#{session_width} #{session_height}" >$TMP
+printf "80 24\n"|cmp -s $TMP - || exit 1
+$TMUX kill-server 2>/dev/null
+
+$TMUX -f/dev/null new -d -x 100 -y 50 </dev/null || exit 1
+sleep 1
+$TMUX ls -F "#{session_width} #{session_height}" >$TMP
+printf "100 50\n"|cmp -s $TMP - || exit 1
+$TMUX kill-server 2>/dev/null
+
+exit 0
diff --git a/regress/new-window-command.sh b/regress/new-window-command.sh
new file mode 100644
index 00000000..176bffb5
--- /dev/null
+++ b/regress/new-window-command.sh
@@ -0,0 +1,26 @@
+#!/bin/sh
+
+# new session command
+
+PATH=/bin:/usr/bin
+TERM=screen
+
+[ -z "$TEST_TMUX" ] && TEST_TMUX=$(readlink -f ../tmux)
+TMUX="$TEST_TMUX -Ltest"
+$TMUX kill-server 2>/dev/null
+
+TMP=$(mktemp)
+trap "rm -f $TMP" 0 1 15
+
+cat <<EOF >$TMP
+new
+neww sleep 101
+neww -- sleep 102
+neww "sleep 103"
+EOF
+
+$TMUX -f$TMP start
+[ $($TMUX lsw|wc -l) -eq 4 ] || exit 1
+$TMUX kill-server 2>/dev/null
+
+exit 0