Skip site navigation (1)Skip section navigation (2)
Date:      Thu, 21 May 2015 05:06:09 +0000 (UTC)
From:      Garrett Cooper <ngie@FreeBSD.org>
To:        src-committers@freebsd.org, svn-src-all@freebsd.org, svn-src-head@freebsd.org
Subject:   svn commit: r283170 - head/contrib/atf/atf-sh
Message-ID:  <201505210506.t4L569gM044636@svn.freebsd.org>

next in thread | raw e-mail | index | archive | help
Author: ngie
Date: Thu May 21 05:06:08 2015
New Revision: 283170
URL: https://svnweb.freebsd.org/changeset/base/283170

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

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

Modified: head/contrib/atf/atf-sh/atf_check_test.sh
==============================================================================
--- head/contrib/atf/atf-sh/atf_check_test.sh	Thu May 21 05:02:08 2015	(r283169)
+++ head/contrib/atf/atf-sh/atf_check_test.sh	Thu May 21 05:06:08 2015	(r283170)
@@ -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: head/contrib/atf/atf-sh/misc_helpers.sh
==============================================================================
--- head/contrib/atf/atf-sh/misc_helpers.sh	Thu May 21 05:02:08 2015	(r283169)
+++ head/contrib/atf/atf-sh/misc_helpers.sh	Thu May 21 05:06:08 2015	(r283170)
@@ -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



Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?201505210506.t4L569gM044636>