diff options
author | Sami Kerola | 2015-05-24 19:14:58 +0200 |
---|---|---|
committer | Sami Kerola | 2015-06-06 15:36:38 +0200 |
commit | 6a40c65f81d393667bb7059be7d89eaf5cc99791 (patch) | |
tree | e7456e1463cc79f8aff14a200e30bad2710cde8e /term-utils/script.c | |
parent | tests: add script output buffering race check (diff) | |
download | kernel-qcow2-util-linux-6a40c65f81d393667bb7059be7d89eaf5cc99791.tar.gz kernel-qcow2-util-linux-6a40c65f81d393667bb7059be7d89eaf5cc99791.tar.xz kernel-qcow2-util-linux-6a40c65f81d393667bb7059be7d89eaf5cc99791.zip |
tests: check script options work as expected
Options --flush and --timing remain unchecked, as I do not have an idea
how to check them reliably.
Signed-off-by: Sami Kerola <kerolasa@iki.fi>
Diffstat (limited to 'term-utils/script.c')
-rw-r--r-- | term-utils/script.c | 21 |
1 files changed, 19 insertions, 2 deletions
diff --git a/term-utils/script.c b/term-utils/script.c index e0083f246..dd3b4b592 100644 --- a/term-utils/script.c +++ b/term-utils/script.c @@ -123,6 +123,23 @@ sigset_t block_mask, unblock_mask; 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; @@ -446,7 +463,7 @@ dooutput(void) { 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); } @@ -588,7 +605,7 @@ done(void) { 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); } |