if HAVE_UTEMPTER
script_LDADD += -lutempter
endif
+
+check_PROGRAMS += test_script
+test_script_SOURCES = $(script_SOURCES)
+test_script_LDADD = $(script_LDADD)
+test_script_CFLAGS = -DTEST_SCRIPT $(logger_CFLAGS)
endif # BUILD_SCRIPT
if BUILD_SCRIPTREPLAY
int die;
int resized;
+/*
+ * For tests we want to be able to control time output
+ */
+#ifdef TEST_SCRIPT
+static inline time_t script_time(time_t *t)
+{
+ const char *str = getenv("SCRIPT_TEST_SECOND_SINCE_EPOCH");
+ time_t sec;
+
+ if (str && sscanf(str, "%ld", &sec) == 1)
+ return sec;
+ return time(t);
+}
+#else /* !TEST_SCRIPT */
+# define script_time(x) time(x)
+#endif
+
static void
die_if_link(char *fn) {
struct stat s;
timingfd = fdopen(STDERR_FILENO, "w");
if (!qflg) {
- time_t tvec = time((time_t *)NULL);
+ time_t tvec = script_time((time_t *)NULL);
my_strftime(obuf, sizeof obuf, "%c\n", localtime(&tvec));
fprintf(fscript, _("Script started on %s"), obuf);
}
if (fscript) {
if (!qflg) {
char buf[BUFSIZ];
- tvec = time((time_t *)NULL);
+ tvec = script_time((time_t *)NULL);
my_strftime(buf, sizeof buf, "%c\n", localtime(&tvec));
fprintf(fscript, _("\nScript done on %s"), buf);
}
TS_HELPER_MORE=${TS_HELPER_MORE-"$top_builddir/test_more"}
TS_HELPER_PARTITIONS="$top_builddir/sample-partitions"
TS_HELPER_PATHS="$top_builddir/test_pathnames"
+TS_HELPER_SCRIPT="$top_builddir/test_script"
TS_HELPER_SIGRECEIVE="$top_builddir/test_sigreceive"
TS_HELPER_STRUTILS="$top_builddir/test_strutils"
TS_HELPER_SYSINFO="$top_builddir/test_sysinfo"
--- /dev/null
+Script started on Sun May 24 17:43:18 2015
+append1\r
+
+Script done on Sun May 24 17:43:18 2015
+Script started on Sun May 24 17:43:18 2015
+append2\r
+
+Script done on Sun May 24 17:43:18 2015
--- /dev/null
+test_script: output file `typescript' is a link
+Use --force if you really want to use it.
+Program not started.
+1
+Script started on Sun May 24 17:43:18 2015
+with force\r
+
+Script done on Sun May 24 17:43:18 2015
+0
+Script started on Sun May 24 17:43:18 2015
+not typescript\r
+
+Script done on Sun May 24 17:43:18 2015
+0
--- /dev/null
+Script started on Sun May 24 17:43:18 2015
+quiet1\r
+Script started on Sun May 24 17:43:18 2015
+quiet2\r
--- /dev/null
+Script started on Sun May 24 17:43:18 2015
+
+Script done on Sun May 24 17:43:18 2015
+0
+Script started on Sun May 24 17:43:18 2015
+
+Script done on Sun May 24 17:43:18 2015
+0
+Script started on Sun May 24 17:43:18 2015
+
+Script done on Sun May 24 17:43:18 2015
+42
+Script started on Sun May 24 17:43:18 2015
+
+Script done on Sun May 24 17:43:18 2015
+127
--- /dev/null
+#!/bin/bash
+
+# This file is part of util-linux.
+#
+# This file is free software; you can redistribute it and/or modify
+# it under the terms of the GNU General Public License as published by
+# the Free Software Foundation; either version 2 of the License, or
+# (at your option) any later version.
+#
+# This file is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+# GNU General Public License for more details.
+
+TS_TOPDIR="${0%/*}/../.."
+TS_DESC="options"
+
+. $TS_TOPDIR/functions.sh
+ts_init "$*"
+
+export SCRIPT_TEST_SECOND_SINCE_EPOCH=1432489398
+export TZ="GMT"
+
+ts_check_test_command "$TS_HELPER_SCRIPT"
+
+ts_init_subtest "append"
+$TS_HELPER_SCRIPT --command "echo append1" $TS_OUTPUT </dev/null >/dev/null 2>&1
+$TS_HELPER_SCRIPT --append -c "echo append2" $TS_OUTPUT </dev/null >/dev/null 2>&1
+ts_finalize_subtest
+
+ts_init_subtest "force"
+ln -s $TS_OUTPUT typescript
+$TS_HELPER_SCRIPT --command "echo no force" </dev/null >/dev/null 2>> $TS_OUTPUT
+echo $? >> $TS_OUTPUT
+$TS_HELPER_SCRIPT -a --force --command "echo with force" </dev/null >/dev/null
+echo $? >> $TS_OUTPUT
+rm -f typescript
+ln -s $TS_OUTPUT tpircsepyt
+$TS_HELPER_SCRIPT -a --command "echo not typescript" tpircsepyt </dev/null >/dev/null
+echo $? >> $TS_OUTPUT
+rm -f tpircsepyt
+ts_finalize_subtest
+
+ts_init_subtest "quiet"
+$TS_HELPER_SCRIPT --quiet --command "echo quiet1" $TS_OUTPUT </dev/null >/dev/null 2>&1
+$TS_HELPER_SCRIPT -a -q --command "echo quiet2" $TS_OUTPUT </dev/null >/dev/null 2>&1
+ts_finalize_subtest
+
+ts_init_subtest "return"
+$TS_HELPER_SCRIPT --command "exit 1" $TS_OUTPUT </dev/null >/dev/null 2>&1
+echo $? >> $TS_OUTPUT
+$TS_HELPER_SCRIPT -a --command "exit 0" $TS_OUTPUT </dev/null >/dev/null 2>&1
+echo $? >> $TS_OUTPUT
+$TS_HELPER_SCRIPT -e --append -c "exit 42" $TS_OUTPUT </dev/null >/dev/null 2>&1
+echo $? >> $TS_OUTPUT
+$TS_HELPER_SCRIPT --return --append -c "exit 127" $TS_OUTPUT </dev/null >/dev/null 2>&1
+echo $? >> $TS_OUTPUT
+ts_finalize_subtest
+
+ts_finalize