svn commit: r283848 - stable/10/contrib/atf/atf-sh

Garrett Cooper ngie at FreeBSD.org
Sun May 31 22:44:15 UTC 2015


Author: ngie
Date: Sun May 31 22:44:14 2015
New Revision: 283848
URL: https://svnweb.freebsd.org/changeset/base/283848

Log:
  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 at 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.

Modified:
  stable/10/contrib/atf/atf-sh/atf_check_test.sh
  stable/10/contrib/atf/atf-sh/misc_helpers.sh
Directory Properties:
  stable/10/   (props changed)

Modified: stable/10/contrib/atf/atf-sh/atf_check_test.sh
==============================================================================
--- stable/10/contrib/atf/atf-sh/atf_check_test.sh	Sun May 31 22:41:22 2015	(r283847)
+++ stable/10/contrib/atf/atf-sh/atf_check_test.sh	Sun May 31 22:44:14 2015	(r283848)
@@ -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

Modified: stable/10/contrib/atf/atf-sh/misc_helpers.sh
==============================================================================
--- stable/10/contrib/atf/atf-sh/misc_helpers.sh	Sun May 31 22:41:22 2015	(r283847)
+++ stable/10/contrib/atf/atf-sh/misc_helpers.sh	Sun May 31 22:44:14 2015	(r283848)
@@ -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


More information about the svn-src-all mailing list