diff options
author | ngie <ngie@FreeBSD.org> | 2015-05-31 22:44:14 +0000 |
---|---|---|
committer | ngie <ngie@FreeBSD.org> | 2015-05-31 22:44:14 +0000 |
commit | 8017091a95eef37588cc8639f5ea20045e752d79 (patch) | |
tree | 41e1ee9fc1986ba878e147a09bbe3234bbd95626 | |
parent | b7ca7c8282c56a3fc1bb94b39fbe4a1ebe015e11 (diff) | |
download | FreeBSD-src-8017091a95eef37588cc8639f5ea20045e752d79.zip FreeBSD-src-8017091a95eef37588cc8639f5ea20045e752d79.tar.gz |
MFC r283170:
Import proposed fix from upstream for
atf-sh/atf_check_test:flush_stdout_on_timeout
Many thanks for jmmv for the fix!
PR: 197060
Original commit message:
From 0e546407567ea858e261e72f75c5ed61e07d0ddf Mon Sep 17 00:00:00 2001
From: Julio Merino <jmmv@google.com>
Date: Tue, 17 Feb 2015 18:10:11 -0500
Subject: [PATCH] Fix atf-sh/atf_check_test:flush_stdout_on_death
The test atf-sh/atf_check_test:flush_stdout_on_timeout was flaky as it
was playing solely with time. Fix this by making the test more robust
and rename it while we are at it: there is nothing left about "timeouts"
in this test, considering that ATF itself does not enforce deadlines
any longer.
Fixes FreeBSD PR 197060.
-rw-r--r-- | contrib/atf/atf-sh/atf_check_test.sh | 20 | ||||
-rw-r--r-- | contrib/atf/atf-sh/misc_helpers.sh | 16 |
2 files changed, 22 insertions, 14 deletions
diff --git a/contrib/atf/atf-sh/atf_check_test.sh b/contrib/atf/atf-sh/atf_check_test.sh index 163e905..9e3cfb9 100644 --- a/contrib/atf/atf-sh/atf_check_test.sh +++ b/contrib/atf/atf-sh/atf_check_test.sh @@ -164,18 +164,22 @@ equal_body() grep '^failed: \${x} != \${y} (a != b)$' resfile } -atf_test_case flush_stdout_on_timeout -flush_stdout_on_timeout_body() +atf_test_case flush_stdout_on_death +flush_stdout_on_death_body() { - "$(atf_get_srcdir)/misc_helpers" -s "$(atf_get_srcdir)" atf_check_timeout \ - >out 2>err & + CONTROL_FILE="$(pwd)/done" "$(atf_get_srcdir)/misc_helpers" \ + -s "$(atf_get_srcdir)" atf_check_flush_stdout >out 2>err & pid="${!}" - sleep 1 - kill "${pid}" + while [ ! -f ./done ]; do + echo "Still waiting for helper to create control file" + ls + sleep 1 + done + kill -9 "${pid}" grep 'Executing command.*true' out \ || atf_fail 'First command not in output' - grep 'Executing command.*sleep 42' out \ + grep 'Executing command.*false' out \ || atf_fail 'Second command not in output' } @@ -187,7 +191,7 @@ atf_init_test_cases() atf_add_test_case null_stdout atf_add_test_case null_stderr atf_add_test_case equal - atf_add_test_case flush_stdout_on_timeout + atf_add_test_case flush_stdout_on_death } # vim: syntax=sh:expandtab:shiftwidth=4:softtabstop=4 diff --git a/contrib/atf/atf-sh/misc_helpers.sh b/contrib/atf/atf-sh/misc_helpers.sh index 62d6580..ca0f465 100644 --- a/contrib/atf/atf-sh/misc_helpers.sh +++ b/contrib/atf/atf-sh/misc_helpers.sh @@ -139,16 +139,20 @@ atf_check_equal_eval_fail_body() atf_check_equal '${x}' '${y}' } -atf_test_case atf_check_timeout -atf_check_timeout_head() +atf_test_case atf_check_flush_stdout +atf_check_flush_stdout_head() { atf_set "descr" "Helper test case for the t_atf_check test program" - atf_set "timeout" 1 + atf_set "timeout" "30" } -atf_check_timeout_body() +atf_check_flush_stdout_body() { atf_check true - atf_check sleep 42 + atf_check -s exit:1 false + touch "${CONTROL_FILE:-done}" + while :; do + sleep 1 + done } # ------------------------------------------------------------------------- @@ -281,7 +285,7 @@ atf_init_test_cases() atf_add_test_case atf_check_equal_fail atf_add_test_case atf_check_equal_eval_ok atf_add_test_case atf_check_equal_eval_fail - atf_add_test_case atf_check_timeout + atf_add_test_case atf_check_flush_stdout # Add helper tests for t_config. atf_add_test_case config_get |