aboutsummaryrefslogtreecommitdiff
path: root/contrib/atf
diff options
context:
space:
mode:
authorEnji Cooper <ngie@FreeBSD.org>2015-05-21 05:06:08 +0000
committerEnji Cooper <ngie@FreeBSD.org>2015-05-21 05:06:08 +0000
commitda3067c13825cb883296c5e4637ae22c9e2f2a1d (patch)
tree957958b3acbf5bbd13fdd61d218de14d0fa7a643 /contrib/atf
parent2b42dcf7ad8d6b776622e009be5b328639531748 (diff)
parent9b124abcbb2224853e26bab4193764dd77eef4c3 (diff)
downloadsrc-da3067c13825cb883296c5e4637ae22c9e2f2a1d.tar.gz
src-da3067c13825cb883296c5e4637ae22c9e2f2a1d.zip
Import proposed fix from upstream for
atf-sh/atf_check_test:flush_stdout_on_timeout Many thanks for jmmv for the fix! MFC after: 1 week 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.
Notes
Notes: svn path=/head/; revision=283170
Diffstat (limited to 'contrib/atf')
-rw-r--r--contrib/atf/atf-sh/atf_check_test.sh20
-rw-r--r--contrib/atf/atf-sh/misc_helpers.sh16
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 163e905f1ab0..9e3cfb955f68 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 62d658053640..ca0f4650d99b 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