]> git.ipfire.org Git - thirdparty/util-linux.git/commitdiff
tests: add script and scriptlive replay
authorKarel Zak <kzak@redhat.com>
Fri, 22 Nov 2019 12:48:54 +0000 (13:48 +0100)
committerKarel Zak <kzak@redhat.com>
Fri, 22 Nov 2019 12:48:54 +0000 (13:48 +0100)
Signed-off-by: Karel Zak <kzak@redhat.com>
tests/commands.sh
tests/expected/script/replay
tests/expected/script/replay-basic [new file with mode: 0644]
tests/expected/script/replay-input [new file with mode: 0644]
tests/expected/script/replay-live [new file with mode: 0644]
tests/expected/script/replay-output [new file with mode: 0644]
tests/ts/script/replay

index 9fcd488ce22305690908f41e87c05254af5f62ec..7b480dcc0b1bb8fb82c1af288c38ca87083ca359 100644 (file)
@@ -92,6 +92,7 @@ TS_CMD_RUNUSER=${TS_CMD_RUNUSER-"${ts_commandsdir}runuser"}
 TS_CMD_REV=${TS_CMD_REV:-"${ts_commandsdir}rev"}
 TS_CMD_SCRIPT=${TS_CMD_SCRIPT-"${ts_commandsdir}script"}
 TS_CMD_SCRIPTREPLAY=${TS_CMD_SCRIPTREPLAY-"${ts_commandsdir}scriptreplay"}
+TS_CMD_SCRIPTLIVE=${TS_CMD_SCRIPTLIVE-"${ts_commandsdir}scriptlive"}
 TS_CMD_SETARCH=${TS_CMD_SETARCH-"${ts_commandsdir}setarch"}
 TS_CMD_SETSID=${TS_CMD_SETSID-"${ts_commandsdir}setsid"}
 TS_CMD_SWAPLABEL=${TS_CMD_SWAPLABEL:-"${ts_commandsdir}swaplabel"}
index b2aff5e263834db440304455830a23976243c037..e69de29bb2d1d6434b8b29ae775ad8c2e48c5391 100644 (file)
@@ -1,9 +0,0 @@
-record script output with timing
-Script started, output log file is 'typescript', timing file is 'timingfile'.
-hello world\r
-all done\r
-Script done.
-replay script output
-hello world\r
-all done\r
-
diff --git a/tests/expected/script/replay-basic b/tests/expected/script/replay-basic
new file mode 100644 (file)
index 0000000..0363253
--- /dev/null
@@ -0,0 +1,9 @@
+===recording
+Script started, output log file is 'outlog', timing file is 'timingfile'.
+hello world\r
+all done\r
+Script done.
+===replaying
+hello world\r
+all done\r
+
diff --git a/tests/expected/script/replay-input b/tests/expected/script/replay-input
new file mode 100644 (file)
index 0000000..8da6ed2
--- /dev/null
@@ -0,0 +1,4 @@
+===recording
+===replaying
+echo "result is $(($NUMBER + 1))"
+
diff --git a/tests/expected/script/replay-live b/tests/expected/script/replay-live
new file mode 100644 (file)
index 0000000..9e15b1b
--- /dev/null
@@ -0,0 +1,7 @@
+>>> scriptlive: Starting your typescript execution by /bin/bash.
+echo "result is $(($NUMBER + 1))"\r
+$ echo "result is $(($NUMBER + 1))"\r
+result is 124\r
+$ exit\r
+
+>>> scriptlive: done.
diff --git a/tests/expected/script/replay-output b/tests/expected/script/replay-output
new file mode 100644 (file)
index 0000000..4aace29
--- /dev/null
@@ -0,0 +1,7 @@
+===recording
+Script started, output log file is 'outlog', timing file is 'timingfile'.
+result is 2\r
+Script done.
+===replaying
+result is 2\r
+
index bd46b22fbd57dd031069d68c3f5066a153d7d957..fc8e80d849f371852f1dda54669858dbcde3e665 100755 (executable)
@@ -20,19 +20,78 @@ ts_init "$*"
 
 ts_check_test_command "$TS_CMD_SCRIPT"
 ts_check_test_command "$TS_CMD_SCRIPTREPLAY"
+ts_check_test_command "$TS_CMD_SCRIPTLIVE"
 
-SCRIPT_FILE="$(mktemp "${TS_OUTDIR}/scXXXXXXXXXXXXX")"
-TIMING_FILE="$(mktemp "${TS_OUTDIR}/tmXXXXXXXXXXXXX")"
+LOG_OUT_FILE="${TS_OUTDIR}/${TS_TESTNAME}-logfile-out"
+LOG_IN_FILE="${TS_OUTDIR}/${TS_TESTNAME}-logfile-in"
+LOG_IO_FILE="${TS_OUTDIR}/${TS_TESTNAME}-logfile-io"
+TIMING_FILE="${TS_OUTDIR}/${TS_TESTNAME}-logfile-tm"
 
-echo "record script output with timing" >"$TS_OUTPUT"
-"$TS_CMD_SCRIPT" -c "echo hello world; sleep 0.5; echo all done" \
-       --timing="$TIMING_FILE" "$SCRIPT_FILE" >> $TS_OUTPUT 2>> $TS_ERRLOG
+rm -f $TIMING_FILE $LOG_IN_FILE $LOG_OUT_FILE $LOG_IO_FILE
 
-echo "replay script output" >>"$TS_OUTPUT"
-"$TS_CMD_SCRIPTREPLAY" "$TIMING_FILE" "$SCRIPT_FILE" 1.5 >> $TS_OUTPUT 2>> $TS_ERRLOG
 
-sed -i "s|$SCRIPT_FILE|typescript|g; s|$TIMING_FILE|timingfile|g" $TS_OUTPUT $TS_ERRLOG
+#
+# Old command line format
+#
+ts_init_subtest "basic"
+echo "===recording" >"$TS_OUTPUT"
+$TS_CMD_SCRIPT \
+       --command "echo hello world; sleep 0.5; echo all done" \
+       --timing="$TIMING_FILE" \
+       "$LOG_OUT_FILE" >> $TS_OUTPUT 2>> $TS_ERRLOG
+
+echo "===replaying" >>"$TS_OUTPUT"
+$TS_CMD_SCRIPTREPLAY "$TIMING_FILE" "$LOG_OUT_FILE" 1.5 >> $TS_OUTPUT 2>> $TS_ERRLOG
+
+sed -i "s|$TIMING_FILE|timingfile|g; s|$LOG_OUT_FILE|outlog|g" $TS_OUTPUT $TS_ERRLOG
+ts_finalize_subtest
+
+
+#
+# New command line format
+#
+ts_init_subtest "output"
+echo "===recording" >"$TS_OUTPUT"
+NUMBER=1 $TS_CMD_SCRIPT \
+        --command 'echo "result is $(($NUMBER + 1))"' \
+       --log-out "$LOG_OUT_FILE" \
+       --log-timing "$TIMING_FILE"    >> $TS_OUTPUT 2>> $TS_ERRLOG
+
+echo "===replaying" >>"$TS_OUTPUT"
+$TS_CMD_SCRIPTREPLAY \
+       --log-out "$LOG_OUT_FILE" \
+       --log-timing "$TIMING_FILE" >> $TS_OUTPUT 2>> $TS_ERRLOG
 
-rm -f "$SCRIPT_FILE" "$TIMING_FILE"
+sed -i "s|$TIMING_FILE|timingfile|g; s|$LOG_OUT_FILE|outlog|g" $TS_OUTPUT $TS_ERRLOG
+ts_finalize_subtest
+
+
+#
+# Log input
+#
+ts_init_subtest "input"
+echo "===recording" >"$TS_OUTPUT"
+echo 'echo "result is $(($NUMBER + 1))"' | $TS_CMD_SCRIPT \
+       --command 'sh' \
+       --log-in "$LOG_IN_FILE" \
+       --log-timing "$TIMING_FILE" >> /dev/null 2>> $TS_ERRLOG
+
+echo "===replaying" >>"$TS_OUTPUT"
+$TS_CMD_SCRIPTREPLAY \
+       --log-in "$LOG_IN_FILE" \
+       --log-timing "$TIMING_FILE" >> $TS_OUTPUT 2>> $TS_ERRLOG
+ts_finalize_subtest
+
+
+#
+# Live replay 
+#
+ts_init_subtest "live"
+NUMBER=123 $TS_CMD_SCRIPTLIVE \
+       --command 'sh --posix' \
+       --log-in "$LOG_IN_FILE" \
+       --log-timing "$TIMING_FILE" >> $TS_OUTPUT 2>> $TS_ERRLOG
+sed -i 's/sh-[[:alnum:]\.]*//g' $TS_OUTPUT
+ts_finalize_subtest
 
 ts_finalize