From dc2613b0af11a8cf97232d55c322d40eda35c224 Mon Sep 17 00:00:00 2001
From: "Arnold D. Robbins" <arnold@skeeve.com>
Date: Thu, 18 Nov 2021 21:04:25 +0200
Subject: [PATCH] Restore removed test in test/iolint.awk.

---
 test/iolint.awk | 19 ++++++++++++-------
 test/iolint.ok  |  5 ++++-
 2 files changed, 16 insertions(+), 8 deletions(-)

diff --git a/test/iolint.awk b/test/iolint.awk
index 58fd746..042f743 100644
--- a/test/iolint.awk
+++ b/test/iolint.awk
@@ -55,15 +55,20 @@ BEGIN {
 	print close("cat")
 	fflush()
 
-	# 11/2021: Disable this test since it's a race condition
-	# and fails intermittently on some systems.
+	# 11/2021: Use a nice trick to avoid race conditions in
+	# child processes. Thanks to Miguel Pineiro Jr. <mpj@pineiro.cc>.
 	#
 	# `%.*s' used for input pipe and output pipe
-	# "echo hello" | getline junk
-	# print "hello" | "echo hello"
-	# print close("echo hello")
-	# print close("echo hello")
-	# fflush()
+	pipecmd = "eval $CMD_TO_RUN"
+
+	ENVIRON["CMD_TO_RUN"] = "echo hello"
+	pipecmd | getline junk 
+	ENVIRON["CMD_TO_RUN"] = "read junk"
+	print "hello" | pipecmd
+
+	print close(pipecmd)
+	print close(pipecmd)
+	fflush()
 
 	# `%.*s' used for output file and output pipe"
 	BINMODE = 2
diff --git a/test/iolint.ok b/test/iolint.ok
index 620a70f..7a165aa 100644
--- a/test/iolint.ok
+++ b/test/iolint.ok
@@ -23,7 +23,10 @@ gawk: iolint.awk:53: warning: `cat' used for output file and output pipe
 0
 hello
 0
-gawk: iolint.awk:71: warning: `cksum' used for output file and output pipe
+gawk: iolint.awk:67: warning: `eval $CMD_TO_RUN' used for input pipe and output pipe
+0
+0
+gawk: iolint.awk:76: warning: `cksum' used for output file and output pipe
 3015617425 6
 0
 0
-- 
1.8.3.1

