summaryrefslogtreecommitdiffstats
path: root/debian/tests
diff options
context:
space:
mode:
Diffstat (limited to '')
-rw-r--r--debian/tests/control2
-rw-r--r--debian/tests/t/boilerplate.sh49
-rwxr-xr-xdebian/tests/t/command.t17
-rwxr-xr-xdebian/tests/t/create-list-quit.t9
-rwxr-xr-xdebian/tests/t/dash-Dm.t20
-rwxr-xr-xdebian/tests/t/dash-U.t9
-rwxr-xr-xdebian/tests/t/version-help.t11
7 files changed, 117 insertions, 0 deletions
diff --git a/debian/tests/control b/debian/tests/control
new file mode 100644
index 0000000..bf2a801
--- /dev/null
+++ b/debian/tests/control
@@ -0,0 +1,2 @@
+Test-Command: prove -v debian/tests/t
+Depends: @, perl
diff --git a/debian/tests/t/boilerplate.sh b/debian/tests/t/boilerplate.sh
new file mode 100644
index 0000000..8b28d59
--- /dev/null
+++ b/debian/tests/t/boilerplate.sh
@@ -0,0 +1,49 @@
+# -*- sh -*-
+
+TESTNAME=`basename $0`.`mktemp -u XXXXXXXX`
+SCREEN="screen -S $TESTNAME"
+SCREENRC=/dev/null
+export SCREENRC
+count=0
+
+check_exit_code_true() {
+ if [ "$?" != 0 ]; then echo -n 'not '; fi; echo ok $(( count+=1 )) - "$@"
+}
+
+check_exit_code_false() {
+ if [ "$?" = 0 ]; then echo -n 'not '; fi; echo ok $(( count+=1 )) - "$@"
+}
+
+has_session_with_testname() {
+ screen -ls | fgrep -q "$TESTNAME"
+}
+
+session_exists_2_tests() {
+ screen -ls | fgrep -q '(Detached)'
+ check_exit_code_true Detached session found
+
+ has_session_with_testname
+ check_exit_code_true Session has expected session name
+}
+
+create_session_3_tests() {
+ $SCREEN -d -m "$@"
+ check_exit_code_true Create session
+
+ sleep 1
+
+ session_exists_2_tests
+}
+
+kill_session_2_tests() {
+ $SCREEN -X quit
+ check_exit_code_true Quit command sent to session
+
+ has_session_with_testname
+ check_exit_code_false Session is gone
+}
+
+has_window_number_zero() {
+ $SCREEN -Q windows | egrep -q '^0 '
+ check_exit_code_true Session has a window with id 0
+}
diff --git a/debian/tests/t/command.t b/debian/tests/t/command.t
new file mode 100755
index 0000000..c59bafb
--- /dev/null
+++ b/debian/tests/t/command.t
@@ -0,0 +1,17 @@
+#!/bin/sh
+
+echo 1..4
+
+. `dirname $0`/boilerplate.sh
+
+$SCREEN -D -m -s /bin/true sleep 2 &
+check_exit_code_true Create session
+
+sleep 1
+
+session_exists_2_tests
+
+sleep 2
+
+has_session_with_testname
+check_exit_code_false Session is gone
diff --git a/debian/tests/t/create-list-quit.t b/debian/tests/t/create-list-quit.t
new file mode 100755
index 0000000..d792578
--- /dev/null
+++ b/debian/tests/t/create-list-quit.t
@@ -0,0 +1,9 @@
+#!/bin/sh
+
+echo 1..6
+
+. `dirname $0`/boilerplate.sh
+
+create_session_3_tests
+has_window_number_zero
+kill_session_2_tests
diff --git a/debian/tests/t/dash-Dm.t b/debian/tests/t/dash-Dm.t
new file mode 100755
index 0000000..1f2b391
--- /dev/null
+++ b/debian/tests/t/dash-Dm.t
@@ -0,0 +1,20 @@
+#!/bin/sh
+
+echo 1..5
+
+. `dirname $0`/boilerplate.sh
+
+$SCREEN -D -m &
+check_exit_code_true Create session
+
+sleep 1
+
+session_exists_2_tests
+
+$SCREEN -X quit
+check_exit_code_true Quit command sent to session
+
+sleep 1;
+
+has_session_with_testname
+check_exit_code_false Session is gone
diff --git a/debian/tests/t/dash-U.t b/debian/tests/t/dash-U.t
new file mode 100755
index 0000000..d8ef84c
--- /dev/null
+++ b/debian/tests/t/dash-U.t
@@ -0,0 +1,9 @@
+#!/bin/sh
+
+echo 1..6
+
+. `dirname $0`/boilerplate.sh
+
+create_session_3_tests -U
+has_window_number_zero
+kill_session_2_tests
diff --git a/debian/tests/t/version-help.t b/debian/tests/t/version-help.t
new file mode 100755
index 0000000..f6496c0
--- /dev/null
+++ b/debian/tests/t/version-help.t
@@ -0,0 +1,11 @@
+#!/bin/sh
+
+echo 1..2
+
+. `dirname $0`/boilerplate.sh
+
+screen -v | fgrep -q 'Screen version '
+check_exit_code_true Outputs version
+
+screen -h | fgrep -q 'Options:'
+check_exit_code_true Outputs help